--- jsr166/src/test/tck/CountDownLatchTest.java 2019/08/05 14:42:54 1.27 +++ jsr166/src/test/tck/CountDownLatchTest.java 2019/08/11 22:29:26 1.28 @@ -9,6 +9,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ThreadLocalRandom; import junit.framework.Test; import junit.framework.TestSuite; @@ -72,7 +73,7 @@ public class CountDownLatchTest extends assertEquals(2, l.getCount()); l.countDown(); assertEquals(1, l.getCount()); - assertThreadBlocks(t, Thread.State.WAITING); + if (randomBoolean()) assertThreadBlocks(t, Thread.State.WAITING); l.countDown(); assertEquals(0, l.getCount()); awaitTermination(t); @@ -97,7 +98,7 @@ public class CountDownLatchTest extends assertEquals(2, l.getCount()); l.countDown(); assertEquals(1, l.getCount()); - assertThreadBlocks(t, Thread.State.TIMED_WAITING); + if (randomBoolean()) assertThreadBlocks(t, Thread.State.TIMED_WAITING); l.countDown(); assertEquals(0, l.getCount()); awaitTermination(t); @@ -129,7 +130,7 @@ public class CountDownLatchTest extends }}); await(pleaseInterrupt); - assertThreadBlocks(t, Thread.State.WAITING); + if (randomBoolean()) assertThreadBlocks(t, Thread.State.WAITING); t.interrupt(); awaitTermination(t); } @@ -138,13 +139,16 @@ public class CountDownLatchTest extends * timed await throws InterruptedException if interrupted before counted down */ public void testTimedAwait_Interruptible() { - final CountDownLatch l = new CountDownLatch(1); + final int initialCount = ThreadLocalRandom.current().nextInt(1, 3); + final CountDownLatch l = new CountDownLatch(initialCount); final CountDownLatch pleaseInterrupt = new CountDownLatch(1); Thread t = newStartedThread(new CheckedRunnable() { public void realRun() throws InterruptedException { + long startTime = System.nanoTime(); + Thread.currentThread().interrupt(); try { - l.await(LONG_DELAY_MS, MILLISECONDS); + l.await(randomTimeout(), randomTimeUnit()); shouldThrow(); } catch (InterruptedException success) {} assertFalse(Thread.interrupted()); @@ -156,11 +160,12 @@ public class CountDownLatchTest extends } catch (InterruptedException success) {} assertFalse(Thread.interrupted()); - assertEquals(1, l.getCount()); + assertEquals(initialCount, l.getCount()); + assertTrue(millisElapsedSince(startTime) < LONG_DELAY_MS); }}); await(pleaseInterrupt); - assertThreadBlocks(t, Thread.State.TIMED_WAITING); + if (randomBoolean()) assertThreadBlocks(t, Thread.State.TIMED_WAITING); t.interrupt(); awaitTermination(t); }