@Test
public void buildTraceOnlySpans() {
Span span01 = createServerSpan(null);
Span span02 = createServerSpan(span01);
Span span03 = createClientSpan(span02);
Span span04 = createServerSpan(span03);
Span span05 = createSdkSpan(span02);
InvocationSequenceData invoc01 = createSequence(span01);
InvocationSequenceData _invoc02 = createSequence(span02);
InvocationSequenceData invoc03 = createSequence(span02);
InvocationSequenceData _invoc04 = createSequence(span03);
invoc01.getNestedSequences().add(_invoc02);
invoc03.getNestedSequences().add(_invoc04);
doReturn(Arrays.asList(span01, span02, span03, span04, span05)).when(spanService).getSpans(1337L);
doReturn(Arrays.asList(invoc01, invoc03)).when(invocationService).getInvocationSequenceDetail(1337L);
builder.setSpanService(spanService).setInvocationService(invocationService).setTraceId(1337L).setMode(Mode.ONLY_SPANS_WITH_SDK);
InvocationTreeElement tree = builder.build();
Map<Object, InvocationTreeElement> lookupMap = InvocationTreeUtil.buildLookupMap(tree);
assertThat(lookupMap.size(), is(5));
assertThat(tree.getDataElement(), is(span01));
for (Object data : new Object[] { span01, span02, span03, span04, span05 }) {
assertThat(InvocationTreeUtil.lookupTreeElement(lookupMap, data), is(not(nullValue())));
}
for (Object data : new Object[] { invoc01, _invoc02, invoc03, _invoc04 }) {
assertThat(InvocationTreeUtil.lookupTreeElement(lookupMap, data), is(nullValue()));
}
verify(spanService).getSpans(1337L);
verify(invocationService).getInvocationSequenceDetail(1337L);
verifyNoMoreInteractions(spanService, invocationService);
}