private int assertHasDebugEndLog(String loggerName, Task<?> task, List<ListLogger.Entry> entries) { for (int i = 0; i < entries.size(); i++) { final String message = entries.get(i).getMessage(); if (message.contains("Ending task") && message.contains(task.getName()) && message.contains(ResultType.fromTask(task).toString())) { return i; } } fail(loggerName + ": " + entries + " does not contain an end log entry for " + task.getName()); throw new RuntimeException("Execution never gets here - see preceding fail"); }
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((_attributes == null) ? 0 : _attributes.hashCode()); result = prime * result + ((_endNanos == null) ? 0 : _endNanos.hashCode()); result = prime * result + (_hidden ? 1231 : 1237); result = prime * result + ((_id == null) ? 0 : _id.hashCode()); result = prime * result + ((_name == null) ? 0 : _name.hashCode()); result = prime * result + ((_pendingNanos == null) ? 0 : _pendingNanos.hashCode()); result = prime * result + ((_resultType == null) ? 0 : _resultType.hashCode()); result = prime * result + ((_startNanos == null) ? 0 : _startNanos.hashCode()); result = prime * result + (_systemHidden ? 1231 : 1237); result = prime * result + ((_value == null) ? 0 : _value.hashCode()); result = prime * result + ((_taskType == null) ? 0 : _taskType.hashCode()); return result; }
@Test public void testTraceCompletness() throws InterruptedException { final Task<String> task = delayedValue("value", 10, TimeUnit.MILLISECONDS).map("duplicate", x -> x + x); final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<Trace> trace = new AtomicReference<>(); task.addListener(s -> { trace.set(task.getTrace()); latch.countDown(); }); runAndWait("TestFusionTask.testTraceCompletness", task); assertTrue(latch.await(100, TimeUnit.MILLISECONDS), "trace was not abtained in time"); assertTrue(trace.get().getTraceMap().values().stream() .allMatch(shallowTrace -> shallowTrace.getResultType().equals(ResultType.SUCCESS)), "all tasks in the trace should have ResultType=SUCCESS"); }
public <T> void logTaskEnd(final Task<T> task, final Function<T, String> traceValueProvider) { if (_planLogger.isTraceEnabled()) { _planLogger.trace(END_TASK_TRACE_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType .fromTask(task), stringValue(task, traceValueProvider) }); } else if (_planLogger.isDebugEnabled()) { _planLogger.debug(END_TASK_DEBUG_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType.fromTask(task) }); } else if (_rootId.equals(task.getId()) && _rootLogger.isTraceEnabled()) { _rootLogger.trace(END_TASK_TRACE_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType .fromTask(task), stringValue(task, traceValueProvider) }); } else if (_rootId.equals(task.getId()) && _rootLogger.isDebugEnabled()) { _rootLogger.debug(END_TASK_DEBUG_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType.fromTask(task) }); } else if (_allLogger.isTraceEnabled()) { _allLogger.trace(END_TASK_TRACE_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType .fromTask(task), stringValue(task, traceValueProvider) }); } else if (_allLogger.isDebugEnabled()) { _allLogger.debug(END_TASK_DEBUG_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType.fromTask(task) }); } }
private String traceStr(final int id, final String name, final ResultType resultType, final boolean hidden, final String taskType) { final StringBuilder sb = new StringBuilder(); sb.append("{").append(quote(JsonTraceCodec.TRACE_ID)).append(": ").append(id).append(",") .append(quote(JsonTraceCodec.TRACE_NAME)).append(": ").append(quote(name)).append(",") .append(quote(JsonTraceCodec.TRACE_HIDDEN)).append(": ").append(hidden).append(",") .append(quote(JsonTraceCodec.TRACE_RESULT_TYPE)).append(": ").append(quote(resultType.toString())); if (taskType != null) { sb.append(",").append(quote(JsonTraceCodec.TRACE_TASK_TYPE)).append(": ").append(quote(taskType)); } sb.append("}"); return sb.toString(); }
private void verifyShallowTrace(final Task<?> task) { final ShallowTrace trace = findPossiblyFusedTrace(task); assertEquals(task.getName(), trace.getName()); assertEquals(ResultType.fromTask(task), trace.getResultType()); if (trace.getResultType().equals(ResultType.UNFINISHED)) { if (trace.getStartNanos() == null) { assertNull(trace.getEndNanos());
final ResultType resultType = ResultType.valueOf(getTextField(traceNode, JsonTraceCodec.TRACE_RESULT_TYPE)); shallowBuilder.setResultType(resultType);
if (allEarlyFinish && ResultType.fromTask(task) != ResultType.EARLY_FINISH) { allEarlyFinish = false;
generator.writeNumberField(JsonTraceCodec.TRACE_ID, trace.getId()); generator.writeStringField(JsonTraceCodec.TRACE_NAME, trace.getName()); generator.writeStringField(JsonTraceCodec.TRACE_RESULT_TYPE, trace.getResultType().toString()); generator.writeBooleanField(JsonTraceCodec.TRACE_HIDDEN, trace.getHidden()); generator.writeBooleanField(JsonTraceCodec.TRACE_SYSTEM_HIDDEN, trace.getSystemHidden());
final ResultType resultType = ResultType.valueOf(getTextField(traceNode, JsonTraceCodec.TRACE_RESULT_TYPE)); shallowBuilder.setResultType(resultType);
public <T> void logTaskEnd(final Task<T> task, final Function<T, String> traceValueProvider) { if (_planLogger.isTraceEnabled()) { _planLogger.trace(END_TASK_TRACE_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType .fromTask(task), stringValue(task, traceValueProvider) }); } else if (_planLogger.isDebugEnabled()) { _planLogger.debug(END_TASK_DEBUG_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType.fromTask(task) }); } else if (_rootId.equals(task.getId()) && _rootLogger.isTraceEnabled()) { _rootLogger.trace(END_TASK_TRACE_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType .fromTask(task), stringValue(task, traceValueProvider) }); } else if (_rootId.equals(task.getId()) && _rootLogger.isDebugEnabled()) { _rootLogger.debug(END_TASK_DEBUG_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType.fromTask(task) }); } else if (_allLogger.isTraceEnabled()) { _allLogger.trace(END_TASK_TRACE_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType .fromTask(task), stringValue(task, traceValueProvider) }); } else if (_allLogger.isDebugEnabled()) { _allLogger.debug(END_TASK_DEBUG_FORMAT, new Object[] { _planId, task.getName(), elapsedMillis(task), ResultType.fromTask(task) }); } }
generator.writeNumberField(JsonTraceCodec.TRACE_ID, trace.getId()); generator.writeStringField(JsonTraceCodec.TRACE_NAME, trace.getName()); generator.writeStringField(JsonTraceCodec.TRACE_RESULT_TYPE, trace.getResultType().toString()); generator.writeBooleanField(JsonTraceCodec.TRACE_HIDDEN, trace.getHidden()); generator.writeBooleanField(JsonTraceCodec.TRACE_SYSTEM_HIDDEN, trace.getSystemHidden());
@Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((_attributes == null) ? 0 : _attributes.hashCode()); result = prime * result + ((_endNanos == null) ? 0 : _endNanos.hashCode()); result = prime * result + (_hidden ? 1231 : 1237); result = prime * result + ((_id == null) ? 0 : _id.hashCode()); result = prime * result + ((_name == null) ? 0 : _name.hashCode()); result = prime * result + ((_pendingNanos == null) ? 0 : _pendingNanos.hashCode()); result = prime * result + ((_resultType == null) ? 0 : _resultType.hashCode()); result = prime * result + ((_startNanos == null) ? 0 : _startNanos.hashCode()); result = prime * result + (_systemHidden ? 1231 : 1237); result = prime * result + ((_value == null) ? 0 : _value.hashCode()); result = prime * result + ((_taskType == null) ? 0 : _taskType.hashCode()); return result; }
if (allEarlyFinish && ResultType.fromTask(task) != ResultType.EARLY_FINISH) { allEarlyFinish = false;