/*
* Copyright (C) The MX4J Contributors.
* All rights reserved.
*
* This software is distributed under the terms of the MX4J License version 1.0.
* See the terms of the MX4J License in the documentation provided with this software.
*/
package test.mx4j.timer;
import java.lang.reflect.Field;
import mx4j.timer.TimeQueue;
import mx4j.timer.TimeTask;
import test.MX4JTestCase;
/**
* @version $Revision: 1.3 $
*/
public class TimeQueueTest extends MX4JTestCase
{
public TimeQueueTest(String s)
{
super(s);
}
public void testStop() throws Exception
{
TimeQueue queue = new TimeQueue();
queue.start();
// Wait a while to let the thread start
sleep(1000);
final int sleep = 5000;
// Post a task to simulate work
TimeTask task = new TimeTask()
{
public void run()
{
sleep(sleep);
}
};
queue.schedule(task);
// Wait for the task to be executed
sleep(1000);
// Stop the queue. This will cause the task above to interrupt,
// but we set the flag again as would be in a normal task
queue.stop();
// Wait until the task is finished; the TimeQueue should have cleaned up
sleep(sleep);
// I want to be sure the thread has really shutdown
Field field = queue.getClass().getDeclaredField("thread");
field.setAccessible(true);
Thread thread = (Thread)field.get(queue);
if (thread != null && thread.isAlive()) fail("TimeQueue not stopped");
}
}