org.mule.tck.concurrency
Class TestingThread

java.lang.Object
  extended by java.lang.Thread
      extended by org.mule.tck.concurrency.TestingThread
All Implemented Interfaces:
Runnable

public abstract class TestingThread
extends Thread
implements Runnable

This class is very useful for test cases which need to make assertions concurrently in different threads. Usage is as follows: public void testConcurrency() { TestingThread thread = new TestingThread() { protected void doRun() throws Throwable { // Wait a few seconds for somethingElse to begin Thread.sleep(3000); assertTrue(somethingElse.isRunning()); assertEquals(3, somethingElse.counter); } }; thread.start(); // This will block the main test thread runSomething("big long task"); assertEquals("peachy", something.getResult()); assertFalse(something.isOutOfControl()); // Verify that no exceptions occurred meanwhile in the TestingThread thread.await(); if (thread.getException() != null) { fail(thread.getException().getMessage()); } } Both the TestingThread and the main thread will run in parallel, therefore assertions can be made on "somethingElse" while the call to runSomething() is blocking the main thread of the TestCase.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
static long AWAIT_TIMEOUT
           
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
TestingThread()
           
 
Method Summary
 void await()
          Block until the thread completes its doRun() method.
protected abstract  void doRun()
           
 Throwable getException()
           
 void run()
          Executes the doRun() method and stores any exception which occurred to be returned at a later time.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

AWAIT_TIMEOUT

public static final long AWAIT_TIMEOUT
See Also:
Constant Field Values
Constructor Detail

TestingThread

public TestingThread()
Method Detail

run

public final void run()
Executes the doRun() method and stores any exception which occurred to be returned at a later time.

Specified by:
run in interface Runnable
Overrides:
run in class Thread

doRun

protected abstract void doRun()
                       throws Throwable
Throws:
Throwable

await

public void await()
           throws InterruptedException
Block until the thread completes its doRun() method.

Throws:
InterruptedException

getException

public Throwable getException()
Returns:
any exception thrown by the doRun() method, including failed assertions


Copyright © 2003-2009 MuleSource, Inc.. All Rights Reserved.