use of com.nike.wingtips.Span in project riposte by Nike-Inc.
the class RiposteHandlerInternalUtilTest method determineOverallRequestSpanName_works_as_expected.
@UseDataProvider("determineOverallRequestSpanNameScenarioDataProvider")
@Test
public void determineOverallRequestSpanName_works_as_expected(DetermineSpanNameScenario scenario) {
// given
ServerSpanNamingAndTaggingStrategy<Span> namingStrategy = new DummyServerSpanNamingAndTaggingStrategy(scenario.strategySpanName);
doReturn(scenario.fallbackSpanName).when(implSpy).determineFallbackOverallRequestSpanName(any());
RequestInfo<?> requestInfoMock = mock(RequestInfo.class);
if (scenario.riposteRequestInfoIsNull) {
requestInfoMock = null;
}
HttpRequest httpRequest = new DefaultHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/some/uri");
String expectedResult = (scenario.expectStrategyResult) ? scenario.strategySpanName : scenario.fallbackSpanName;
// when
String result = implSpy.determineOverallRequestSpanName(httpRequest, requestInfoMock, namingStrategy);
// then
Assertions.assertThat(result).isEqualTo(expectedResult);
if (scenario.expectStrategyResult) {
verify(implSpy, never()).determineFallbackOverallRequestSpanName(any());
} else {
verify(implSpy).determineFallbackOverallRequestSpanName(httpRequest);
}
}
use of com.nike.wingtips.Span in project riposte by Nike-Inc.
the class RiposteHandlerInternalUtilTest method getOverallRequestSpan_works_as_expected.
@DataProvider(value = { "true", "false" })
@Test
public void getOverallRequestSpan_works_as_expected(boolean stateIsNull) {
// given
Span stateOverallRequestSpanMock = mock(Span.class);
HttpProcessingState stateMock = (stateIsNull) ? null : mock(HttpProcessingState.class);
if (!stateIsNull) {
doReturn(stateOverallRequestSpanMock).when(stateMock).getOverallRequestSpan();
}
// when
Span result = implSpy.getOverallRequestSpan(stateMock);
// then
if (stateIsNull) {
assertThat(result).isNull();
} else {
assertThat(result).isSameAs(stateOverallRequestSpanMock);
verify(stateMock).getOverallRequestSpan();
}
}
use of com.nike.wingtips.Span in project riposte by Nike-Inc.
the class ServerTest method getOrGenerateWingtipsDistributedTracingConfig_works_as_expected_for_wingtips_span_type.
@DataProvider(value = { "true", "false" })
@Test
public void getOrGenerateWingtipsDistributedTracingConfig_works_as_expected_for_wingtips_span_type(boolean nullDtConfig) {
// given
DistributedTracingConfig<Span> dtConfig = (nullDtConfig) ? null : new DistributedTracingConfigImpl<>(mock(ServerSpanNamingAndTaggingStrategy.class), mock(ProxyRouterSpanNamingAndTaggingStrategy.class), Span.class);
DistributedTracingConfig<Span> expectedResult = (dtConfig == null) ? DefaultRiposteDistributedTracingConfigImpl.getDefaultInstance() : dtConfig;
ServerConfig serverConfigMock = mock(ServerConfig.class);
doReturn(dtConfig).when(serverConfigMock).distributedTracingConfig();
Server server = new Server(serverConfigMock);
// when
DistributedTracingConfig<Span> result = server.getOrGenerateWingtipsDistributedTracingConfig(serverConfigMock);
// then
assertThat(result).isSameAs(expectedResult);
verify(serverConfigMock).distributedTracingConfig();
}
use of com.nike.wingtips.Span in project riposte by Nike-Inc.
the class HttpChannelInitializerTest method initChannel_adds_NonblockingEndpointExecutionHandler_after_RoutingHandler_and_RequestContentDeserializerHandler_and_RequestContentValidationHandler_and_uses_longRunningTaskExecutor_and_defaultCompletableFutureTimeoutMillis.
@Test
public void initChannel_adds_NonblockingEndpointExecutionHandler_after_RoutingHandler_and_RequestContentDeserializerHandler_and_RequestContentValidationHandler_and_uses_longRunningTaskExecutor_and_defaultCompletableFutureTimeoutMillis() {
// given
HttpChannelInitializer hci = basicHttpChannelInitializerNoUtilityHandlers();
Whitebox.setInternalState(hci, "validationService", mock(RequestValidator.class));
Executor expectedLongRunningTaskExecutor = extractField(hci, "longRunningTaskExecutor");
long expectedDefaultCompletableFutureTimeoutMillis = extractField(hci, "defaultCompletableFutureTimeoutMillis");
DistributedTracingConfig<Span> distributedTracingConfigMock = mock(DistributedTracingConfig.class);
ServerSpanNamingAndTaggingStrategy<Span> expectedServerSpanNamingAndTaggingStrategy = mock(ServerSpanNamingAndTaggingStrategy.class);
Whitebox.setInternalState(hci, "distributedTracingConfig", distributedTracingConfigMock);
doReturn(expectedServerSpanNamingAndTaggingStrategy).when(distributedTracingConfigMock).getServerSpanNamingAndTaggingStrategy();
// when
hci.initChannel(socketChannelMock);
// then
ArgumentCaptor<ChannelHandler> channelHandlerArgumentCaptor = ArgumentCaptor.forClass(ChannelHandler.class);
verify(channelPipelineMock, atLeastOnce()).addLast(anyString(), channelHandlerArgumentCaptor.capture());
List<ChannelHandler> handlers = channelHandlerArgumentCaptor.getAllValues();
Pair<Integer, RoutingHandler> routingHandler = findChannelHandler(handlers, RoutingHandler.class);
Pair<Integer, RequestContentDeserializerHandler> requestContentDeserializerHandler = findChannelHandler(handlers, RequestContentDeserializerHandler.class);
Pair<Integer, RequestContentValidationHandler> requestContentValidationHandler = findChannelHandler(handlers, RequestContentValidationHandler.class);
Pair<Integer, NonblockingEndpointExecutionHandler> nonblockingEndpointExecutionHandler = findChannelHandler(handlers, NonblockingEndpointExecutionHandler.class);
assertThat(routingHandler, notNullValue());
assertThat(requestContentDeserializerHandler, notNullValue());
assertThat(requestContentValidationHandler, notNullValue());
assertThat(nonblockingEndpointExecutionHandler, notNullValue());
assertThat(nonblockingEndpointExecutionHandler.getLeft(), is(greaterThan(routingHandler.getLeft())));
assertThat(nonblockingEndpointExecutionHandler.getLeft(), is(greaterThan(requestContentDeserializerHandler.getLeft())));
assertThat(nonblockingEndpointExecutionHandler.getLeft(), is(greaterThan(requestContentValidationHandler.getLeft())));
// and then
Executor actualLongRunningTaskExecutor = (Executor) Whitebox.getInternalState(nonblockingEndpointExecutionHandler.getRight(), "longRunningTaskExecutor");
long actualDefaultCompletableFutureTimeoutMillis = (long) Whitebox.getInternalState(nonblockingEndpointExecutionHandler.getRight(), "defaultCompletableFutureTimeoutMillis");
ServerSpanNamingAndTaggingStrategy<Span> actualTaggingStrategy = (ServerSpanNamingAndTaggingStrategy<Span>) Whitebox.getInternalState(nonblockingEndpointExecutionHandler.getRight(), "spanTaggingStrategy");
assertThat(actualLongRunningTaskExecutor, is(expectedLongRunningTaskExecutor));
assertThat(actualDefaultCompletableFutureTimeoutMillis, is(expectedDefaultCompletableFutureTimeoutMillis));
assertThat(actualTaggingStrategy, is(expectedServerSpanNamingAndTaggingStrategy));
}
use of com.nike.wingtips.Span in project riposte by Nike-Inc.
the class HttpChannelInitializerTest method initChannel_adds_RequestStateCleanerHandler_immediately_after_HttpServerCodec_and_ProcessFinalResponseOutputHandler.
@Test
public void initChannel_adds_RequestStateCleanerHandler_immediately_after_HttpServerCodec_and_ProcessFinalResponseOutputHandler() {
// given
HttpChannelInitializer hci = basicHttpChannelInitializerNoUtilityHandlers();
MetricsListener expectedMetricsListener = mock(MetricsListener.class);
long expectedIncompleteCallTimeoutMillis = 424242;
DistributedTracingConfig<Span> distributedTracingConfigMock = mock(DistributedTracingConfig.class);
Whitebox.setInternalState(hci, "metricsListener", expectedMetricsListener);
Whitebox.setInternalState(hci, "incompleteHttpCallTimeoutMillis", expectedIncompleteCallTimeoutMillis);
Whitebox.setInternalState(hci, "distributedTracingConfig", distributedTracingConfigMock);
// when
hci.initChannel(socketChannelMock);
// then
ArgumentCaptor<ChannelHandler> channelHandlerArgumentCaptor = ArgumentCaptor.forClass(ChannelHandler.class);
verify(channelPipelineMock, atLeastOnce()).addLast(anyString(), channelHandlerArgumentCaptor.capture());
List<ChannelHandler> handlers = channelHandlerArgumentCaptor.getAllValues();
Pair<Integer, HttpServerCodec> httpServerCodecHandler = findChannelHandler(handlers, HttpServerCodec.class);
Pair<Integer, ProcessFinalResponseOutputHandler> processFinalResponseOutputHandler = findChannelHandler(handlers, ProcessFinalResponseOutputHandler.class);
Pair<Integer, RequestStateCleanerHandler> requestStateCleanerHandler = findChannelHandler(handlers, RequestStateCleanerHandler.class);
assertThat(httpServerCodecHandler, notNullValue());
assertThat(processFinalResponseOutputHandler, notNullValue());
assertThat(requestStateCleanerHandler, notNullValue());
assertThat(processFinalResponseOutputHandler.getLeft(), is(httpServerCodecHandler.getLeft() + 1));
assertThat(requestStateCleanerHandler.getLeft(), is(httpServerCodecHandler.getLeft() + 2));
RequestStateCleanerHandler handler = requestStateCleanerHandler.getRight();
assertThat(Whitebox.getInternalState(handler, "metricsListener"), is(expectedMetricsListener));
assertThat(Whitebox.getInternalState(handler, "incompleteHttpCallTimeoutMillis"), is(expectedIncompleteCallTimeoutMillis));
assertThat(Whitebox.getInternalState(handler, "distributedTracingConfig"), is(distributedTracingConfigMock));
}
Aggregations