/** * @return A new {@link RestTemplate} instance with a {@link WingtipsClientHttpRequestInterceptor} already added * and configured to surround downstream calls with a subspan, and using the default * {@link HttpTagAndSpanNamingStrategy} and {@link HttpTagAndSpanNamingAdapter} ({@link ZipkinHttpTagStrategy} and * {@link SpringHttpClientTagAdapter}). */ public static RestTemplate createTracingEnabledRestTemplate() { return createTracingEnabledRestTemplate(true); }
/** * @return A new {@link AsyncRestTemplate} instance with a {@link WingtipsAsyncClientHttpRequestInterceptor} * already added and configured to surround downstream calls with a subspan, and using the default * {@link HttpTagAndSpanNamingStrategy} and {@link HttpTagAndSpanNamingAdapter} ({@link ZipkinHttpTagStrategy} and * {@link SpringHttpClientTagAdapter}). */ public static AsyncRestTemplate createTracingEnabledAsyncRestTemplate() { return createTracingEnabledAsyncRestTemplate(true); }
public HttpHeadersForPropagation(HttpMessage httpMessage) { this(extractHttpHeaders(httpMessage)); }
@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 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_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 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()); }
@Override public ClientHttpResponse intercept( HttpRequest request, byte[] body, ClientHttpRequestExecution execution ) throws IOException { // We need to wrap the request with HttpRequestWrapperWithModifiableHeaders so that tracing info can be // propagated on the headers. HttpRequestWrapperWithModifiableHeaders wrapperRequest = new HttpRequestWrapperWithModifiableHeaders(request); if (surroundCallsWithSubspan) { return createNewSpanAndExecuteRequest(wrapperRequest, body, execution); } return propagateTracingHeadersAndExecuteRequest(wrapperRequest, body, execution); }
@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()); }
@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()); }
@After public void afterMethod() { resetTracing(); }
@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 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()); }
@Override public ClientHttpResponse intercept( HttpRequest request, byte[] body, ClientHttpRequestExecution execution ) throws IOException { // We need to wrap the request with HttpRequestWrapperWithModifiableHeaders so that tracing info can be // propagated on the headers. HttpRequestWrapperWithModifiableHeaders wrapperRequest = new HttpRequestWrapperWithModifiableHeaders(request); if (surroundCallsWithSubspan) { return createNewSpanAndExecuteRequest(wrapperRequest, body, execution); } return propagateTracingHeadersAndExecuteRequest(wrapperRequest, body, execution); }
/** * @return A new {@link RestTemplate} instance with a {@link WingtipsClientHttpRequestInterceptor} already added * and configured to surround downstream calls with a subspan, and using the default * {@link HttpTagAndSpanNamingStrategy} and {@link HttpTagAndSpanNamingAdapter} ({@link ZipkinHttpTagStrategy} and * {@link SpringHttpClientTagAdapter}). */ public static RestTemplate createTracingEnabledRestTemplate() { return createTracingEnabledRestTemplate(true); }
/** * @return A new {@link AsyncRestTemplate} instance with a {@link WingtipsAsyncClientHttpRequestInterceptor} * already added and configured to surround downstream calls with a subspan, and using the default * {@link HttpTagAndSpanNamingStrategy} and {@link HttpTagAndSpanNamingAdapter} ({@link ZipkinHttpTagStrategy} and * {@link SpringHttpClientTagAdapter}). */ public static AsyncRestTemplate createTracingEnabledAsyncRestTemplate() { return createTracingEnabledAsyncRestTemplate(true); }
@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()); }
public HttpHeadersForPropagation(HttpMessage httpMessage) { this(extractHttpHeaders(httpMessage)); }
@Override @SuppressWarnings("deprecation") public ListenableFuture<ClientHttpResponse> intercept( HttpRequest request, byte[] body, AsyncClientHttpRequestExecution execution ) throws IOException { // We need to wrap the request with HttpRequestWrapperWithModifiableHeaders so that tracing info can be // propagated on the headers. HttpRequestWrapperWithModifiableHeaders wrapperRequest = new HttpRequestWrapperWithModifiableHeaders(request); if (surroundCallsWithSubspan) { return createAsyncSubSpanAndExecute(wrapperRequest, body, execution); } return propagateTracingHeadersAndExecute(wrapperRequest, body, execution); }
@Override @SuppressWarnings("deprecation") public ListenableFuture<ClientHttpResponse> intercept( HttpRequest request, byte[] body, AsyncClientHttpRequestExecution execution ) throws IOException { // We need to wrap the request with HttpRequestWrapperWithModifiableHeaders so that tracing info can be // propagated on the headers. HttpRequestWrapperWithModifiableHeaders wrapperRequest = new HttpRequestWrapperWithModifiableHeaders(request); if (surroundCallsWithSubspan) { return createAsyncSubSpanAndExecute(wrapperRequest, body, execution); } return propagateTracingHeadersAndExecute(wrapperRequest, body, execution); }