@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
@Override public ShallowTraceBuilder getShallowTraceBuilder() { return _task.getShallowTraceBuilder(); }
/** * A helper for creating task wrapper with associated retry policy. * * @param name A name of the task that needs to be retried. * @param policy Retry policy that will control this task's behavior. * @param taskFunction A task generator function. It will receive a zero-based attempt number as a parameter. * @param <U> Type of a task result. */ public static <U> Task<U> withRetryPolicy(String name, RetryPolicy policy, Function1<Integer, Task<U>> taskFunction) { RetriableTask<U> retriableTask = new RetriableTask<>(name, policy, taskFunction); Task<U> retryTaskWrapper = Task.async(name + " retriableTask", retriableTask::run); retryTaskWrapper.getShallowTraceBuilder().setTaskType(TaskType.WITH_RETRY.getName()); return retryTaskWrapper; }
@SuppressWarnings("deprecation") @Test public void testTraceWithSuccessChild() throws InterruptedException { final Task<String> task = value("taskName", "value"); final Task<?> seq = Tasks.seq(Arrays.asList(task)); runAndWait("TestTaskToTrace.testTraceWithSuccessChild", seq); verifyShallowTrace(task); verifyShallowTrace(seq); assertEquals(1, getRelationships(seq.getTrace(), seq.getId()).size()); assertTrue(seq.getTrace().getRelationships() .contains(new TraceRelationship(seq.getShallowTraceBuilder(), task.getShallowTraceBuilder(), Relationship.PARENT_OF))); }
@Test public void testTraceWithEarlyFinish() throws InterruptedException { final Task<String> innerTask = value("xyz"); final Task<String> task = new BaseTask<String>() { @Override protected Promise<? extends String> run(final Context context) throws Exception { // We kick off a task that won't finish before the containing task // (this task) is finished. context.run(innerTask); return Promises.value("value"); } }; runAndWait("TestTaskToTrace.testTraceWithEarlyFinish", task); assertEquals(1, getRelationships(task.getTrace(), task.getId()).size()); assertTrue(task.getTrace().getRelationships() .contains(new TraceRelationship(task.getShallowTraceBuilder(), innerTask.getShallowTraceBuilder(), Relationship.POTENTIAL_PARENT_OF))); assertEquals(ResultType.EARLY_FINISH, task.getTrace().getTraceMap().get(innerTask.getId()).getResultType()); }
@Test public void testSideEffectsPredecessorTrace() throws InterruptedException, IOException { final Task<String> baseTask = value("base", "baseValue"); final Task<String> sideEffect = value("sideEffect", "sideEffectValue"); final Task<String> withSideEffect = baseTask.withSideEffect(x -> sideEffect); runAndWait("TestTaskToTrace.testSideEffectsPredecessorTrace", withSideEffect); assertTrue(sideEffect.await(5, TimeUnit.SECONDS)); assertEquals(2, getRelationships(withSideEffect.getTrace(), withSideEffect.getId()).size()); verifyShallowTrace(sideEffect); verifyShallowTrace(baseTask); assertTrue(withSideEffect.getTrace().getRelationships().toString(), withSideEffect.getTrace().getRelationships() .contains(new TraceRelationship(withSideEffect.getShallowTraceBuilder(), baseTask.getShallowTraceBuilder(), Relationship.PARENT_OF))); }
@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))); }