@Test public void listenableFutureCallbackWithTracing_pair_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = generateTracingInfo(); // when ListenableFutureCallback result = listenableFutureCallbackWithTracing(listenableFutureCallbackMock, setupInfo); // then verifyListenableFutureCallbackWithTracing(result, listenableFutureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@After public void afterMethod() { resetTracing(); }
@Test public void failureCallbackWithTracing_using_current_thread_info_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = setupCurrentThreadWithTracingInfo(); // when FailureCallback result = failureCallbackWithTracing(failureCallbackMock); // then verifyFailureCallbackWithTracing(result, failureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void failureCallbackWithTracing_pair_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = generateTracingInfo(); // when FailureCallback result = failureCallbackWithTracing(failureCallbackMock, setupInfo); // then verifyFailureCallbackWithTracing(result, failureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void successCallbackWithTracing_pair_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = generateTracingInfo(); // when SuccessCallback result = successCallbackWithTracing(successCallbackMock, setupInfo); // then verifySuccessCallbackWithTracing(result, successCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void successCallbackWithTracing_using_current_thread_info_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = setupCurrentThreadWithTracingInfo(); // when SuccessCallback result = successCallbackWithTracing(successCallbackMock); // then verifySuccessCallbackWithTracing(result, successCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void listenableFutureCallbackWithTracing_using_current_thread_info_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = setupCurrentThreadWithTracingInfo(); // when ListenableFutureCallback result = listenableFutureCallbackWithTracing(listenableFutureCallbackMock); // then verifyListenableFutureCallbackWithTracing(result, listenableFutureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void createTracingEnabledRestTemplate_no_args_returns_RestTemplate_with_wingtips_interceptor_added_with_expected_fields() { // when RestTemplate result = WingtipsSpringUtil.createTracingEnabledRestTemplate(); // then assertThat(result.getInterceptors()).hasSize(1); assertThat(result.getInterceptors().get(0)).isInstanceOf(WingtipsClientHttpRequestInterceptor.class); verifyInterceptorFieldValues( result.getInterceptors().get(0), true, ZipkinHttpTagStrategy.getDefaultInstance(), SpringHttpClientTagAdapter.getDefaultInstance() ); }
@Test public void failureCallbackWithTracing_separate_args_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = generateTracingInfo(); // when FailureCallback result = failureCallbackWithTracing( failureCallbackMock, setupInfo.getLeft(), setupInfo.getRight() ); // then verifyFailureCallbackWithTracing(result, failureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void successCallbackWithTracing_separate_args_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = generateTracingInfo(); // when SuccessCallback result = successCallbackWithTracing( successCallbackMock, setupInfo.getLeft(), setupInfo.getRight() ); // then verifySuccessCallbackWithTracing(result, successCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@Test public void createTracingEnabledAsyncRestTemplate_no_args_returns_AsyncRestTemplate_with_wingtips_interceptor_added_with_expected_fields() { // when AsyncRestTemplate result = WingtipsSpringUtil.createTracingEnabledAsyncRestTemplate(); // then assertThat(result.getInterceptors()).hasSize(1); assertThat(result.getInterceptors().get(0)).isInstanceOf(WingtipsAsyncClientHttpRequestInterceptor.class); verifyInterceptorFieldValues( result.getInterceptors().get(0), true, ZipkinHttpTagStrategy.getDefaultInstance(), SpringHttpClientTagAdapter.getDefaultInstance() ); }
@Test public void listenableFutureCallbackWithTracing_separate_args_works_as_expected() { // given Pair<Deque<Span>, Map<String, String>> setupInfo = generateTracingInfo(); // when ListenableFutureCallback result = listenableFutureCallbackWithTracing( listenableFutureCallbackMock, setupInfo.getLeft(), setupInfo.getRight() ); // then verifyListenableFutureCallbackWithTracing(result, listenableFutureCallbackMock, setupInfo.getLeft(), setupInfo.getRight()); }
@DataProvider(value = { "true", "false" }) @Test public void createTracingEnabledRestTemplate_with_tag_and_span_naming_args_returns_RestTemplate_with_wingtips_interceptor_added_with_expected_fields( boolean subspanOptionOn ) { // when RestTemplate result = WingtipsSpringUtil.createTracingEnabledRestTemplate( subspanOptionOn, tagStrategyMock, tagAdapterMock ); // then assertThat(result.getInterceptors()).hasSize(1); assertThat(result.getInterceptors().get(0)).isInstanceOf(WingtipsClientHttpRequestInterceptor.class); verifyInterceptorFieldValues( result.getInterceptors().get(0), subspanOptionOn, tagStrategyMock, tagAdapterMock ); }
@Before public void beforeMethod() { resetTracing(); httpMessageMock = mock(HttpMessage.class); headersMock = mock(HttpHeaders.class); doReturn(headersMock).when(httpMessageMock).getHeaders(); successCallbackMock = mock(SuccessCallback.class); failureCallbackMock = mock(FailureCallback.class); listenableFutureCallbackMock = mock(ListenableFutureCallback.class); tagStrategyMock = mock(HttpTagAndSpanNamingStrategy.class); tagAdapterMock = mock(HttpTagAndSpanNamingAdapter.class); }
@DataProvider(value = { "true", "false" }) @Test public void createTracingEnabledAsyncRestTemplate_with_tag_and_span_naming_args_returns_AsyncRestTemplate_with_wingtips_interceptor_added_with_expected_fields( boolean subspanOptionOn ) { // when AsyncRestTemplate result = WingtipsSpringUtil.createTracingEnabledAsyncRestTemplate( subspanOptionOn, tagStrategyMock, tagAdapterMock ); // then assertThat(result.getInterceptors()).hasSize(1); assertThat(result.getInterceptors().get(0)).isInstanceOf(WingtipsAsyncClientHttpRequestInterceptor.class); verifyInterceptorFieldValues( result.getInterceptors().get(0), subspanOptionOn, tagStrategyMock, tagAdapterMock ); }
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; }
@DataProvider(value = { "true", "false" }) @Test public void createTracingEnabledRestTemplate_single_arg_returns_RestTemplate_with_wingtips_interceptor_added_with_expected_fields( boolean subspanOptionOn ) { // when RestTemplate result = WingtipsSpringUtil.createTracingEnabledRestTemplate(subspanOptionOn); // then assertThat(result.getInterceptors()).hasSize(1); assertThat(result.getInterceptors().get(0)).isInstanceOf(WingtipsClientHttpRequestInterceptor.class); verifyInterceptorFieldValues( result.getInterceptors().get(0), subspanOptionOn, ZipkinHttpTagStrategy.getDefaultInstance(), SpringHttpClientTagAdapter.getDefaultInstance() ); }
private Pair<Deque<Span>, Map<String, String>> setupCurrentThreadWithTracingInfo() { resetTracing(); Tracer.getInstance().startRequestWithRootSpan("request-" + UUID.randomUUID().toString()); return Pair.of(Tracer.getInstance().getCurrentSpanStackCopy(), MDC.getCopyOfContextMap()); }
@DataProvider(value = { "true", "false" }) @Test public void createTracingEnabledAsyncRestTemplate_single_arg_returns_AsyncRestTemplate_with_wingtips_interceptor_added_with_expected_fields( boolean subspanOptionOn ) { // when AsyncRestTemplate result = WingtipsSpringUtil.createTracingEnabledAsyncRestTemplate(subspanOptionOn); // then assertThat(result.getInterceptors()).hasSize(1); assertThat(result.getInterceptors().get(0)).isInstanceOf(WingtipsAsyncClientHttpRequestInterceptor.class); verifyInterceptorFieldValues( result.getInterceptors().get(0), subspanOptionOn, ZipkinHttpTagStrategy.getDefaultInstance(), SpringHttpClientTagAdapter.getDefaultInstance() ); }