--- jsr166/src/test/tck/JSR166TestCase.java 2010/09/20 20:42:37 1.55 +++ jsr166/src/test/tck/JSR166TestCase.java 2010/10/06 02:11:57 1.58 @@ -105,9 +105,8 @@ public class JSR166TestCase extends Test Policy.setPolicy(permissivePolicy()); System.setSecurityManager(new SecurityManager()); } - int iters = 1; - if (args.length > 0) - iters = Integer.parseInt(args[0]); + int iters = (args.length == 0) ? 1 : Integer.parseInt(args[0]); + Test s = suite(); for (int i = 0; i < iters; ++i) { junit.textui.TestRunner.run(s); @@ -123,70 +122,70 @@ public class JSR166TestCase extends Test public static Test suite() { TestSuite suite = new TestSuite("JSR166 Unit Tests"); - suite.addTest(new TestSuite(ForkJoinPoolTest.class)); - suite.addTest(new TestSuite(ForkJoinTaskTest.class)); - suite.addTest(new TestSuite(RecursiveActionTest.class)); - suite.addTest(new TestSuite(RecursiveTaskTest.class)); - suite.addTest(new TestSuite(LinkedTransferQueueTest.class)); - suite.addTest(new TestSuite(PhaserTest.class)); - suite.addTest(new TestSuite(ThreadLocalRandomTest.class)); - suite.addTest(new TestSuite(AbstractExecutorServiceTest.class)); - suite.addTest(new TestSuite(AbstractQueueTest.class)); - suite.addTest(new TestSuite(AbstractQueuedSynchronizerTest.class)); - suite.addTest(new TestSuite(AbstractQueuedLongSynchronizerTest.class)); - suite.addTest(new TestSuite(ArrayBlockingQueueTest.class)); - suite.addTest(new TestSuite(ArrayDequeTest.class)); - suite.addTest(new TestSuite(AtomicBooleanTest.class)); - suite.addTest(new TestSuite(AtomicIntegerArrayTest.class)); - suite.addTest(new TestSuite(AtomicIntegerFieldUpdaterTest.class)); - suite.addTest(new TestSuite(AtomicIntegerTest.class)); - suite.addTest(new TestSuite(AtomicLongArrayTest.class)); - suite.addTest(new TestSuite(AtomicLongFieldUpdaterTest.class)); - suite.addTest(new TestSuite(AtomicLongTest.class)); - suite.addTest(new TestSuite(AtomicMarkableReferenceTest.class)); - suite.addTest(new TestSuite(AtomicReferenceArrayTest.class)); - suite.addTest(new TestSuite(AtomicReferenceFieldUpdaterTest.class)); - suite.addTest(new TestSuite(AtomicReferenceTest.class)); - suite.addTest(new TestSuite(AtomicStampedReferenceTest.class)); - suite.addTest(new TestSuite(ConcurrentHashMapTest.class)); - suite.addTest(new TestSuite(ConcurrentLinkedDequeTest.class)); - suite.addTest(new TestSuite(ConcurrentLinkedQueueTest.class)); - suite.addTest(new TestSuite(ConcurrentSkipListMapTest.class)); - suite.addTest(new TestSuite(ConcurrentSkipListSubMapTest.class)); - suite.addTest(new TestSuite(ConcurrentSkipListSetTest.class)); - suite.addTest(new TestSuite(ConcurrentSkipListSubSetTest.class)); - suite.addTest(new TestSuite(CopyOnWriteArrayListTest.class)); - suite.addTest(new TestSuite(CopyOnWriteArraySetTest.class)); - suite.addTest(new TestSuite(CountDownLatchTest.class)); - suite.addTest(new TestSuite(CyclicBarrierTest.class)); - suite.addTest(new TestSuite(DelayQueueTest.class)); - suite.addTest(new TestSuite(EntryTest.class)); - suite.addTest(new TestSuite(ExchangerTest.class)); - suite.addTest(new TestSuite(ExecutorsTest.class)); - suite.addTest(new TestSuite(ExecutorCompletionServiceTest.class)); - suite.addTest(new TestSuite(FutureTaskTest.class)); - suite.addTest(new TestSuite(LinkedBlockingDequeTest.class)); - suite.addTest(new TestSuite(LinkedBlockingQueueTest.class)); - suite.addTest(new TestSuite(LinkedListTest.class)); - suite.addTest(new TestSuite(LockSupportTest.class)); - suite.addTest(new TestSuite(PriorityBlockingQueueTest.class)); - suite.addTest(new TestSuite(PriorityQueueTest.class)); - suite.addTest(new TestSuite(ReentrantLockTest.class)); - suite.addTest(new TestSuite(ReentrantReadWriteLockTest.class)); - suite.addTest(new TestSuite(ScheduledExecutorTest.class)); - suite.addTest(new TestSuite(ScheduledExecutorSubclassTest.class)); - suite.addTest(new TestSuite(SemaphoreTest.class)); - suite.addTest(new TestSuite(SynchronousQueueTest.class)); - suite.addTest(new TestSuite(SystemTest.class)); - suite.addTest(new TestSuite(ThreadLocalTest.class)); - suite.addTest(new TestSuite(ThreadPoolExecutorTest.class)); - suite.addTest(new TestSuite(ThreadPoolExecutorSubclassTest.class)); - suite.addTest(new TestSuite(ThreadTest.class)); - suite.addTest(new TestSuite(TimeUnitTest.class)); - suite.addTest(new TestSuite(TreeMapTest.class)); - suite.addTest(new TestSuite(TreeSetTest.class)); - suite.addTest(new TestSuite(TreeSubMapTest.class)); - suite.addTest(new TestSuite(TreeSubSetTest.class)); + suite.addTest(ForkJoinPoolTest.suite()); + suite.addTest(ForkJoinTaskTest.suite()); + suite.addTest(RecursiveActionTest.suite()); + suite.addTest(RecursiveTaskTest.suite()); + suite.addTest(LinkedTransferQueueTest.suite()); + suite.addTest(PhaserTest.suite()); + suite.addTest(ThreadLocalRandomTest.suite()); + suite.addTest(AbstractExecutorServiceTest.suite()); + suite.addTest(AbstractQueueTest.suite()); + suite.addTest(AbstractQueuedSynchronizerTest.suite()); + suite.addTest(AbstractQueuedLongSynchronizerTest.suite()); + suite.addTest(ArrayBlockingQueueTest.suite()); + suite.addTest(ArrayDequeTest.suite()); + suite.addTest(AtomicBooleanTest.suite()); + suite.addTest(AtomicIntegerArrayTest.suite()); + suite.addTest(AtomicIntegerFieldUpdaterTest.suite()); + suite.addTest(AtomicIntegerTest.suite()); + suite.addTest(AtomicLongArrayTest.suite()); + suite.addTest(AtomicLongFieldUpdaterTest.suite()); + suite.addTest(AtomicLongTest.suite()); + suite.addTest(AtomicMarkableReferenceTest.suite()); + suite.addTest(AtomicReferenceArrayTest.suite()); + suite.addTest(AtomicReferenceFieldUpdaterTest.suite()); + suite.addTest(AtomicReferenceTest.suite()); + suite.addTest(AtomicStampedReferenceTest.suite()); + suite.addTest(ConcurrentHashMapTest.suite()); + suite.addTest(ConcurrentLinkedDequeTest.suite()); + suite.addTest(ConcurrentLinkedQueueTest.suite()); + suite.addTest(ConcurrentSkipListMapTest.suite()); + suite.addTest(ConcurrentSkipListSubMapTest.suite()); + suite.addTest(ConcurrentSkipListSetTest.suite()); + suite.addTest(ConcurrentSkipListSubSetTest.suite()); + suite.addTest(CopyOnWriteArrayListTest.suite()); + suite.addTest(CopyOnWriteArraySetTest.suite()); + suite.addTest(CountDownLatchTest.suite()); + suite.addTest(CyclicBarrierTest.suite()); + suite.addTest(DelayQueueTest.suite()); + suite.addTest(EntryTest.suite()); + suite.addTest(ExchangerTest.suite()); + suite.addTest(ExecutorsTest.suite()); + suite.addTest(ExecutorCompletionServiceTest.suite()); + suite.addTest(FutureTaskTest.suite()); + suite.addTest(LinkedBlockingDequeTest.suite()); + suite.addTest(LinkedBlockingQueueTest.suite()); + suite.addTest(LinkedListTest.suite()); + suite.addTest(LockSupportTest.suite()); + suite.addTest(PriorityBlockingQueueTest.suite()); + suite.addTest(PriorityQueueTest.suite()); + suite.addTest(ReentrantLockTest.suite()); + suite.addTest(ReentrantReadWriteLockTest.suite()); + suite.addTest(ScheduledExecutorTest.suite()); + suite.addTest(ScheduledExecutorSubclassTest.suite()); + suite.addTest(SemaphoreTest.suite()); + suite.addTest(SynchronousQueueTest.suite()); + suite.addTest(SystemTest.suite()); + suite.addTest(ThreadLocalTest.suite()); + suite.addTest(ThreadPoolExecutorTest.suite()); + suite.addTest(ThreadPoolExecutorSubclassTest.suite()); + suite.addTest(ThreadTest.suite()); + suite.addTest(TimeUnitTest.suite()); + suite.addTest(TreeMapTest.suite()); + suite.addTest(TreeSetTest.suite()); + suite.addTest(TreeSubMapTest.suite()); + suite.addTest(TreeSubSetTest.suite()); return suite; } @@ -251,20 +250,24 @@ public class JSR166TestCase extends Test throw (RuntimeException) t; else if (t instanceof Exception) throw (Exception) t; - else - throw new AssertionError(t); + else { + AssertionFailedError afe = + new AssertionFailedError(t.toString()); + afe.initCause(t); + throw afe; + } } } /** * Just like fail(reason), but additionally recording (using - * threadRecordFailure) any AssertionError thrown, so that the current - * testcase will fail. + * threadRecordFailure) any AssertionFailedError thrown, so that + * the current testcase will fail. */ public void threadFail(String reason) { try { fail(reason); - } catch (Throwable t) { + } catch (AssertionFailedError t) { threadRecordFailure(t); fail(reason); } @@ -272,13 +275,13 @@ public class JSR166TestCase extends Test /** * Just like assertTrue(b), but additionally recording (using - * threadRecordFailure) any AssertionError thrown, so that the current - * testcase will fail. + * threadRecordFailure) any AssertionFailedError thrown, so that + * the current testcase will fail. */ public void threadAssertTrue(boolean b) { try { assertTrue(b); - } catch (AssertionError t) { + } catch (AssertionFailedError t) { threadRecordFailure(t); throw t; } @@ -286,13 +289,13 @@ public class JSR166TestCase extends Test /** * Just like assertFalse(b), but additionally recording (using - * threadRecordFailure) any AssertionError thrown, so that the - * current testcase will fail. + * threadRecordFailure) any AssertionFailedError thrown, so that + * the current testcase will fail. */ public void threadAssertFalse(boolean b) { try { assertFalse(b); - } catch (AssertionError t) { + } catch (AssertionFailedError t) { threadRecordFailure(t); throw t; } @@ -300,13 +303,13 @@ public class JSR166TestCase extends Test /** * Just like assertNull(x), but additionally recording (using - * threadRecordFailure) any AssertionError thrown, so that the - * current testcase will fail. + * threadRecordFailure) any AssertionFailedError thrown, so that + * the current testcase will fail. */ public void threadAssertNull(Object x) { try { assertNull(x); - } catch (AssertionError t) { + } catch (AssertionFailedError t) { threadRecordFailure(t); throw t; } @@ -314,13 +317,13 @@ public class JSR166TestCase extends Test /** * Just like assertEquals(x, y), but additionally recording (using - * threadRecordFailure) any AssertionError thrown, so that the - * current testcase will fail. + * threadRecordFailure) any AssertionFailedError thrown, so that + * the current testcase will fail. */ public void threadAssertEquals(long x, long y) { try { assertEquals(x, y); - } catch (AssertionError t) { + } catch (AssertionFailedError t) { threadRecordFailure(t); throw t; } @@ -328,27 +331,29 @@ public class JSR166TestCase extends Test /** * Just like assertEquals(x, y), but additionally recording (using - * threadRecordFailure) any AssertionError thrown, so that the - * current testcase will fail. + * threadRecordFailure) any AssertionFailedError thrown, so that + * the current testcase will fail. */ public void threadAssertEquals(Object x, Object y) { try { assertEquals(x, y); - } catch (AssertionError t) { + } catch (AssertionFailedError t) { threadRecordFailure(t); throw t; + } catch (Throwable t) { + threadUnexpectedException(t); } } /** * Just like assertSame(x, y), but additionally recording (using - * threadRecordFailure) any AssertionError thrown, so that the - * current testcase will fail. + * threadRecordFailure) any AssertionFailedError thrown, so that + * the current testcase will fail. */ public void threadAssertSame(Object x, Object y) { try { assertSame(x, y); - } catch (AssertionError t) { + } catch (AssertionFailedError t) { threadRecordFailure(t); throw t; } @@ -369,20 +374,22 @@ public class JSR166TestCase extends Test } /** - * Calls threadFail with message "Unexpected exception" + ex. + * Records the given exception using {@link #threadRecordFailure}, + * then rethrows the exception, wrapping it in an + * AssertionFailedError if necessary. */ public void threadUnexpectedException(Throwable t) { threadRecordFailure(t); t.printStackTrace(); - // Rethrow, wrapping in an AssertionError if necessary if (t instanceof RuntimeException) throw (RuntimeException) t; else if (t instanceof Error) throw (Error) t; else { - AssertionError ae = new AssertionError("unexpected exception: " + t); + AssertionFailedError afe = + new AssertionFailedError("unexpected exception: " + t); t.initCause(t); - throw ae; + throw afe; } } @@ -417,15 +424,6 @@ public class JSR166TestCase extends Test } /** - * Fails with message "Unexpected exception: " + ex. - */ - public void unexpectedException(Throwable ex) { - ex.printStackTrace(); - fail("Unexpected exception: " + ex); - } - - - /** * The number of elements to place in collections, arrays, etc. */ public static final int SIZE = 20; @@ -546,10 +544,11 @@ public class JSR166TestCase extends Test } /** - * Returns a new started Thread running the given runnable. + * Returns a new started daemon Thread running the given runnable. */ Thread newStartedThread(Runnable runnable) { Thread t = new Thread(runnable); + t.setDaemon(true); t.start(); return t; } @@ -717,12 +716,6 @@ public class JSR166TestCase extends Test } } - public class SmallInterruptedRunnable extends CheckedInterruptedRunnable { - protected void realRun() throws InterruptedException { - Thread.sleep(SMALL_DELAY_MS); - } - } - public class MediumRunnable extends CheckedRunnable { protected void realRun() throws Throwable { Thread.sleep(MEDIUM_DELAY_MS);