protected void completeCurrentSpan() { Tracer.getInstance().completeRequestSpan(); }
protected void completeCurrentSpan() { Tracer.getInstance().completeRequestSpan(); }
@Override public void run() { Span span = Tracer.getInstance().getCurrentSpan(); try { // Handle response/error tagging and final span name. tagAndNamingStrategy.handleResponseTaggingAndFinalSpanName( span, httpRequest, httpResponse, error, tagAndNamingAdapter ); } finally { // Complete the overall request span. Tracer.getInstance().completeRequestSpan(); } } },
private void resetTracingAndMdc() { MDC.clear(); Tracer.getInstance().completeRequestSpan(); }
private void resetTracingAndMdc() { MDC.clear(); Tracer.getInstance().completeRequestSpan(); }
private void resetTracingAndMdc() { MDC.clear(); Tracer.getInstance().completeRequestSpan(); }
private void resetTracingAndMdc() { MDC.clear(); Tracer.getInstance().completeRequestSpan(); }
Tracer.getInstance().completeRequestSpan();
@Test public void doChannelInactive_does_not_try_to_recomplete_span_if_already_completed() throws Exception { // given Span span = setupTracingForChannelInactive(false); Deque<Span> deque = new LinkedList<>(); deque.add(span); Tracer.getInstance().registerWithThread(deque); Tracer.getInstance().completeRequestSpan(); Assertions.assertThat(span.isCompleted()).isTrue(); long durationNanosBefore = span.getDurationNanos(); // when PipelineContinuationBehavior result = handler.doChannelInactive(ctxMock); // then Assertions.assertThat(span.isCompleted()).isTrue(); // no change Assertions.assertThat(span.getDurationNanos()).isEqualTo(durationNanosBefore); verify(requestInfoMock).releaseAllResources(); verify(proxyRouterStateMock).cancelRequestStreaming(any(), any()); verify(proxyRouterStateMock).cancelDownstreamRequest(any()); Assertions.assertThat(result).isEqualTo(PipelineContinuationBehavior.CONTINUE); }
@Test public void spanLifecycleListener_spanCompleted_is_not_called_when_request_span_was_completed_already() { // given SpanLifecycleListener listener1 = mock(SpanLifecycleListener.class); SpanLifecycleListener listener2 = mock(SpanLifecycleListener.class); Tracer tracer = Tracer.getInstance(); tracer.addSpanLifecycleListener(listener1); tracer.addSpanLifecycleListener(listener2); Span span = tracer.startRequestWithRootSpan("newspan"); span.complete(); verify(listener1).spanStarted(span); verify(listener1, times(0)).spanCompleted(span); verify(listener2).spanStarted(span); verify(listener2, times(0)).spanCompleted(span); // when tracer.completeRequestSpan(); // then verify(listener1, never()).spanCompleted(span); verify(listener2, never()).spanCompleted(span); }
@Test public void spanLifecycleListener_spanCompleted_is_called_when_request_span_is_completed() { // given SpanLifecycleListener listener1 = mock(SpanLifecycleListener.class); SpanLifecycleListener listener2 = mock(SpanLifecycleListener.class); Tracer tracer = Tracer.getInstance(); tracer.addSpanLifecycleListener(listener1); tracer.addSpanLifecycleListener(listener2); Span span = tracer.startRequestWithRootSpan("newspan"); verify(listener1).spanStarted(span); verify(listener1, times(0)).spanCompleted(span); verify(listener2).spanStarted(span); verify(listener2, times(0)).spanCompleted(span); // when tracer.completeRequestSpan(); // then verify(listener1).spanCompleted(span); verify(listener2).spanCompleted(span); }
@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); }
@Test public void completeRequestSpan_should_complete_the_span() { // given: an already-started span Tracer.getInstance().startRequestWithRootSpan("somespan"); Span span = Tracer.getInstance().getCurrentSpan(); assertThat(span.getSpanName()).isEqualTo("somespan"); assertThat(getSpanStackSize()).isEqualTo(1); assertThat(span.isCompleted()).isFalse(); // when: completeRequestSpan() is called long beforeNanoTime = System.nanoTime(); Tracer.getInstance().completeRequestSpan(); long afterNanoTime = System.nanoTime(); // then: the span should be completed, the stack emptied, and the MDC unconfigured assertThat(span.isCompleted()).isTrue(); verifyDurationBetweenLowerAndUpperBounds(span, beforeNanoTime, afterNanoTime); assertThat(Tracer.getInstance().getCurrentSpan()).isNull(); assertThat(getSpanStackSize()).isEqualTo(0); assertThat(MDC.get(Tracer.TRACE_ID_MDC_KEY)).isNull(); assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNull(); }
@Test public void starting_request_span_should_configure_MDC_and_completing_it_should_unset_MDC() throws Exception { // given Tracer tracer = Tracer.getInstance(); // when tracer.startRequestWithRootSpan("test-span"); // then assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNotNull(); // and when tracer.completeRequestSpan(); // then assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNull(); }
@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 completeRequestSpan_should_do_nothing_if_there_is_no_span_to_complete() { // given: no span started assertThat(Tracer.getInstance().getCurrentSpan()).isNull(); assertThat(MDC.get(Tracer.TRACE_ID_MDC_KEY)).isNull(); assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNull(); assertThat(getSpanStackSize()).isEqualTo(0); // when: completeRequestSpan() is called Tracer.getInstance().completeRequestSpan(); // then: nothing should be done assertThat(Tracer.getInstance().getCurrentSpan()).isNull(); assertThat(MDC.get(Tracer.TRACE_ID_MDC_KEY)).isNull(); assertThat(MDC.get(Tracer.SPAN_JSON_MDC_KEY)).isNull(); assertThat(getSpanStackSize()).isEqualTo(0); }
Tracer.getInstance().completeRequestSpan(); long afterNanoTime = System.nanoTime();
Tracer.getInstance().completeRequestSpan();
private void resetTracer() { Tracer.getInstance().completeRequestSpan(); Tracer.getInstance().setRootSpanSamplingStrategy(new SampleAllTheThingsStrategy()); for (SpanLifecycleListener listener : new ArrayList<>(Tracer.getInstance().getSpanLifecycleListeners())) { Tracer.getInstance().removeSpanLifecycleListener(listener); } Tracer.getInstance().setSpanLoggingRepresentation(Tracer.SpanLoggingRepresentation.JSON); }
Tracer.getInstance().completeRequestSpan();