public StreamingAsyncHttpClient( long idleChannelTimeoutMillis, long downstreamConnectionTimeoutMillis, boolean debugChannelLifecycleLoggingEnabled, @NotNull DistributedTracingConfig<Span> distributedTracingConfig ) { this.idleChannelTimeoutMillis = idleChannelTimeoutMillis; this.downstreamConnectionTimeoutMillis = Math.toIntExact(downstreamConnectionTimeoutMillis); this.debugChannelLifecycleLoggingEnabled = debugChannelLifecycleLoggingEnabled; this.proxySpanTaggingStrategy = distributedTracingConfig.getProxyRouterSpanNamingAndTaggingStrategy(); }
public StreamingAsyncHttpClient( long idleChannelTimeoutMillis, long downstreamConnectionTimeoutMillis, boolean debugChannelLifecycleLoggingEnabled, @NotNull DistributedTracingConfig<Span> distributedTracingConfig ) { this.idleChannelTimeoutMillis = idleChannelTimeoutMillis; this.downstreamConnectionTimeoutMillis = Math.toIntExact(downstreamConnectionTimeoutMillis); this.debugChannelLifecycleLoggingEnabled = debugChannelLifecycleLoggingEnabled; this.proxySpanTaggingStrategy = distributedTracingConfig.getProxyRouterSpanNamingAndTaggingStrategy(); }
public void handleTracingResponseTaggingAndFinalSpanNameIfNotAlreadyDone(Span spanAroundProxyCall) { if ( tracingResponseTaggingAndFinalSpanNameCompleted || (distributedTracingConfig == null) || (spanAroundProxyCall == null) ) { return; } tracingResponseTaggingAndFinalSpanNameCompleted = true; try { distributedTracingConfig .getProxyRouterSpanNamingAndTaggingStrategy() .handleResponseTaggingAndFinalSpanName( spanAroundProxyCall, getProxyHttpRequest(), getProxyHttpResponse(), getProxyError() ); } catch (Throwable t) { logger.error( "Unexpected error occurred while trying to set final span name and proxy response tagging. This " + "exception will be ignored, but should be investigated - it should not happen.", t ); } } }
public void handleTracingResponseTaggingAndFinalSpanNameIfNotAlreadyDone(Span spanAroundProxyCall) { if ( tracingResponseTaggingAndFinalSpanNameCompleted || (distributedTracingConfig == null) || (spanAroundProxyCall == null) ) { return; } tracingResponseTaggingAndFinalSpanNameCompleted = true; try { distributedTracingConfig .getProxyRouterSpanNamingAndTaggingStrategy() .handleResponseTaggingAndFinalSpanName( spanAroundProxyCall, getProxyHttpRequest(), getProxyHttpResponse(), getProxyError() ); } catch (Throwable t) { logger.error( "Unexpected error occurred while trying to set final span name and proxy response tagging. This " + "exception will be ignored, but should be investigated - it should not happen.", t ); } } }
@Before public void beforeMethod() { stateSpy = spy(new ProxyRouterProcessingState()); initialSpanNameFromStrategy = new AtomicReference<>("span-name-from-strategy-" + UUID.randomUUID().toString()); strategyInitialSpanNameMethodCalled = new AtomicBoolean(false); strategyRequestTaggingMethodCalled = new AtomicBoolean(false); strategyResponseTaggingAndFinalSpanNameMethodCalled = new AtomicBoolean(false); strategyInitialSpanNameArgs = new AtomicReference<>(null); strategyRequestTaggingArgs = new AtomicReference<>(null); strategyResponseTaggingArgs = new AtomicReference<>(null); wingtipsStrategy = new ArgCapturingHttpTagAndSpanNamingStrategy<>( initialSpanNameFromStrategy, strategyInitialSpanNameMethodCalled, strategyRequestTaggingMethodCalled, strategyResponseTaggingAndFinalSpanNameMethodCalled, strategyInitialSpanNameArgs, strategyRequestTaggingArgs, strategyResponseTaggingArgs ); wingtipsAdapterMock = mock(HttpTagAndSpanNamingAdapter.class); proxyTaggingStrategy = new DefaultRiposteProxyRouterSpanNamingAndTaggingStrategy(wingtipsStrategy, wingtipsAdapterMock); requestMock = mock(HttpRequest.class); responseMock = mock(HttpResponse.class); errorMock = mock(Throwable.class); spanMock = mock(Span.class); distributedTracingConfigMock = mock(DistributedTracingConfig.class); doReturn(proxyTaggingStrategy).when(distributedTracingConfigMock).getProxyRouterSpanNamingAndTaggingStrategy(); }
@Test public void handleTracingResponseTaggingAndFinalSpanNameIfNotAlreadyDone_does_not_propagate_unexpected_exception() { // given doThrow(new RuntimeException("intentional exception")).when(distributedTracingConfigMock) .getProxyRouterSpanNamingAndTaggingStrategy(); stateSpy.setDistributedTracingConfig(distributedTracingConfigMock); stateSpy.setProxyHttpRequest(requestMock); stateSpy.setProxyHttpResponse(responseMock); assertThat(stateSpy.isTracingResponseTaggingAndFinalSpanNameCompleted()).isFalse(); // when Throwable ex = catchThrowable(() -> stateSpy.handleTracingResponseTaggingAndFinalSpanNameIfNotAlreadyDone( mock(Span.class) )); // then assertThat(ex).isNull(); verify(distributedTracingConfigMock).getProxyRouterSpanNamingAndTaggingStrategy(); assertThat(stateSpy.isTracingResponseTaggingAndFinalSpanNameCompleted()).isTrue(); } }
mock(ProxyRouterSpanNamingAndTaggingStrategy.class); doReturn(proxySpanTaggingStrategyMock).when(distributedTracingConfig) .getProxyRouterSpanNamingAndTaggingStrategy();