@Test public void getCurrentSpan_should_return_current_span() throws Exception { // given Tracer tracer = Tracer.getInstance(); tracer.startRequestWithRootSpan("test-span"); // when Span span = tracer.getCurrentSpan(); // then assertThat(span).isNotNull(); assertThat(span.getSpanName()).isEqualTo("test-span"); }
private TracingState generateTracingStateOnCurrentThread() { Tracer.getInstance().startRequestWithRootSpan(UUID.randomUUID().toString()); Tracer.getInstance().startSubSpan(UUID.randomUUID().toString(), Span.SpanPurpose.LOCAL_ONLY); return TracingState.getCurrentThreadTracingState(); }
private TracingState generateTracingStateOnCurrentThread() { Tracer.getInstance().startRequestWithRootSpan(UUID.randomUUID().toString()); Tracer.getInstance().startSubSpan(UUID.randomUUID().toString(), SpanPurpose.LOCAL_ONLY); return TracingState.getCurrentThreadTracingState(); }
@Test(expected = IllegalArgumentException.class) public void starting_a_request_with_null_span_name_should_throw_IllegalArgumentException() { // expect Tracer.getInstance().startRequestWithRootSpan(null); fail("Expected IllegalArgumentException but no exception was thrown"); }
@Test public void getCurrentTracerManagedSpanStatus_works_as_expected_for_managed_noncurrent() { // given Span nonCurrentRootSpan = Tracer.getInstance().startRequestWithRootSpan("root"); Span nonCurrentSubspan = Tracer.getInstance().startSubSpan("subspan1", SpanPurpose.LOCAL_ONLY); Span currentSubspan = Tracer.getInstance().startSubSpan("subspan2", SpanPurpose.LOCAL_ONLY); // expect assertThat(nonCurrentRootSpan.getCurrentTracerManagedSpanStatus()) .isEqualTo(TracerManagedSpanStatus.MANAGED_NON_CURRENT_ROOT_SPAN); assertThat(nonCurrentSubspan.getCurrentTracerManagedSpanStatus()) .isEqualTo(TracerManagedSpanStatus.MANAGED_NON_CURRENT_SUB_SPAN); }
private Pair<Deque<Span>, Map<String, String>> setupCurrentThreadWithTracingInfo() { resetTracing(); Tracer.getInstance().startRequestWithRootSpan("request-" + UUID.randomUUID().toString()); return Pair.of(Tracer.getInstance().getCurrentSpanStackCopy(), MDC.getCopyOfContextMap()); }
@Test public void getCurrentTracerManagedSpanStatus_works_as_expected_for_unmanaged() { // given Span manuallyCreatedSpan = Span.newBuilder("manuallyCreatedSpan", SpanPurpose.LOCAL_ONLY).build(); Span completedSpan = Tracer.getInstance().startRequestWithRootSpan("completedSpan"); Tracer.getInstance().completeRequestSpan(); // when TracerManagedSpanStatus tmssManual = manuallyCreatedSpan.getCurrentTracerManagedSpanStatus(); TracerManagedSpanStatus tmssCompleted = completedSpan.getCurrentTracerManagedSpanStatus(); // then assertThat(tmssManual).isEqualTo(TracerManagedSpanStatus.UNMANAGED_SPAN); assertThat(tmssCompleted).isEqualTo(TracerManagedSpanStatus.UNMANAGED_SPAN); }
private Pair<Deque<Span>, Map<String, String>> setupCurrentThreadWithTracingInfo() { resetTracing(); Tracer.getInstance().startRequestWithRootSpan("request-" + UUID.randomUUID().toString()); return Pair.of(Tracer.getInstance().getCurrentSpanStackCopy(), MDC.getCopyOfContextMap()); }
@Test public void close_completes_the_span_as_expected_overall_request_span() { // given Span overallSpan = Tracer.getInstance().startRequestWithRootSpan("root"); assertThat(Tracer.getInstance().getCurrentSpan()).isSameAs(overallSpan); assertThat(overallSpan.isCompleted()).isFalse(); // when overallSpan.close(); // then assertThat(overallSpan.isCompleted()).isTrue(); assertThat(Tracer.getInstance().getCurrentSpan()).isNull(); }
private Pair<Deque<Span>, Map<String, String>> setupCurrentThreadWithTracingInfo() { resetTracing(); Tracer.getInstance().startRequestWithRootSpan("request-" + UUID.randomUUID().toString()); return Pair.of(Tracer.getInstance().getCurrentSpanStackCopy(), MDC.getCopyOfContextMap()); }
public static ChannelHandlerContextMocks mockChannelHandlerContextWithTraceInfo(String userId) { if (Tracer.getInstance().getCurrentSpan() == null) { Tracer.getInstance().startRequestWithRootSpan("mockChannelHandlerContext", userId); } ChannelHandlerContextMocks channelHandlerMocks = mockChannelHandlerContext(); when(channelHandlerMocks.mockHttpProcessingState.getLoggerMdcContextMap()).thenReturn(MDC.getCopyOfContextMap()); when(channelHandlerMocks.mockHttpProcessingState.getDistributedTraceStack()).thenReturn(Tracer.getInstance().getCurrentSpanStackCopy()); return channelHandlerMocks; }
@Test public void handleSpanCloseMethod_completes_the_span_as_expected_overall_request_span() { // given Span overallSpan = Tracer.getInstance().startRequestWithRootSpan("root"); assertThat(Tracer.getInstance().getCurrentSpan()).isSameAs(overallSpan); assertThat(overallSpan.isCompleted()).isFalse(); // when Tracer.getInstance().handleSpanCloseMethod(overallSpan); // then assertThat(overallSpan.isCompleted()).isTrue(); assertThat(Tracer.getInstance().getCurrentSpan()).isNull(); }
@Test public void getCurrentManagedStatusForSpan_works_as_expected_for_managed_noncurrent() { // given Span nonCurrentRootSpan = Tracer.getInstance().startRequestWithRootSpan("root"); Span nonCurrentSubspan = Tracer.getInstance().startSubSpan("subspan1", SpanPurpose.LOCAL_ONLY); Span currentSubspan = Tracer.getInstance().startSubSpan("subspan2", SpanPurpose.LOCAL_ONLY); // expect assertThat(Tracer.getInstance().getCurrentManagedStatusForSpan(nonCurrentRootSpan)) .isEqualTo(TracerManagedSpanStatus.MANAGED_NON_CURRENT_ROOT_SPAN); assertThat(Tracer.getInstance().getCurrentManagedStatusForSpan(nonCurrentSubspan)) .isEqualTo(TracerManagedSpanStatus.MANAGED_NON_CURRENT_SUB_SPAN); }
@Test public void close_completes_the_span_as_expected_subspan() { // given Span parentSpan = Tracer.getInstance().startRequestWithRootSpan("root"); Span subspan = Tracer.getInstance().startSubSpan("subspan", SpanPurpose.LOCAL_ONLY); assertThat(Tracer.getInstance().getCurrentSpan()).isSameAs(subspan); assertThat(subspan.isCompleted()).isFalse(); // when subspan.close(); // then assertThat(subspan.isCompleted()).isTrue(); assertThat(Tracer.getInstance().getCurrentSpan()).isSameAs(parentSpan); }
@Test public void getCurrentManagedStatusForSpan_works_as_expected_for_unmanaged() { // given Span manuallyCreatedSpan = Span.newBuilder("manuallyCreatedSpan", SpanPurpose.LOCAL_ONLY).build(); Span completedSpan = Tracer.getInstance().startRequestWithRootSpan("completedSpan"); Tracer.getInstance().completeRequestSpan(); // when TracerManagedSpanStatus tmssManual = Tracer.getInstance().getCurrentManagedStatusForSpan(manuallyCreatedSpan); TracerManagedSpanStatus tmssCompleted = Tracer.getInstance().getCurrentManagedStatusForSpan(completedSpan); // then assertThat(tmssManual).isEqualTo(TracerManagedSpanStatus.UNMANAGED_SPAN); assertThat(tmssCompleted).isEqualTo(TracerManagedSpanStatus.UNMANAGED_SPAN); }
@Test public void handleSpanCloseMethod_completes_the_span_as_expected_subspan() { // given Span parentSpan = Tracer.getInstance().startRequestWithRootSpan("root"); Span subspan = Tracer.getInstance().startSubSpan("subspan", SpanPurpose.LOCAL_ONLY); assertThat(Tracer.getInstance().getCurrentSpan()).isSameAs(subspan); assertThat(subspan.isCompleted()).isFalse(); // when Tracer.getInstance().handleSpanCloseMethod(subspan); // then assertThat(subspan.isCompleted()).isTrue(); assertThat(Tracer.getInstance().getCurrentSpan()).isSameAs(parentSpan); }
private Pair<Deque<Span>, Map<String, String>> generateTracingInfo() { resetTracing(); Tracer.getInstance().startRequestWithRootSpan("someSpan"); Pair<Deque<Span>, Map<String, String>> result = Pair.of( Tracer.getInstance().getCurrentSpanStackCopy(), new HashMap<>(MDC.getCopyOfContextMap()) ); resetTracing(); return result; }
private Pair<Deque<Span>, Map<String, String>> generateTracingInfo() { resetTracing(); Tracer.getInstance().startRequestWithRootSpan("someSpan"); Pair<Deque<Span>, Map<String, String>> result = Pair.of( Tracer.getInstance().getCurrentSpanStackCopy(), new HashMap<>(MDC.getCopyOfContextMap()) ); resetTracing(); return result; }
private Pair<Deque<Span>, Map<String, String>> generateTracingAndMdcInfo() { resetTracingAndMdc(); Tracer.getInstance().startRequestWithRootSpan("someSpan"); Pair<Deque<Span>, Map<String, String>> result = Pair.of( Tracer.getInstance().getCurrentSpanStackCopy(), new HashMap<>(MDC.getCopyOfContextMap()) ); resetTracingAndMdc(); return result; }
private Pair<Deque<Span>, Map<String, String>> generateTracingInfo() { resetTracing(); Tracer.getInstance().startRequestWithRootSpan("someSpan"); Pair<Deque<Span>, Map<String, String>> result = Pair.of( Tracer.getInstance().getCurrentSpanStackCopy(), (Map<String, String>)new HashMap<>(MDC.getCopyOfContextMap()) ); resetTracing(); return result; }