@Override Task<?> createPlan() { List<Task<?>> l = new ArrayList<>(); for (int i = 0; i < 20; i++) { l.add(task()); } return Tasks.par(l); }
Task<List<String>> createConnectionsSummaries(List<Integer> connections) { return Tasks.par(createConnectionsSummariesTasks(connections)); }
@Test public void testIterableParWithEmptyList() { try { par(Collections.<Task<?>> emptyList()); fail("Should have thrown IllegalArgumentException"); } catch (IllegalArgumentException e) { // Expected case } }
@Override public Promise<String> run(final Context ctx) { final Task<String> twoStage = seq(par(fetchAndLog("http://www.bing.com"), fetchAndLog("http://www.yahoo.com")), par(fetchAndLog("http://www.google.com"), fetchAndLog("https://duckduckgo.com/")), buildResult()); ctx.run(twoStage); return twoStage; }
@Test public void testParIsNotSystemHidden() { final ParTask<String> par = par(Collections.singleton(value("value"))); assertFalse(par.getShallowTrace().getSystemHidden()); } }
@Override protected void doRunExample(final Engine engine) throws Exception { final MockService<String> httpClient = getService(); final Task<String> fetchBing = fetchUrl(httpClient, "http://www.bing.com"); final Task<String> fetchYahoo = fetchUrl(httpClient, "http://www.yahoo.com"); final Task<String> fetchGoogle = fetchUrl(httpClient, "http://www.google.com"); final Task<?> parFetch = par(fetchBing, fetchGoogle, fetchYahoo); engine.run(parFetch); parFetch.await(); System.out.println("Bing => " + fetchBing.get()); System.out.println("Yahoo => " + fetchYahoo.get()); System.out.println("Google => " + fetchGoogle.get()); ExampleUtil.printTracingResults(parFetch); } }
@SuppressWarnings("deprecation") @Test public void testPar2() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2)); runAndWait("TestParTask.testPar2", par); assertEquals(Arrays.asList(1, 2), par.get()); }
@Test public void testTypedParWithGeneralType() throws InterruptedException { final Integer intVal = 123; final Double dblVal = 456.789; final Task<Integer> intTask = value("intTask", intVal); final Task<Double> dblTask = value("dblTask", dblVal); final List<Task<? extends Number>> numTasks = new ArrayList<Task<? extends Number>>(); numTasks.add(intTask); numTasks.add(dblTask); final ParTask<? extends Number> par = par(numTasks); runAndWait("TestParTask.testTypedParWithGeneralType", par); assertEquals(2, par.get().size()); assertEquals(intVal, par.get().get(0)); assertEquals(dblVal, par.get().get(1)); }
@Test public void testIterableSeqWithMultipleElements() throws InterruptedException { final int iters = 500; final Task<?>[] tasks = new BaseTask<?>[iters]; final AtomicInteger counter = new AtomicInteger(0); for (int i = 0; i < iters; i++) { tasks[i] = Task.action("task-" + i, () -> { // Note: We intentionally do not use CAS. We guarantee that // the run method of Tasks are never executed in parallel. final int currentCount = counter.get(); counter.set(currentCount + 1); } ); } final ParTask<?> par = par(Arrays.asList(tasks)); runAndWait("TestParTask.testIterableSeqWithMultipleElements", par); assertEquals(500, par.getSuccessful().size()); assertEquals(500, par.getTasks().size()); assertEquals(500, par.get().size()); assertEquals(500, counter.get()); }
@Test public void testIterableParWithSingletonList() throws InterruptedException { final String valueStr = "value"; final Task<String> task = value("value", valueStr); final Task<List<String>> par = par(Collections.singleton(task)); runAndWait("TestParTask.testIterableParWithSingletonList", par); assertEquals(1, par.get().size()); assertEquals(valueStr, par.get().get(0)); assertEquals(valueStr, task.get()); }
@SuppressWarnings("deprecation") @Test public void testPar3() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2), value(3)); runAndWait("TestParTask.testPar3", par); assertEquals(Arrays.asList(1, 2, 3), par.get()); }
@SuppressWarnings("deprecation") @Test public void testPar4() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2), value(3), value(4)); runAndWait("TestParTask.testPar4", par); assertEquals(Arrays.asList(1, 2, 3, 4), par.get()); }
@SuppressWarnings("deprecation") @Test public void testParWithGeneralType() throws InterruptedException { final Integer intVal = 123; final Double dblVal = 456.789; final Task<Integer> intTask = value("intTask", intVal); final Task<Double> dblTask = value("dblTask", dblVal); final ParTask<? extends Number> par = par(intTask, dblTask); runAndWait("TestParTask.testParWithGeneralType", par); assertEquals(2, par.get().size()); assertEquals(intVal, par.get().get(0)); assertEquals(dblVal, par.get().get(1)); }
@SuppressWarnings("deprecation") @Test public void testPar5() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2), value(3), value(4), value(5)); runAndWait("TestParTask.testPar5", par); assertEquals(Arrays.asList(1, 2, 3, 4, 5), par.get()); }
@SuppressWarnings("deprecation") @Test public void testPar6() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2), value(3), value(4), value(5), value(6)); runAndWait("TestParTask.testPar6", par); assertEquals(Arrays.asList(1, 2, 3, 4, 5, 6), par.get()); }
@Override protected void doRunExample(final Engine engine) throws Exception { final MockService<String> httpClient = getService(); final Task<String> fetchBing = fetchUrl(httpClient, "http://www.bing.com"); final Task<String> fetchYahoo = fetchUrl(httpClient, "http://www.yahoo.com"); final Task<String> fetchGoogle = fetchUrl(httpClient, "http://www.google.com"); final Task<?> printResults = action("printResults", new Runnable() { @Override public void run() { System.out.println("Bing => " + fetchBing.get()); System.out.println("Yahoo => " + fetchYahoo.get()); System.out.println("Google => " + fetchGoogle.get()); } }); final Task<?> parFetch = par(fetchBing, fetchGoogle, fetchYahoo); final Task<?> fanIn = seq(parFetch, printResults); engine.run(fanIn); fanIn.await(); printTracingResults(fanIn); } }
@SuppressWarnings("deprecation") @Test public void testPar7() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2), value(3), value(4), value(5), value(6), value(7)); runAndWait("TestParTask.testPar7", par); assertEquals(Arrays.asList(1, 2, 3, 4, 5, 6, 7), par.get()); }
@SuppressWarnings("deprecation") @Test public void testPar8() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2), value(3), value(4), value(5), value(6), value(7), value(8)); runAndWait("TestParTask.testPar8", par); assertEquals(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8), par.get()); }
@SuppressWarnings("deprecation") @Test public void testPar9() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2), value(3), value(4), value(5), value(6), value(7), value(8), value(9)); runAndWait("TestParTask.testPar9", par); assertEquals(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9), par.get()); }
@SuppressWarnings("deprecation") @Test public void testPar10() throws InterruptedException { final Task<List<Integer>> par = par(value(1), value(2), value(3), value(4), value(5), value(6), value(7), value(8), value(9), value(10)); runAndWait("TestParTask.testPar10", par); assertEquals(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), par.get()); }