--- jsr166/src/test/tck/CompletableFutureTest.java 2014/06/18 02:37:38 1.94 +++ jsr166/src/test/tck/CompletableFutureTest.java 2014/06/25 15:32:10 1.95 @@ -57,9 +57,8 @@ public class CompletableFutureTest exten } void checkCompletedNormally(CompletableFuture f, T value) { - try { - assertEquals(value, f.get(LONG_DELAY_MS, MILLISECONDS)); - } catch (Throwable fail) { threadUnexpectedException(fail); } + checkTimedGet(f, value); + try { assertEquals(value, f.join()); } catch (Throwable fail) { threadUnexpectedException(fail); } @@ -76,12 +75,16 @@ public class CompletableFutureTest exten } void checkCompletedWithWrappedCFException(CompletableFuture f) { + long startTime = System.nanoTime(); + long timeoutMillis = LONG_DELAY_MS; try { - f.get(LONG_DELAY_MS, MILLISECONDS); + f.get(timeoutMillis, MILLISECONDS); shouldThrow(); } catch (ExecutionException success) { assertTrue(success.getCause() instanceof CFException); } catch (Throwable fail) { threadUnexpectedException(fail); } + assertTrue(millisElapsedSince(startTime) < timeoutMillis/2); + try { f.join(); shouldThrow(); @@ -107,12 +110,16 @@ public class CompletableFutureTest exten void checkCompletedExceptionallyWithRootCause(CompletableFuture f, Throwable ex) { + long startTime = System.nanoTime(); + long timeoutMillis = LONG_DELAY_MS; try { - f.get(LONG_DELAY_MS, MILLISECONDS); + f.get(timeoutMillis, MILLISECONDS); shouldThrow(); } catch (ExecutionException success) { assertSame(ex, success.getCause()); } catch (Throwable fail) { threadUnexpectedException(fail); } + assertTrue(millisElapsedSince(startTime) < timeoutMillis/2); + try { f.join(); shouldThrow(); @@ -158,11 +165,15 @@ public class CompletableFutureTest exten } void checkCancelled(CompletableFuture f) { + long startTime = System.nanoTime(); + long timeoutMillis = LONG_DELAY_MS; try { - f.get(LONG_DELAY_MS, MILLISECONDS); + f.get(timeoutMillis, MILLISECONDS); shouldThrow(); } catch (CancellationException success) { } catch (Throwable fail) { threadUnexpectedException(fail); } + assertTrue(millisElapsedSince(startTime) < timeoutMillis/2); + try { f.join(); shouldThrow(); @@ -183,12 +194,16 @@ public class CompletableFutureTest exten } void checkCompletedWithWrappedCancellationException(CompletableFuture f) { + long startTime = System.nanoTime(); + long timeoutMillis = LONG_DELAY_MS; try { - f.get(LONG_DELAY_MS, MILLISECONDS); + f.get(timeoutMillis, MILLISECONDS); shouldThrow(); } catch (ExecutionException success) { assertTrue(success.getCause() instanceof CancellationException); } catch (Throwable fail) { threadUnexpectedException(fail); } + assertTrue(millisElapsedSince(startTime) < timeoutMillis/2); + try { f.join(); shouldThrow(); @@ -574,7 +589,7 @@ public class CompletableFutureTest exten * execution modes without copy/pasting all the test methods. */ enum ExecutionMode { - DEFAULT { + SYNC { public void checkExecutionMode() { assertFalse(ThreadExecutor.startedCurrentThread()); assertNull(ForkJoinTask.getPool()); @@ -875,7 +890,7 @@ public class CompletableFutureTest exten if (!createIncomplete) f.completeExceptionally(ex); final CompletableFuture g = f.exceptionally ((Throwable t) -> { - ExecutionMode.DEFAULT.checkExecutionMode(); + ExecutionMode.SYNC.checkExecutionMode(); threadAssertSame(t, ex); a.getAndIncrement(); return v1; @@ -897,7 +912,7 @@ public class CompletableFutureTest exten if (!createIncomplete) f.completeExceptionally(ex1); final CompletableFuture g = f.exceptionally ((Throwable t) -> { - ExecutionMode.DEFAULT.checkExecutionMode(); + ExecutionMode.SYNC.checkExecutionMode(); threadAssertSame(t, ex1); a.getAndIncrement(); throw ex2; @@ -3148,7 +3163,7 @@ public class CompletableFutureTest exten Runnable[] throwingActions = { () -> CompletableFuture.supplyAsync(null), () -> CompletableFuture.supplyAsync(null, exec), - () -> CompletableFuture.supplyAsync(new IntegerSupplier(ExecutionMode.DEFAULT, 42), null), + () -> CompletableFuture.supplyAsync(new IntegerSupplier(ExecutionMode.SYNC, 42), null), () -> CompletableFuture.runAsync(null), () -> CompletableFuture.runAsync(null, exec),