--- jsr166/src/test/tck/CompletableFutureTest.java 2016/11/26 20:32:24 1.181 +++ jsr166/src/test/tck/CompletableFutureTest.java 2017/07/03 21:18:37 1.187 @@ -64,7 +64,7 @@ public class CompletableFutureTest exten assertNull(f.getNow(null)); } catch (Throwable fail) { threadUnexpectedException(fail); } try { - f.get(0L, SECONDS); + f.get(randomExpiredTimeout(), randomTimeUnit()); shouldThrow(); } catch (TimeoutException success) {} @@ -76,11 +76,7 @@ public class CompletableFutureTest exten try { assertEquals(value, f.join()); - } catch (Throwable fail) { threadUnexpectedException(fail); } - try { assertEquals(value, f.getNow(null)); - } catch (Throwable fail) { threadUnexpectedException(fail); } - try { assertEquals(value, f.get()); } catch (Throwable fail) { threadUnexpectedException(fail); } assertTrue(f.isDone()); @@ -93,10 +89,10 @@ public class CompletableFutureTest exten * Returns the "raw" internal exceptional completion of f, * without any additional wrapping with CompletionException. */ - Throwable exceptionalCompletion(CompletableFuture f) { - // handle (and whenComplete) can distinguish between "direct" - // and "wrapped" exceptional completion - return f.handle((U u, Throwable t) -> t).join(); + Throwable exceptionalCompletion(CompletableFuture f) { + // handle (and whenComplete and exceptionally) can distinguish + // between "direct" and "wrapped" exceptional completion + return f.handle((u, t) -> t).join(); } void checkCompletedExceptionally(CompletableFuture f, @@ -1242,6 +1238,7 @@ public class CompletableFutureTest exten r.assertInvoked(); }} + @SuppressWarnings("FutureReturnValueIgnored") public void testRunAsync_rejectingExecutor() { CountingRejectingExecutor e = new CountingRejectingExecutor(); try { @@ -1288,6 +1285,7 @@ public class CompletableFutureTest exten r.assertInvoked(); }} + @SuppressWarnings("FutureReturnValueIgnored") public void testSupplyAsync_rejectingExecutor() { CountingRejectingExecutor e = new CountingRejectingExecutor(); try { @@ -2562,28 +2560,28 @@ public class CompletableFutureTest exten // unspecified behavior - both source completions available try { - assertEquals(null, h0.join()); + assertNull(h0.join()); rs[0].assertValue(v1); } catch (CompletionException ok) { checkCompletedWithWrappedException(h0, ex); rs[0].assertNotInvoked(); } try { - assertEquals(null, h1.join()); + assertNull(h1.join()); rs[1].assertValue(v1); } catch (CompletionException ok) { checkCompletedWithWrappedException(h1, ex); rs[1].assertNotInvoked(); } try { - assertEquals(null, h2.join()); + assertNull(h2.join()); rs[2].assertValue(v1); } catch (CompletionException ok) { checkCompletedWithWrappedException(h2, ex); rs[2].assertNotInvoked(); } try { - assertEquals(null, h3.join()); + assertNull(h3.join()); rs[3].assertValue(v1); } catch (CompletionException ok) { checkCompletedWithWrappedException(h3, ex); @@ -2822,28 +2820,28 @@ public class CompletableFutureTest exten // unspecified behavior - both source completions available try { - assertEquals(null, h0.join()); + assertNull(h0.join()); rs[0].assertInvoked(); } catch (CompletionException ok) { checkCompletedWithWrappedException(h0, ex); rs[0].assertNotInvoked(); } try { - assertEquals(null, h1.join()); + assertNull(h1.join()); rs[1].assertInvoked(); } catch (CompletionException ok) { checkCompletedWithWrappedException(h1, ex); rs[1].assertNotInvoked(); } try { - assertEquals(null, h2.join()); + assertNull(h2.join()); rs[2].assertInvoked(); } catch (CompletionException ok) { checkCompletedWithWrappedException(h2, ex); rs[2].assertNotInvoked(); } try { - assertEquals(null, h3.join()); + assertNull(h3.join()); rs[3].assertInvoked(); } catch (CompletionException ok) { checkCompletedWithWrappedException(h3, ex); @@ -3238,6 +3236,7 @@ public class CompletableFutureTest exten /** * Completion methods throw NullPointerException with null arguments */ + @SuppressWarnings("FutureReturnValueIgnored") public void testNPE() { CompletableFuture f = new CompletableFuture<>(); CompletableFuture g = new CompletableFuture<>(); @@ -3532,7 +3531,7 @@ public class CompletableFutureTest exten */ public void testCompletedStage() { AtomicInteger x = new AtomicInteger(0); - AtomicReference r = new AtomicReference(); + AtomicReference r = new AtomicReference<>(); CompletionStage f = CompletableFuture.completedStage(1); f.whenComplete((v, e) -> {if (e != null) r.set(e); else x.set(v);}); assertEquals(x.get(), 1); @@ -3634,7 +3633,7 @@ public class CompletableFutureTest exten CompletableFuture f = new CompletableFuture<>(); CompletionStage g = f.minimalCompletionStage(); AtomicInteger x = new AtomicInteger(0); - AtomicReference r = new AtomicReference(); + AtomicReference r = new AtomicReference<>(); checkIncomplete(f); g.whenComplete((v, e) -> {if (e != null) r.set(e); else x.set(v);}); f.complete(1); @@ -3651,7 +3650,7 @@ public class CompletableFutureTest exten CompletableFuture f = new CompletableFuture<>(); CompletionStage g = f.minimalCompletionStage(); AtomicInteger x = new AtomicInteger(0); - AtomicReference r = new AtomicReference(); + AtomicReference r = new AtomicReference<>(); g.whenComplete((v, e) -> {if (e != null) r.set(e); else x.set(v);}); checkIncomplete(f); CFException ex = new CFException(); @@ -3669,7 +3668,7 @@ public class CompletableFutureTest exten CFException ex = new CFException(); CompletionStage f = CompletableFuture.failedStage(ex); AtomicInteger x = new AtomicInteger(0); - AtomicReference r = new AtomicReference(); + AtomicReference r = new AtomicReference<>(); f.whenComplete((v, e) -> {if (e != null) r.set(e); else x.set(v);}); assertEquals(x.get(), 0); assertEquals(r.get(), ex); @@ -4299,6 +4298,7 @@ public class CompletableFutureTest exten } /** Test long recursive chains of CompletableFutures with cascading completions */ + @SuppressWarnings("FutureReturnValueIgnored") public void testRecursiveChains() throws Throwable { for (ExecutionMode m : ExecutionMode.values()) for (boolean addDeadEnds : new boolean[] { true, false }) @@ -4323,6 +4323,7 @@ public class CompletableFutureTest exten * A single CompletableFuture with many dependents. * A demo of scalability - runtime is O(n). */ + @SuppressWarnings("FutureReturnValueIgnored") public void testManyDependents() throws Throwable { final int n = expensiveTests ? 1_000_000 : 10; final CompletableFuture head = new CompletableFuture<>(); @@ -4352,6 +4353,7 @@ public class CompletableFutureTest exten } /** ant -Dvmoptions=-Xmx8m -Djsr166.expensiveTests=true -Djsr166.tckTestClass=CompletableFutureTest tck */ + @SuppressWarnings("FutureReturnValueIgnored") public void testCoCompletionGarbageRetention() throws Throwable { final int n = expensiveTests ? 1_000_000 : 10; final CompletableFuture incomplete = new CompletableFuture<>();