public void testScheduleWorkExecutesAsynchronously() throws Exception
{
final Thread callerThread = Thread.currentThread();
MuleWorkManager wm = new MuleWorkManager(ThreadingProfile.DEFAULT_THREADING_PROFILE, null, 5000);
wm.setMuleContext(muleContext);
try
{
wm.start();
wm.scheduleWork(new Work()
{
public void release()
{
// no-op
}
public void run()
{
Thread calleeThread = Thread.currentThread();
assertFalse("WorkManager.scheduleWork() should have been executed in a different thread.",
callerThread.equals(calleeThread));
if (logger.isDebugEnabled())
{
logger.debug("WORK: " + Thread.currentThread());
}
}
});
if (logger.isDebugEnabled())
{
logger.debug("MAIN: " + Thread.currentThread());
}
}
finally
{
wm.dispose();
}
}