/** * {@inheritDoc} */ @Override public Trace getTrace() { return _task.getTrace(); }
@Test public void testWithTimeoutTwiceFailure() { Task<Integer> failure = getSuccessTask().andThen(delayedValue(0, 2000, TimeUnit.MILLISECONDS)) .withTimeout(5000, TimeUnit.MILLISECONDS).withTimeout(100, TimeUnit.MILLISECONDS); try { runAndWait("AbstractTaskTest.testWithTimeoutTwiceFailure", failure); fail("should have failed!"); } catch (Exception ex) { assertEquals(ex.getCause().getClass(), Exceptions.TIMEOUT_EXCEPTION.getClass()); } assertEquals(countTasks(failure.getTrace()), 7); }
@Test public void testGetRequests() { Task<?> task = Task.par(greetingGet(1L), greetingGet(2L)); runAndWait(getTestClassName() + ".testGetRequests", task); if (expectBatching()) { assertTrue(hasTask("greetings batch_get(reqs: 2, ids: 2)", task.getTrace())); } else { assertFalse(hasTask("greetings batch_get(reqs: 2, ids: 2)", task.getTrace())); } }
@Test public void testPar4AndThen() { AtomicInteger value = new AtomicInteger(); Task<?> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4)).andThen((a, b, c, d) -> value.set(a + b + c + d)); runAndWait("TestTaskFactoryMethods.testPar4AndThen", task); assertEquals(value.get(), 1 + 2 + 3 + 4); assertEquals(countTasks(task.getTrace()), 2 + 1 + 4); }
@Test public void testSingleGetRequestIsNotBatchedOverrides() { Task<?> task = greetingGet(1L, overrides()); runAndWait(getTestClassName() + ".testSingleGetRequestIsNotBatchedOverrides", task); assertFalse(hasTask("greetings batch_get(reqs: 1, ids: 1)", task.getTrace())); }
@Test public void testBatchGetRequestsOverrides() { Task<?> task = Task.par(greetings(overrides(), 1L, 2L), greetings(overrides(), 3L, 4L)); runAndWait(getTestClassName() + ".testBatchGetRequestsOverrides", task); if (expectBatchingOverrides()) { assertTrue(hasTask("greetings batch_get(reqs: 2, ids: 4)", task.getTrace())); } else { assertFalse(hasTask("greetings batch_get(reqs: 2, ids: 4)", task.getTrace())); } }
@Test public void testGetAndBatchGetRequestsWithProjection() { Task<?> task = Task.par(greetingGetWithProjection(1L, Greeting.fields().message()), greetingsWithProjection( Arrays.asList(Greeting.fields().tone()),2L, 3L)); runAndWait(getTestClassName() + ".testGetAndBatchGetRequests", task); if (expectBatching()) { assertTrue(hasTask("greetings batch_get(reqs: 2, ids: 3)", task.getTrace())); } else { assertFalse(hasTask("greetings batch_get(reqs: 2, ids: 3)", task.getTrace())); } }
public void testRecoverWithRecoverd(int expectedNumberOfTasks) { Task<String> recovered = getFailureTask().recoverWith(e -> Task.callable("recover success", () -> "recovered")); runAndWait("AbstractTaskTest.testRecoverWithRecoverd", recovered); assertEquals(recovered.get(), "recovered"); assertEquals(countTasks(recovered.getTrace()), expectedNumberOfTasks); }
@Test public void testGetRequestsWithError() { Task<String> task = Task.par(toMessage(greetingGet(1L)), toMessage(greetingGet(-1L)).recover(e -> "failed")) .map("combine", (x, y) -> x + y); runAndWait(getTestClassName() + ".testGetRequestsWithError", task); assertEquals(task.get(), "Good morning!failed"); if (expectBatching()) { assertTrue(hasTask("greetings batch_get(reqs: 2, ids: 2)", task.getTrace())); } else { assertFalse(hasTask("greetings batch_get(reqs: 2, ids: 2)", task.getTrace())); } }
@Test public void testPar8AndThenDsc() { AtomicInteger value = new AtomicInteger(); Task<?> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4), Task.value(5), Task.value(6), Task.value(7), Task.value(8)) .andThen("test", (a, b, c, d, e, f, g, h) -> value.set(a + b + c + d + e + f + g + h)); runAndWait("TestTaskFactoryMethods.testPar8AndThenDsc", task); assertEquals(value.get(), 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8); assertEquals(countTasks(task.getTrace()), 2 + 1 + 8); }
@Test public void testDuplicateGetRequestIsNotBatchedOverrides() { Task<?> task = Task.par(greetingGet(1L, overrides()), greetingGet(1L, overrides())); runAndWait(getTestClassName() + ".testDuplicateGetRequestIsNotBatchedOverrides", task); assertFalse(hasTask("greetings batch_get(reqs: 1, ids: 1)", task.getTrace())); }
@Test public void testPar4FlatMap() { Task<Integer> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4)).flatMap((a, b, c, d) -> Task.value(a + b + c + d)); runAndWait("TestTaskFactoryMethods.testPar4FlatMap", task); assertEquals((int)task.get(), 1 + 2 + 3 + 4); assertEquals(countTasks(task.getTrace()), 2 + 3 + 4); }
@Test public void testPar5FlatMap() { Task<Integer> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4), Task.value(5)) .flatMap((a, b, c, d, e) -> Task.value(a + b + c + d + e)); runAndWait("TestTaskFactoryMethods.testPar5FlatMap", task); assertEquals((int)task.get(), 1 + 2 + 3 + 4 + 5); assertEquals(countTasks(task.getTrace()), 2 + 3 + 5); }
@Test public void testPar8() { Task<Integer> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4), Task.value(5), Task.value(6), Task.value(7), Task.value(8)) .map((a, b, c, d, e, f, g, h) -> a + b + c + d + e + f + g + h); runAndWait("TestTaskFactoryMethods.testPar8", task); assertEquals((int)task.get(), 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8); assertEquals(countTasks(task.getTrace()), 2 + 1 + 8); }
@Test public void testPar11() { Task<Integer> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4), Task.value(5), Task.value(6), Task.value(7), Task.value(8), Task.value(9), Task.value(10), Task.value(11)) .map((a, b, c, d, e, f, g, h, i, j, k) -> a + b + c + d + e + f + g + h + i + j + k); runAndWait("TestTaskFactoryMethods.testPar11", task); assertEquals((int)task.get(), 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11); assertEquals(countTasks(task.getTrace()), 2 + 1 + 11); }
@Test public void testPar10FlatMap() { Task<Integer> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4), Task.value(5), Task.value(6), Task.value(7), Task.value(8), Task.value(9), Task.value(10)) .flatMap((a, b, c, d, e, f, g, h, i, j) -> Task.value(a + b + c + d + e + f + g + h + i + j)); runAndWait("TestTaskFactoryMethods.testPar10FlatMap", task); assertEquals((int)task.get(), 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10); assertEquals(countTasks(task.getTrace()), 2 + 3 + 10); }
@Test public void testPar10FlatMapDsc() { Task<Integer> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4), Task.value(5), Task.value(6), Task.value(7), Task.value(8), Task.value(9), Task.value(10)) .flatMap("test", (a, b, c, d, e, f, g, h, i, j) -> Task.value(a + b + c + d + e + f + g + h + i + j)); runAndWait("TestTaskFactoryMethods.testPar10FlatMapDsc", task); assertEquals((int)task.get(), 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10); assertEquals(countTasks(task.getTrace()), 2 + 3 + 10); }
@Test public void testGetRequestsWithDifferentCustomQueryParamsNoBatching() { Task<?> t1 = _parseqClient.createTask(new GreetingsBuilders().get().id(1L) .addParam("K1", "V1").build()); Task<?> t2 = _parseqClient.createTask(new GreetingsBuilders().get().id(2L) .addParam("K2", "V1").build()); Task<?> task = Task.par(t1, t2); runAndWait(getTestClassName() + ".testGetRequestsWithDifferentCustomQueryParamsNoBatching", task); assertFalse(hasTask("greetings batch_get(reqs: 2, ids: 2)", task.getTrace())); }
@Test public void testPar15Dsc() { Task<Integer> task = Task.par(Task.value(1), Task.value(2), Task.value(3), Task.value(4), Task.value(5), Task.value(6), Task.value(7), Task.value(8), Task.value(9), Task.value(10), Task.value(11), Task.value(12), Task.value(13), Task.value(14), Task.value(15)) .map("test", (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> a + b + c + d + e + f + g + h + i + j + k + l + m + n + o); runAndWait("TestTaskFactoryMethods.testPar15Dsc", task); assertEquals((int)task.get(), 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15); assertEquals(countTasks(task.getTrace()), 2 + 1 + 15); }
@Test public void testGetRequestsWithDifferentCustomHeadersNoBatchingOverrides() { Task<?> t1 = _parseqClient.createTask(new GreetingsBuilders().get().id(1L) .addHeader("H1", "V1").build(), overrides()); Task<?> t2 = _parseqClient.createTask(new GreetingsBuilders().get().id(2L) .addHeader("H2", "V1").build(), overrides()); Task<?> task = Task.par(t1, t2); runAndWait(getTestClassName() + ".testGetRequestsWithDifferentCustomHeadersNoBatchingOverrides", task); assertFalse(hasTask("greetings batch_get(reqs: 2, ids: 2)", task.getTrace())); }