本文整理了Java中com.linkedin.parseq.Task
类的一些代码示例,展示了Task
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Task
类的具体详情如下:
包路径:com.linkedin.parseq.Task
类名称:Task
[英]A task represents a deferred execution that also contains its resulting value. In addition, tasks include tracing information that can be used with various trace printers.
Tasks should be run using an Engine. They should not be run directly.
[中]任务代表一个延迟执行,它也包含其结果值。此外,任务还包括可用于各种跟踪打印机的跟踪信息。
任务应该使用引擎运行。它们不应该直接运行。
代码示例来源:origin: linkedin/parseq
/**
* Equivalent to {@code async("async", callable)}.
* @see #async(String, Callable)
*/
public static <T> Task<T> async(final Callable<Promise<? extends T>> callable) {
return async("async: " + _taskDescriptor.getDescription(callable.getClass().getName()), callable);
}
代码示例来源:origin: linkedin/parseq
/**
* Equivalent to {@code andThen("andThen", task)}.
* @see #andThen(String, Task)
*/
default <R> Task<R> andThen(final Task<R> task) {
return andThen("andThen: " + task.getName(), task);
}
代码示例来源:origin: linkedin/parseq
Task<Map<Long, Try<String>>> batchGet(Collection<Long> keys) {
return Task.callable("batchGet",
() -> keys.stream().collect(Collectors.toMap(Function.identity(), key -> Success.of(Long.toString(key)))));
}
}
代码示例来源:origin: linkedin/parseq
@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);
}
代码示例来源:origin: linkedin/parseq
@Test
public void testMap4() {
Task<Integer> task = Task.value("value", 1).map("m1", x -> x).map("m2", x -> x).map("m3", x -> x).map("m4", x -> x);
runAndWait("FusionTaskTraceTest.testMap4", task);
}
代码示例来源:origin: linkedin/parseq
@Test
public void testWithTimeoutTwiceSuccess() {
Task<Integer> success = getSuccessTask().andThen(delayedValue(0, 30, TimeUnit.MILLISECONDS))
.withTimeout(100, TimeUnit.MILLISECONDS).withTimeout(5000, TimeUnit.MILLISECONDS);
runAndWait("AbstractTaskTest.testWithTimeoutTwiceSuccess", success);
assertEquals((int) success.get(), 0);
assertEquals(countTasks(success.getTrace()), 7);
}
代码示例来源:origin: linkedin/parseq
@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()));
}
}
代码示例来源:origin: linkedin/parseq
@Test
public void testAsync4() {
Task<Integer> task = Task.async("value", () -> {
SettablePromise<Integer> p = Promises.settable();
p.done(1);
return p;
}).map("m1", x -> x).map("m2", x -> x).map("m3", x -> x).map("m4", x -> x);
runAndWait("FusionTaskTraceTest.testAsyncMap4", task);
}
代码示例来源:origin: linkedin/parseq
@Test
public void testTraceWithPredecessorTrace() throws InterruptedException {
final Task<String> predecessor = value("predecessor", "predecessorValue");
final Task<String> successor = value("successor", "successorValue");
final Task<?> seq = predecessor.andThen(successor);
runAndWait("TestTaskToTrace.testTraceWithPredecessorTrace", seq);
verifyShallowTrace(successor);
verifyShallowTrace(predecessor);
assertEquals(predecessor.getTrace(), successor.getTrace());
//expected relationship: PARENT_OF and SUCCESSOR_OF
assertEquals(2, getRelationships(successor.getTrace(), successor.getId()).size());
assertTrue(successor.getTrace().getRelationships()
.contains(new TraceRelationship(successor.getShallowTraceBuilder(),
predecessor.getShallowTraceBuilder(), Relationship.SUCCESSOR_OF)));
}
代码示例来源:origin: linkedin/parseq
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);
}
代码示例来源:origin: linkedin/parseq
public void testCancelledRecover(int expectedNumberOfTasks) {
Task<Integer> cancelled = getCancelledTask().map("strlen", String::length).recover(e -> -1);
try {
runAndWait("AbstractTaskTest.testCancelledRecover", cancelled);
fail("should have failed");
} catch (Exception ex) {
assertTrue(cancelled.isFailed());
assertTrue(Exceptions.isCancellation(cancelled.getError()));
}
assertEquals(countTasks(cancelled.getTrace()), expectedNumberOfTasks);
}
代码示例来源:origin: linkedin/parseq
public void testAndThenTask(int expectedNumberOfTasks) {
Task<Integer> task = getSuccessTask().andThen(Task.callable("life", () -> 42));
runAndWait("AbstractTaskTest.testAndThenTask", task);
assertEquals((int) task.get(), 42);
assertEquals(countTasks(task.getTrace()), expectedNumberOfTasks);
}
代码示例来源:origin: linkedin/parseq
@Test
public void testLastTaskAlreadyResolvedShareable() {
final AtomicInteger counter = new AtomicInteger();
final Task<String> bob = Task.value("bob", "bob");
runAndWait("TestTaskReuse.testLastTaskAlreadyResolvedShareable-bob", bob);
Task<String> task = Task.callable("increaser", () -> {
counter.incrementAndGet();
return "hello";
} );
Task<String> test1 = task.andThen(bob.shareable());
runAndWait("TestTaskReuse.testLastTaskAlreadyResolvedShareable", test1);
assertEquals(counter.get(), 1);
}
代码示例来源:origin: linkedin/parseq
@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);
}
代码示例来源:origin: linkedin/parseq
public void testRecover(int expectedNumberOfTasks) {
Task<Integer> success = getSuccessTask().map("strlen", String::length).recover(e -> -1);
runAndWait("AbstractTaskTest.testRecoverSuccess", success);
assertEquals((int) success.get(), TASK_VALUE.length());
assertEquals(countTasks(success.getTrace()), expectedNumberOfTasks);
Task<Integer> failure = getFailureTask().map("strlen", String::length).recover(e -> -1);
runAndWait("AbstractTaskTest.testRecoverFailure", failure);
assertEquals((int) failure.get(), -1);
assertEquals(countTasks(failure.getTrace()), expectedNumberOfTasks);
}
代码示例来源:origin: linkedin/parseq
public void testRecoverWithCancelled(int expectedNumberOfTasks) {
Task<String> cancelled = getCancelledTask().recoverWith(e -> Task.callable("recover success", () -> "recovered"));
try {
runAndWait("AbstractTaskTest.testRecoverWithCancelled", cancelled);
fail("should have failed");
} catch (Exception ex) {
assertTrue(cancelled.isFailed());
assertTrue(Exceptions.isCancellation(cancelled.getError()));
}
assertEquals(countTasks(cancelled.getTrace()), expectedNumberOfTasks);
}
代码示例来源:origin: linkedin/parseq
public void testFlatMap(int expectedNumberOfTasks) {
Task<String> task = getSuccessTask().flatMap(str -> Task.callable("strlenstr", () -> String.valueOf(str.length())));
runAndWait("AbstractTaskTest.testFlatMap", task);
assertEquals(task.get(), String.valueOf(TASK_VALUE.length()));
assertEquals(countTasks(task.getTrace()), expectedNumberOfTasks);
}
代码示例来源:origin: linkedin/parseq
@Test
public void testWithTimeoutTaskType() {
Task<?> taskWithTimeout = Task.value("test").withTimeout(50, TimeUnit.MILLISECONDS);
runAndWait("taskWithTimeoutTaskType", taskWithTimeout);
assertEquals(doesTaskTypeExistInTrace(taskWithTimeout.getTrace(), TaskType.TIMEOUT.getName()), true);
Assert.assertEquals(taskWithTimeout.getShallowTrace().getTaskType(), TaskType.WITH_TIMEOUT.getName());
}
代码示例来源:origin: linkedin/parseq
@Test
public void testFlatMapTaskType() {
Task<String> task = Task.value("Welcome");
Task<String> flatMap = task.flatMap("+earth", s -> Task.callable(() -> s + " on earth!"));
runAndWait("flatMapTaskType", flatMap);
assertEquals(flatMap.getShallowTrace().getTaskType(), TaskType.FLATTEN.getName());
}
代码示例来源:origin: linkedin/parseq
@Test
public void testAsyncWithContext() {
final Task<String> t = Task.callable(() -> "done");
Task<String> task = Task.async(ctx -> {
ctx.run(t);
return t;
});
String value = runAndWait("TestTaskFactoryMethods.testAsyncWithContext", task);
assertEquals(value, "done");
assertEquals(countTasks(task.getTrace()), 2);
}
内容来源于网络,如有侵权,请联系作者删除!