private void addPotentialRelationships(final FusionTraceContext traceContext, final TraceBuilder builder) { final ShallowTraceBuilder effectoveShallowTraceBuilder = getEffectiveShallowTraceBuilder(traceContext); builder.addRelationship(Relationship.POTENTIAL_CHILD_OF, effectoveShallowTraceBuilder, traceContext.getParent().getShallowTraceBuilder()); if (_predecessorShallowTraceBuilder != null) { builder.addRelationship(Relationship.POSSIBLE_SUCCESSOR_OF, effectoveShallowTraceBuilder, _predecessorShallowTraceBuilder); } }
private void addRelationships(final FusionTraceContext traceContext) { final ShallowTraceBuilder effectoveShallowTraceBuilder = getEffectiveShallowTraceBuilder(traceContext); TraceBuilder builder = getTraceBuilder(); builder.addRelationship(Relationship.PARENT_OF, traceContext.getParent().getShallowTraceBuilder(), effectoveShallowTraceBuilder); if (_predecessorShallowTraceBuilder != null) { builder.addRelationship(Relationship.SUCCESSOR_OF, effectoveShallowTraceBuilder, _predecessorShallowTraceBuilder); } }
try { if (parent != null) { traceBuilder.addRelationship(Relationship.CHILD_OF, getShallowTraceBuilder(), parent.getShallowTraceBuilder()); traceBuilder.addRelationship(Relationship.SUCCESSOR_OF, getShallowTraceBuilder(), predecessor.getShallowTraceBuilder()); traceBuilder.addRelationship(Relationship.POTENTIAL_CHILD_OF, getShallowTraceBuilder(), parent.getShallowTraceBuilder()); traceBuilder.addRelationship(Relationship.POSSIBLE_SUCCESSOR_OF, getShallowTraceBuilder(), predecessor.getShallowTraceBuilder());
for (ShallowTraceBuilder shallowTraceBuilder: entry.getShallowTraceBuilders()) { if (!assignedParent && !hasParent) { traceBuilder.addRelationship(Relationship.CHILD_OF, ctx.getShallowTraceBuilder(), shallowTraceBuilder); assignedParent = true; } else { traceBuilder.addRelationship(Relationship.POTENTIAL_CHILD_OF, ctx.getShallowTraceBuilder(), shallowTraceBuilder);
@Test public void testAddRelationshipTwice() { final ShallowTraceBuilder trace1 = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("task1").setResultType(ResultType.UNFINISHED); final ShallowTraceBuilder trace2 = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("task2").setResultType(ResultType.UNFINISHED); final TraceBuilder builder = new TraceBuilder(1024, "test", 0L); builder.addRelationship(Relationship.SUCCESSOR_OF, trace1, trace2); builder.addRelationship(Relationship.SUCCESSOR_OF, trace1, trace2); Trace trace = builder.build(); assertEquals(trace1.build(), trace.getTraceMap().get(trace1.getId())); assertEquals(trace2.build(), trace.getTraceMap().get(trace2.getId())); assertEquals(1, trace.getRelationships().size()); assertTrue(trace.getRelationships() .contains(new TraceRelationship(trace1, trace2, Relationship.SUCCESSOR_OF))); }
@Test public void testRelationshipRetention() { final TraceBuilder builder = new TraceBuilder(4096, "test", 0L); List<TraceRelationship> rels = new ArrayList<TraceRelationship>(); for (int i = 0; i < 4096; i++) { final ShallowTraceBuilder trace1 = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("task1").setResultType(ResultType.UNFINISHED); final ShallowTraceBuilder trace2 = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("task2").setResultType(ResultType.UNFINISHED); builder.addRelationship(Relationship.SUCCESSOR_OF, trace1, trace2); rels.add(new TraceRelationship(trace1, trace2, Relationship.SUCCESSOR_OF)); } for (int i = 0; i < 4096 * 10; i++) { final ShallowTraceBuilder trace1 = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("task1").setResultType(ResultType.UNFINISHED); final ShallowTraceBuilder trace2 = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("task2").setResultType(ResultType.UNFINISHED); builder.addRelationship(Relationship.SUCCESSOR_OF, trace1, trace2); } Trace trace = builder.build(); assertEquals(rels.size(), trace.getRelationships().size()); for (TraceRelationship rel : rels) { assertTrue(trace.getRelationships().contains(rel)); } }
@Test public void testAddRelationship() { final ShallowTraceBuilder trace1 = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("task1").setResultType(ResultType.UNFINISHED); final ShallowTraceBuilder trace2 = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("task2").setResultType(ResultType.UNFINISHED); final TraceBuilder builder = new TraceBuilder(1024, "test", 0L); builder.addRelationship(Relationship.SUCCESSOR_OF, trace1, trace2); Trace trace = builder.build(); assertEquals(trace1.build(), trace.getTraceMap().get(trace1.getId())); assertEquals(trace2.build(), trace.getTraceMap().get(trace2.getId())); assertEquals(1, trace.getRelationships().size()); assertTrue(trace.getRelationships() .contains(new TraceRelationship(trace1, trace2, Relationship.SUCCESSOR_OF))); }
@Test public void testReversibleTraceWithDiamond() throws IOException { final ShallowTraceBuilder source = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("source").setResultType(ResultType.SUCCESS) .setValue("source value").setStartNanos(0L).setPendingNanos(25L).setEndNanos(50L); final ShallowTraceBuilder left = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("left").setResultType(ResultType.SUCCESS) .setValue("left value").setStartNanos(50L).setPendingNanos(75L).setEndNanos(100L); final ShallowTraceBuilder right = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("right").setResultType(ResultType.SUCCESS) .setValue("right value").setStartNanos(50L).setPendingNanos(75L).setEndNanos(100L); final ShallowTraceBuilder sink = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("sink").setResultType(ResultType.SUCCESS) .setValue("sink value").setStartNanos(100L).setPendingNanos(125L).setEndNanos(150L); final TraceBuilder builder = new TraceBuilder(1024, "test", 0L); builder.addRelationship(Relationship.SUCCESSOR_OF, left, source); builder.addRelationship(Relationship.SUCCESSOR_OF, right, source); builder.addRelationship(Relationship.SUCCESSOR_OF, sink, left); builder.addRelationship(Relationship.SUCCESSOR_OF, sink, right); Trace trace = builder.build(); assertReversible(trace); }
@Test public void testReversibleTraceWithPredecessor() throws IOException { final ShallowTraceBuilder predecessor = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("predecessor").setResultType(ResultType.SUCCESS) .setValue("predecessor value").setStartNanos(0L).setPendingNanos(100L).setEndNanos(200L); final ShallowTraceBuilder successor = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("successor").setResultType(ResultType.SUCCESS) .setValue("successor value").setStartNanos(50L).setPendingNanos(75L).setEndNanos(100L); final TraceBuilder builder = new TraceBuilder(1024, "test", 0L); builder.addRelationship(Relationship.SUCCESSOR_OF, successor, predecessor); Trace trace = builder.build(); assertReversible(trace); }
@Test public void testReversibleTraceWithChild() throws IOException { final ShallowTraceBuilder parent = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("parent").setResultType(ResultType.SUCCESS) .setValue("parent value").setStartNanos(0L).setPendingNanos(100L).setEndNanos(200L); final ShallowTraceBuilder child = new ShallowTraceBuilder(IdGenerator.getNextId()).setName("child").setResultType(ResultType.SUCCESS) .setValue("child value").setStartNanos(50L).setPendingNanos(75L).setEndNanos(100L); final TraceBuilder builder = new TraceBuilder(1024, "test", 0L); builder.addRelationship(Relationship.PARENT_OF, parent, child); Trace trace = builder.build(); assertReversible(trace); }
private void addPotentialRelationships(final FusionTraceContext traceContext, final TraceBuilder builder) { final ShallowTraceBuilder effectoveShallowTraceBuilder = getEffectiveShallowTraceBuilder(traceContext); builder.addRelationship(Relationship.POTENTIAL_CHILD_OF, effectoveShallowTraceBuilder, traceContext.getParent().getShallowTraceBuilder()); if (_predecessorShallowTraceBuilder != null) { builder.addRelationship(Relationship.POSSIBLE_SUCCESSOR_OF, effectoveShallowTraceBuilder, _predecessorShallowTraceBuilder); } }
private void addRelationships(final FusionTraceContext traceContext) { final ShallowTraceBuilder effectoveShallowTraceBuilder = getEffectiveShallowTraceBuilder(traceContext); TraceBuilder builder = getTraceBuilder(); builder.addRelationship(Relationship.PARENT_OF, traceContext.getParent().getShallowTraceBuilder(), effectoveShallowTraceBuilder); if (_predecessorShallowTraceBuilder != null) { builder.addRelationship(Relationship.SUCCESSOR_OF, effectoveShallowTraceBuilder, _predecessorShallowTraceBuilder); } }
}); for (TraceRelationship rel : trace.getRelationships()) { builder.addRelationship(rel.getRelationhsip(), traceMap.get(rel.getFrom()), traceMap.get(rel.getTo()));
try { if (parent != null) { traceBuilder.addRelationship(Relationship.CHILD_OF, getShallowTraceBuilder(), parent.getShallowTraceBuilder()); traceBuilder.addRelationship(Relationship.SUCCESSOR_OF, getShallowTraceBuilder(), predecessor.getShallowTraceBuilder()); traceBuilder.addRelationship(Relationship.POTENTIAL_CHILD_OF, getShallowTraceBuilder(), parent.getShallowTraceBuilder()); traceBuilder.addRelationship(Relationship.POSSIBLE_SUCCESSOR_OF, getShallowTraceBuilder(), predecessor.getShallowTraceBuilder());
for (ShallowTraceBuilder shallowTraceBuilder: entry.getShallowTraceBuilders()) { if (!assignedParent && !hasParent) { traceBuilder.addRelationship(Relationship.CHILD_OF, ctx.getShallowTraceBuilder(), shallowTraceBuilder); assignedParent = true; } else { traceBuilder.addRelationship(Relationship.POTENTIAL_CHILD_OF, ctx.getShallowTraceBuilder(), shallowTraceBuilder);