--- jsr166/src/test/tck/CompletableFutureTest.java 2014/06/02 21:32:24 1.54 +++ jsr166/src/test/tck/CompletableFutureTest.java 2014/06/02 22:48:50 1.57 @@ -284,10 +284,10 @@ public class CompletableFutureTest exten public void testGetNumberOfDependents() { CompletableFuture f = new CompletableFuture<>(); assertEquals(0, f.getNumberOfDependents()); - CompletableFuture g = f.thenRun(new Noop()); + CompletableFuture g = f.thenRun(new Noop(ExecutionMode.DEFAULT)); assertEquals(1, f.getNumberOfDependents()); assertEquals(0, g.getNumberOfDependents()); - CompletableFuture h = f.thenRun(new Noop()); + CompletableFuture h = f.thenRun(new Noop(ExecutionMode.DEFAULT)); assertEquals(2, f.getNumberOfDependents()); f.complete(1); checkCompletedNormally(g, null); @@ -349,76 +349,106 @@ public class CompletableFutureTest exten } } static final class IncFunction implements Function { + final ExecutionMode m; int invocationCount = 0; Integer value; + IncFunction(ExecutionMode m) { this.m = m; } public Integer apply(Integer x) { + m.checkExecutionMode(); invocationCount++; return value = inc(x); } } static final class SubtractAction implements BiConsumer { + final ExecutionMode m; int invocationCount = 0; Integer value; // Check this action was invoked exactly once when result is computed. + SubtractAction(ExecutionMode m) { this.m = m; } public void accept(Integer x, Integer y) { + m.checkExecutionMode(); invocationCount++; value = subtract(x, y); } } static final class SubtractFunction implements BiFunction { + final ExecutionMode m; int invocationCount = 0; Integer value; // Check this action was invoked exactly once when result is computed. + SubtractFunction(ExecutionMode m) { this.m = m; } public Integer apply(Integer x, Integer y) { + m.checkExecutionMode(); invocationCount++; return value = subtract(x, y); } } static final class Noop implements Runnable { + final ExecutionMode m; int invocationCount = 0; + Noop(ExecutionMode m) { this.m = m; } public void run() { + m.checkExecutionMode(); invocationCount++; } } static final class FailingSupplier implements Supplier { + final ExecutionMode m; int invocationCount = 0; + FailingSupplier(ExecutionMode m) { this.m = m; } public Integer get() { + m.checkExecutionMode(); invocationCount++; throw new CFException(); } } static final class FailingConsumer implements Consumer { + final ExecutionMode m; int invocationCount = 0; + FailingConsumer(ExecutionMode m) { this.m = m; } public void accept(Integer x) { + m.checkExecutionMode(); invocationCount++; throw new CFException(); } } static final class FailingBiConsumer implements BiConsumer { + final ExecutionMode m; int invocationCount = 0; + FailingBiConsumer(ExecutionMode m) { this.m = m; } public void accept(Integer x, Integer y) { + m.checkExecutionMode(); invocationCount++; throw new CFException(); } } static final class FailingFunction implements Function { + final ExecutionMode m; int invocationCount = 0; + FailingFunction(ExecutionMode m) { this.m = m; } public Integer apply(Integer x) { + m.checkExecutionMode(); invocationCount++; throw new CFException(); } } static final class FailingBiFunction implements BiFunction { + final ExecutionMode m; int invocationCount = 0; + FailingBiFunction(ExecutionMode m) { this.m = m; } public Integer apply(Integer x, Integer y) { + m.checkExecutionMode(); invocationCount++; throw new CFException(); } } static final class FailingRunnable implements Runnable { + final ExecutionMode m; int invocationCount = 0; + FailingRunnable(ExecutionMode m) { this.m = m; } public void run() { + m.checkExecutionMode(); invocationCount++; throw new CFException(); } @@ -426,8 +456,11 @@ public class CompletableFutureTest exten static final class CompletableFutureInc implements Function> { + final ExecutionMode m; int invocationCount = 0; + CompletableFutureInc(ExecutionMode m) { this.m = m; } public CompletableFuture apply(Integer x) { + m.checkExecutionMode(); invocationCount++; CompletableFuture f = new CompletableFuture<>(); f.complete(inc(x)); @@ -437,8 +470,11 @@ public class CompletableFutureTest exten static final class FailingCompletableFutureFunction implements Function> { + final ExecutionMode m; int invocationCount = 0; + FailingCompletableFutureFunction(ExecutionMode m) { this.m = m; } public CompletableFuture apply(Integer x) { + m.checkExecutionMode(); invocationCount++; throw new CFException(); } @@ -446,11 +482,15 @@ public class CompletableFutureTest exten // Used for explicit executor tests static final class ThreadExecutor implements Executor { - AtomicInteger count = new AtomicInteger(0); + final AtomicInteger count = new AtomicInteger(0); + static final ThreadGroup tg = new ThreadGroup("ThreadExecutor"); + static boolean startedCurrentThread() { + return Thread.currentThread().getThreadGroup() == tg; + } public void execute(Runnable r) { count.getAndIncrement(); - new Thread(r).start(); + new Thread(tg, r).start(); } } @@ -463,6 +503,9 @@ public class CompletableFutureTest exten public void checkExecutionMode() { assertNull(ForkJoinTask.getPool()); } + public CompletableFuture runAsync(Runnable a) { + throw new UnsupportedOperationException(); + } public CompletableFuture thenRun (CompletableFuture f, Runnable a) { return f.thenRun(a); @@ -531,6 +574,9 @@ public class CompletableFutureTest exten assertSame(ForkJoinPool.commonPool(), ForkJoinTask.getPool()); } + public CompletableFuture runAsync(Runnable a) { + return CompletableFuture.runAsync(a); + } public CompletableFuture thenRun (CompletableFuture f, Runnable a) { return f.thenRunAsync(a); @@ -596,7 +642,10 @@ public class CompletableFutureTest exten EXECUTOR { public void checkExecutionMode() { - //TODO + assertTrue(ThreadExecutor.startedCurrentThread()); + } + public CompletableFuture runAsync(Runnable a) { + return CompletableFuture.runAsync(a, new ThreadExecutor()); } public CompletableFuture thenRun (CompletableFuture f, Runnable a) { @@ -662,6 +711,7 @@ public class CompletableFutureTest exten }; public abstract void checkExecutionMode(); + public abstract CompletableFuture runAsync(Runnable a); public abstract CompletableFuture thenRun (CompletableFuture f, Runnable a); public abstract CompletableFuture thenAccept @@ -740,6 +790,7 @@ public class CompletableFutureTest exten if (!createIncomplete) f.completeExceptionally(ex); final CompletableFuture g = f.exceptionally ((Throwable t) -> { + ExecutionMode.DEFAULT.checkExecutionMode(); threadAssertSame(t, ex); a.getAndIncrement(); return v1; @@ -761,6 +812,7 @@ public class CompletableFutureTest exten if (!createIncomplete) f.completeExceptionally(ex1); final CompletableFuture g = f.exceptionally ((Throwable t) -> { + ExecutionMode.DEFAULT.checkExecutionMode(); threadAssertSame(t, ex1); a.getAndIncrement(); throw ex2; @@ -786,6 +838,7 @@ public class CompletableFutureTest exten final CompletableFuture g = m.handle (f, (Integer x, Throwable t) -> { + m.checkExecutionMode(); threadAssertSame(x, v1); threadAssertNull(t); a.getAndIncrement(); @@ -814,6 +867,7 @@ public class CompletableFutureTest exten final CompletableFuture g = m.handle (f, (Integer x, Throwable t) -> { + m.checkExecutionMode(); threadAssertNull(x); threadAssertSame(t, ex); a.getAndIncrement(); @@ -842,6 +896,7 @@ public class CompletableFutureTest exten final CompletableFuture g = m.handle (f, (Integer x, Throwable t) -> { + m.checkExecutionMode(); threadAssertNull(x); threadAssertTrue(t instanceof CancellationException); a.getAndIncrement(); @@ -869,6 +924,7 @@ public class CompletableFutureTest exten final CompletableFuture g = m.handle (f, (Integer x, Throwable t) -> { + m.checkExecutionMode(); threadAssertNull(x); threadAssertSame(ex1, t); a.getAndIncrement(); @@ -893,6 +949,7 @@ public class CompletableFutureTest exten final CompletableFuture g = m.handle (f, (Integer x, Throwable t) -> { + m.checkExecutionMode(); threadAssertSame(x, v1); threadAssertNull(t); a.getAndIncrement(); @@ -908,36 +965,35 @@ public class CompletableFutureTest exten /** * runAsync completes after running Runnable */ - public void testRunAsync() { - Noop r = new Noop(); - CompletableFuture f = CompletableFuture.runAsync(r); + public void testRunAsync_normalCompletion() { + ExecutionMode[] executionModes = { + ExecutionMode.ASYNC, + ExecutionMode.EXECUTOR, + }; + for (ExecutionMode m : executionModes) + { + final Noop r = new Noop(m); + final CompletableFuture f = m.runAsync(r); assertNull(f.join()); - assertEquals(1, r.invocationCount); checkCompletedNormally(f, null); - } - - /** - * runAsync with executor completes after running Runnable - */ - public void testRunAsync2() { - Noop r = new Noop(); - ThreadExecutor exec = new ThreadExecutor(); - CompletableFuture f = CompletableFuture.runAsync(r, exec); - assertNull(f.join()); assertEquals(1, r.invocationCount); - checkCompletedNormally(f, null); - assertEquals(1, exec.count.get()); - } + }} /** * failing runAsync completes exceptionally after running Runnable */ - public void testRunAsync3() { - FailingRunnable r = new FailingRunnable(); - CompletableFuture f = CompletableFuture.runAsync(r); + public void testRunAsync_exceptionalCompletion() { + ExecutionMode[] executionModes = { + ExecutionMode.ASYNC, + ExecutionMode.EXECUTOR, + }; + for (ExecutionMode m : executionModes) + { + final FailingRunnable r = new FailingRunnable(m); + final CompletableFuture f = m.runAsync(r); checkCompletedWithWrappedCFException(f); assertEquals(1, r.invocationCount); - } + }} /** * supplyAsync completes with result of supplier @@ -963,7 +1019,7 @@ public class CompletableFutureTest exten * Failing supplyAsync completes exceptionally */ public void testSupplyAsync3() { - FailingSupplier r = new FailingSupplier(); + FailingSupplier r = new FailingSupplier(ExecutionMode.ASYNC); CompletableFuture f = CompletableFuture.supplyAsync(r); checkCompletedWithWrappedCFException(f); assertEquals(1, r.invocationCount); @@ -980,7 +1036,7 @@ public class CompletableFutureTest exten for (Integer v1 : new Integer[] { 1, null }) { final CompletableFuture f = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); if (!createIncomplete) f.complete(v1); final CompletableFuture g = m.thenRun(f, r); if (createIncomplete) { @@ -1003,7 +1059,7 @@ public class CompletableFutureTest exten { final CFException ex = new CFException(); final CompletableFuture f = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); if (!createIncomplete) f.completeExceptionally(ex); final CompletableFuture g = m.thenRun(f, r); if (createIncomplete) { @@ -1025,9 +1081,9 @@ public class CompletableFutureTest exten for (boolean mayInterruptIfRunning : new boolean[] { true, false }) { final CompletableFuture f = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); if (!createIncomplete) assertTrue(f.cancel(mayInterruptIfRunning)); - final CompletableFuture g = f.thenRun(r); + final CompletableFuture g = m.thenRun(f, r); if (createIncomplete) { checkIncomplete(g); assertTrue(f.cancel(mayInterruptIfRunning)); @@ -1047,9 +1103,9 @@ public class CompletableFutureTest exten for (Integer v1 : new Integer[] { 1, null }) { final CompletableFuture f = new CompletableFuture<>(); - final FailingRunnable r = new FailingRunnable(); + final FailingRunnable r = new FailingRunnable(m); if (!createIncomplete) f.complete(v1); - final CompletableFuture g = f.thenRun(r); + final CompletableFuture g = m.thenRun(f, r); if (createIncomplete) { checkIncomplete(g); f.complete(v1); @@ -1068,7 +1124,7 @@ public class CompletableFutureTest exten for (Integer v1 : new Integer[] { 1, null }) { final CompletableFuture f = new CompletableFuture<>(); - final IncFunction r = new IncFunction(); + final IncFunction r = new IncFunction(m); if (!createIncomplete) f.complete(v1); final CompletableFuture g = m.thenApply(f, r); if (createIncomplete) { @@ -1091,7 +1147,7 @@ public class CompletableFutureTest exten { final CFException ex = new CFException(); final CompletableFuture f = new CompletableFuture<>(); - final IncFunction r = new IncFunction(); + final IncFunction r = new IncFunction(m); if (!createIncomplete) f.completeExceptionally(ex); final CompletableFuture g = m.thenApply(f, r); if (createIncomplete) { @@ -1113,9 +1169,9 @@ public class CompletableFutureTest exten for (boolean mayInterruptIfRunning : new boolean[] { true, false }) { final CompletableFuture f = new CompletableFuture<>(); - final IncFunction r = new IncFunction(); + final IncFunction r = new IncFunction(m); if (!createIncomplete) assertTrue(f.cancel(mayInterruptIfRunning)); - final CompletableFuture g = f.thenApply(r); + final CompletableFuture g = m.thenApply(f, r); if (createIncomplete) { checkIncomplete(g); assertTrue(f.cancel(mayInterruptIfRunning)); @@ -1135,9 +1191,9 @@ public class CompletableFutureTest exten for (Integer v1 : new Integer[] { 1, null }) { final CompletableFuture f = new CompletableFuture<>(); - final FailingFunction r = new FailingFunction(); + final FailingFunction r = new FailingFunction(m); if (!createIncomplete) f.complete(v1); - final CompletableFuture g = f.thenApply(r); + final CompletableFuture g = m.thenApply(f, r); if (createIncomplete) { checkIncomplete(g); f.complete(v1); @@ -1202,9 +1258,9 @@ public class CompletableFutureTest exten for (Integer v1 : new Integer[] { 1, null }) { final CompletableFuture f = new CompletableFuture<>(); - final FailingConsumer r = new FailingConsumer(); + final FailingConsumer r = new FailingConsumer(m); if (!createIncomplete) f.complete(v1); - final CompletableFuture g = f.thenAccept(r); + final CompletableFuture g = m.thenAccept(f, r); if (createIncomplete) { checkIncomplete(g); f.complete(v1); @@ -1225,7 +1281,7 @@ public class CompletableFutureTest exten final CompletableFuture f = new CompletableFuture<>(); final IncAction r = new IncAction(); if (!createIncomplete) assertTrue(f.cancel(mayInterruptIfRunning)); - final CompletableFuture g = f.thenAccept(r); + final CompletableFuture g = m.thenAccept(f, r); if (createIncomplete) { checkIncomplete(g); assertTrue(f.cancel(mayInterruptIfRunning)); @@ -1249,7 +1305,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final SubtractFunction r = new SubtractFunction(); + final SubtractFunction r = new SubtractFunction(m); if (fFirst) f.complete(v1); else g.complete(v2); if (!createIncomplete) @@ -1280,7 +1336,7 @@ public class CompletableFutureTest exten final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); final CFException ex = new CFException(); - final SubtractFunction r = new SubtractFunction(); + final SubtractFunction r = new SubtractFunction(m); (fFirst ? f : g).complete(v1); if (!createIncomplete) @@ -1308,7 +1364,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingBiFunction r = new FailingBiFunction(); + final FailingBiFunction r = new FailingBiFunction(m); final CompletableFuture h = m.thenCombine(f, g, r); if (fFirst) { @@ -1336,7 +1392,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final SubtractFunction r = new SubtractFunction(); + final SubtractFunction r = new SubtractFunction(m); (fFirst ? f : g).complete(v1); if (!createIncomplete) @@ -1366,7 +1422,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final SubtractAction r = new SubtractAction(); + final SubtractAction r = new SubtractAction(m); if (fFirst) f.complete(v1); else g.complete(v2); if (!createIncomplete) @@ -1397,7 +1453,7 @@ public class CompletableFutureTest exten final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); final CFException ex = new CFException(); - final SubtractAction r = new SubtractAction(); + final SubtractAction r = new SubtractAction(m); (fFirst ? f : g).complete(v1); if (!createIncomplete) @@ -1425,7 +1481,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingBiConsumer r = new FailingBiConsumer(); + final FailingBiConsumer r = new FailingBiConsumer(m); final CompletableFuture h = m.thenAcceptBoth(f, g, r); if (fFirst) { @@ -1453,7 +1509,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final SubtractAction r = new SubtractAction(); + final SubtractAction r = new SubtractAction(m); (fFirst ? f : g).complete(v1); if (!createIncomplete) @@ -1483,7 +1539,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); if (fFirst) f.complete(v1); else g.complete(v2); if (!createIncomplete) @@ -1514,7 +1570,7 @@ public class CompletableFutureTest exten final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); final CFException ex = new CFException(); - final Noop r = new Noop(); + final Noop r = new Noop(m); (fFirst ? f : g).complete(v1); if (!createIncomplete) @@ -1542,7 +1598,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingRunnable r = new FailingRunnable(); + final FailingRunnable r = new FailingRunnable(m); CompletableFuture h1 = m.runAfterBoth(f, g, r); if (fFirst) { @@ -1572,7 +1628,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); (fFirst ? f : g).complete(v1); @@ -1603,7 +1659,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final IncFunction r = new IncFunction(); + final IncFunction r = new IncFunction(m); if (!createIncomplete) if (fFirst) f.complete(v1); else g.complete(v2); @@ -1629,7 +1685,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final IncFunction r = new IncFunction(); + final IncFunction r = new IncFunction(m); if (fFirst) { f.complete(v1); @@ -1663,7 +1719,7 @@ public class CompletableFutureTest exten final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); final CFException ex = new CFException(); - final IncFunction r = new IncFunction(); + final IncFunction r = new IncFunction(m); if (!createIncomplete) (fFirst ? f : g).completeExceptionally(ex); final CompletableFuture h = m.applyToEither(f, g, r); @@ -1690,8 +1746,8 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final IncFunction r1 = new IncFunction(); - final IncFunction r2 = new IncFunction(); + final IncFunction r1 = new IncFunction(m); + final IncFunction r2 = new IncFunction(m); final CFException ex = new CFException(); final CompletableFuture j = (reverseArgs ? g : f); final CompletableFuture k = (reverseArgs ? f : g); @@ -1736,7 +1792,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingFunction r = new FailingFunction(); + final FailingFunction r = new FailingFunction(m); final CompletableFuture h = m.applyToEither(f, g, r); f.complete(v1); @@ -1753,7 +1809,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingFunction r = new FailingFunction(); + final FailingFunction r = new FailingFunction(m); final CompletableFuture h = m.applyToEither(f, g, r); g.complete(v2); @@ -1775,7 +1831,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final IncFunction r = new IncFunction(); + final IncFunction r = new IncFunction(m); if (!createIncomplete) assertTrue((fFirst ? f : g).cancel(mayInterruptIfRunning)); final CompletableFuture h = m.applyToEither(f, g, r); @@ -1803,8 +1859,8 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final IncFunction r1 = new IncFunction(); - final IncFunction r2 = new IncFunction(); + final IncFunction r1 = new IncFunction(m); + final IncFunction r2 = new IncFunction(m); final CFException ex = new CFException(); final CompletableFuture j = (reverseArgs ? g : f); final CompletableFuture k = (reverseArgs ? f : g); @@ -2016,7 +2072,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingConsumer r = new FailingConsumer(); + final FailingConsumer r = new FailingConsumer(m); final CompletableFuture h = m.acceptEither(f, g, r); f.complete(v1); @@ -2033,7 +2089,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingConsumer r = new FailingConsumer(); + final FailingConsumer r = new FailingConsumer(m); final CompletableFuture h = m.acceptEither(f, g, r); g.complete(v2); @@ -2153,7 +2209,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); final CompletableFuture h = m.runAfterEither(f, g, r); f.complete(v1); @@ -2174,7 +2230,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); final CompletableFuture h = m.runAfterEither(f, g, r); g.complete(v2); @@ -2195,7 +2251,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); f.complete(v1); g.complete(v2); @@ -2217,7 +2273,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); final CompletableFuture h = m.runAfterEither(f, g, r); final CFException ex = new CFException(); @@ -2237,7 +2293,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); final CompletableFuture h = m.runAfterEither(f, g, r); final CFException ex = new CFException(); @@ -2257,7 +2313,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); final CFException ex = new CFException(); g.completeExceptionally(ex); @@ -2284,7 +2340,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); final CFException ex = new CFException(); f.completeExceptionally(ex); @@ -2315,7 +2371,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingRunnable r = new FailingRunnable(); + final FailingRunnable r = new FailingRunnable(m); final CompletableFuture h = m.runAfterEither(f, g, r); f.complete(v1); @@ -2332,7 +2388,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final FailingRunnable r = new FailingRunnable(); + final FailingRunnable r = new FailingRunnable(m); final CompletableFuture h = m.runAfterEither(f, g, r); g.complete(v2); @@ -2352,7 +2408,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); final CompletableFuture h = m.runAfterEither(f, g, r); assertTrue(f.cancel(mayInterruptIfRunning)); @@ -2372,7 +2428,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); final CompletableFuture h = m.runAfterEither(f, g, r); assertTrue(g.cancel(mayInterruptIfRunning)); @@ -2392,7 +2448,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); assertTrue(g.cancel(mayInterruptIfRunning)); f.complete(v1); @@ -2419,7 +2475,7 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final CompletableFuture g = new CompletableFuture<>(); - final Noop r = new Noop(); + final Noop r = new Noop(m); assertTrue(f.cancel(mayInterruptIfRunning)); g.complete(v1); @@ -2448,9 +2504,9 @@ public class CompletableFutureTest exten for (Integer v1 : new Integer[] { 1, null }) { final CompletableFuture f = new CompletableFuture<>(); - final CompletableFutureInc r = new CompletableFutureInc(); + final CompletableFutureInc r = new CompletableFutureInc(m); if (!createIncomplete) f.complete(v1); - final CompletableFuture g = f.thenCompose(r); + final CompletableFuture g = m.thenCompose(f, r); if (createIncomplete) f.complete(v1); checkCompletedNormally(g, inc(v1)); @@ -2467,10 +2523,10 @@ public class CompletableFutureTest exten for (boolean createIncomplete : new boolean[] { true, false }) { final CFException ex = new CFException(); - final CompletableFutureInc r = new CompletableFutureInc(); + final CompletableFutureInc r = new CompletableFutureInc(m); final CompletableFuture f = new CompletableFuture<>(); if (!createIncomplete) f.completeExceptionally(ex); - final CompletableFuture g = f.thenCompose(r); + final CompletableFuture g = m.thenCompose(f, r); if (createIncomplete) f.completeExceptionally(ex); checkCompletedWithWrappedCFException(g, ex); @@ -2488,9 +2544,9 @@ public class CompletableFutureTest exten { final CompletableFuture f = new CompletableFuture<>(); final FailingCompletableFutureFunction r - = new FailingCompletableFutureFunction(); + = new FailingCompletableFutureFunction(m); if (!createIncomplete) f.complete(v1); - final CompletableFuture g = f.thenCompose(r); + final CompletableFuture g = m.thenCompose(f, r); if (createIncomplete) f.complete(v1); checkCompletedWithWrappedCFException(g); @@ -2506,9 +2562,9 @@ public class CompletableFutureTest exten for (boolean mayInterruptIfRunning : new boolean[] { true, false }) { final CompletableFuture f = new CompletableFuture<>(); - final CompletableFutureInc r = new CompletableFutureInc(); + final CompletableFutureInc r = new CompletableFutureInc(m); if (!createIncomplete) assertTrue(f.cancel(mayInterruptIfRunning)); - final CompletableFuture g = f.thenCompose(r); + final CompletableFuture g = m.thenCompose(f, r); if (createIncomplete) { checkIncomplete(g); assertTrue(f.cancel(mayInterruptIfRunning)); @@ -2680,7 +2736,7 @@ public class CompletableFutureTest exten () -> f.thenCompose(null), () -> f.thenComposeAsync(null), - () -> f.thenComposeAsync(new CompletableFutureInc(), null), + () -> f.thenComposeAsync(new CompletableFutureInc(ExecutionMode.EXECUTOR), null), () -> f.thenComposeAsync(null, exec), () -> f.exceptionally(null),