Removed sending the tracing information back in the response (#329)
fixes #327
This commit is contained in:
@@ -1,44 +0,0 @@
|
||||
/*
|
||||
* Copyright 2013-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.cloud.sleuth.instrument.web;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.cloud.sleuth.Span;
|
||||
import org.springframework.cloud.sleuth.SpanInjector;
|
||||
|
||||
/**
|
||||
* Span injector that injects tracing info to {@link HttpServletResponse}
|
||||
*
|
||||
* @author Marcin Grzejszczak
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
class HttpServletResponseInjector implements SpanInjector<HttpServletResponse> {
|
||||
|
||||
@Override
|
||||
public void inject(Span span, HttpServletResponse carrier) {
|
||||
if (span == null) {
|
||||
return;
|
||||
}
|
||||
if (!carrier.containsHeader(Span.SPAN_ID_NAME)) {
|
||||
carrier.addHeader(Span.SPAN_ID_NAME, Span.idToHex(span.getSpanId()));
|
||||
carrier.addHeader(Span.TRACE_ID_NAME, Span.idToHex(span.getTraceId()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,7 +32,6 @@ import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.cloud.sleuth.Span;
|
||||
import org.springframework.cloud.sleuth.SpanExtractor;
|
||||
import org.springframework.cloud.sleuth.SpanInjector;
|
||||
import org.springframework.cloud.sleuth.SpanReporter;
|
||||
import org.springframework.cloud.sleuth.TraceKeys;
|
||||
import org.springframework.cloud.sleuth.Tracer;
|
||||
@@ -45,8 +44,6 @@ import org.springframework.web.context.request.async.WebAsyncUtils;
|
||||
import org.springframework.web.filter.GenericFilterBean;
|
||||
import org.springframework.web.util.UrlPathHelper;
|
||||
|
||||
import static org.springframework.util.StringUtils.hasText;
|
||||
|
||||
/**
|
||||
* Filter that takes the value of the {@link Span#SPAN_ID_NAME} and
|
||||
* {@link Span#TRACE_ID_NAME} header from either request or response and uses them to
|
||||
@@ -89,29 +86,25 @@ public class TraceFilter extends GenericFilterBean {
|
||||
private final Pattern skipPattern;
|
||||
private final SpanReporter spanReporter;
|
||||
private final SpanExtractor<HttpServletRequest> spanExtractor;
|
||||
private final SpanInjector<HttpServletResponse> spanInjector;
|
||||
private final HttpTraceKeysInjector httpTraceKeysInjector;
|
||||
|
||||
private UrlPathHelper urlPathHelper = new UrlPathHelper();
|
||||
|
||||
public TraceFilter(Tracer tracer, TraceKeys traceKeys, SpanReporter spanReporter,
|
||||
SpanExtractor<HttpServletRequest> spanExtractor,
|
||||
SpanInjector<HttpServletResponse> spanInjector,
|
||||
HttpTraceKeysInjector httpTraceKeysInjector) {
|
||||
this(tracer, traceKeys, Pattern.compile(DEFAULT_SKIP_PATTERN), spanReporter,
|
||||
spanExtractor, spanInjector, httpTraceKeysInjector);
|
||||
spanExtractor, httpTraceKeysInjector);
|
||||
}
|
||||
|
||||
public TraceFilter(Tracer tracer, TraceKeys traceKeys, Pattern skipPattern,
|
||||
SpanReporter spanReporter, SpanExtractor<HttpServletRequest> spanExtractor,
|
||||
SpanInjector<HttpServletResponse> spanInjector,
|
||||
HttpTraceKeysInjector httpTraceKeysInjector) {
|
||||
this.tracer = tracer;
|
||||
this.traceKeys = traceKeys;
|
||||
this.skipPattern = skipPattern;
|
||||
this.spanReporter = spanReporter;
|
||||
this.spanExtractor = spanExtractor;
|
||||
this.spanInjector = spanInjector;
|
||||
this.httpTraceKeysInjector = httpTraceKeysInjector;
|
||||
}
|
||||
|
||||
@@ -138,7 +131,6 @@ public class TraceFilter extends GenericFilterBean {
|
||||
processErrorRequest(filterChain, request, response, spanFromRequest);
|
||||
return;
|
||||
}
|
||||
addToResponseIfNotPresent(response, Span.SAMPLED_NAME, skip ? Span.SPAN_NOT_SAMPLED : Span.SPAN_SAMPLED);
|
||||
String name = HTTP_COMPONENT + ":" + uri;
|
||||
try {
|
||||
spanFromRequest = createSpan(request, skip, spanFromRequest, name);
|
||||
@@ -150,9 +142,6 @@ public class TraceFilter extends GenericFilterBean {
|
||||
}
|
||||
Throwable exception = null;
|
||||
try {
|
||||
this.spanInjector.inject(spanFromRequest, response);
|
||||
// Add headers before filter chain in case one of the filters flushes the
|
||||
// response...
|
||||
filterChain.doFilter(request, response);
|
||||
} catch (Throwable e) {
|
||||
exception = e;
|
||||
@@ -166,7 +155,6 @@ public class TraceFilter extends GenericFilterBean {
|
||||
return;
|
||||
}
|
||||
spanFromRequest = createSpanIfRequestNotHandled(request, spanFromRequest, name, skip);
|
||||
addToResponseIfNotPresent(response, Span.SAMPLED_NAME, skip ? Span.SPAN_NOT_SAMPLED : Span.SPAN_SAMPLED);
|
||||
detachOrCloseSpans(request, response, spanFromRequest, exception);
|
||||
}
|
||||
}
|
||||
@@ -364,13 +352,6 @@ public class TraceFilter extends GenericFilterBean {
|
||||
}
|
||||
}
|
||||
|
||||
private void addToResponseIfNotPresent(HttpServletResponse response, String name,
|
||||
String value) {
|
||||
if (!hasText(response.getHeader(name))) {
|
||||
response.addHeader(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isAsyncStarted(HttpServletRequest request) {
|
||||
return WebAsyncUtils.getAsyncManager(request).isConcurrentHandlingStarted();
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
package org.springframework.cloud.sleuth.instrument.web;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
@@ -32,7 +31,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplicat
|
||||
import org.springframework.boot.context.embedded.FilterRegistrationBean;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.cloud.sleuth.SpanExtractor;
|
||||
import org.springframework.cloud.sleuth.SpanInjector;
|
||||
import org.springframework.cloud.sleuth.SpanNamer;
|
||||
import org.springframework.cloud.sleuth.SpanReporter;
|
||||
import org.springframework.cloud.sleuth.TraceKeys;
|
||||
@@ -89,7 +87,6 @@ public class TraceWebAutoConfiguration {
|
||||
public FilterRegistrationBean traceWebFilter(Tracer tracer, TraceKeys traceKeys,
|
||||
SkipPatternProvider skipPatternProvider, SpanReporter spanReporter,
|
||||
SpanExtractor<HttpServletRequest> spanExtractor,
|
||||
SpanInjector<HttpServletResponse> spanInjector,
|
||||
HttpTraceKeysInjector httpTraceKeysInjector, TraceFilter traceFilter) {
|
||||
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(traceFilter);
|
||||
filterRegistrationBean.setDispatcherTypes(ASYNC, ERROR, FORWARD, INCLUDE, REQUEST);
|
||||
@@ -100,10 +97,9 @@ public class TraceWebAutoConfiguration {
|
||||
public TraceFilter traceFilter(Tracer tracer, TraceKeys traceKeys,
|
||||
SkipPatternProvider skipPatternProvider, SpanReporter spanReporter,
|
||||
SpanExtractor<HttpServletRequest> spanExtractor,
|
||||
SpanInjector<HttpServletResponse> spanInjector,
|
||||
HttpTraceKeysInjector httpTraceKeysInjector) {
|
||||
return new TraceFilter(tracer, traceKeys, skipPatternProvider.skipPattern(),
|
||||
spanReporter, spanExtractor, spanInjector, httpTraceKeysInjector);
|
||||
spanReporter, spanExtractor, httpTraceKeysInjector);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@@ -112,11 +108,6 @@ public class TraceWebAutoConfiguration {
|
||||
return new HttpServletRequestExtractor(skipPatternProvider.skipPattern());
|
||||
}
|
||||
|
||||
@Bean
|
||||
public SpanInjector<HttpServletResponse> httpServletResponseSpanInjector() {
|
||||
return new HttpServletResponseInjector();
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnClass(ManagementServerProperties.class)
|
||||
@ConditionalOnMissingBean(SkipPatternProvider.class)
|
||||
|
||||
@@ -42,7 +42,6 @@ public class TraceFilterAlwaysSamplerIntegrationTests extends AbstractMvcIntegra
|
||||
|
||||
MvcResult mvcResult = whenSentPingWithTraceId(expectedTraceId);
|
||||
|
||||
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
|
||||
then(span.isExportable());
|
||||
}
|
||||
|
||||
@@ -52,14 +51,13 @@ public class TraceFilterAlwaysSamplerIntegrationTests extends AbstractMvcIntegra
|
||||
|
||||
MvcResult mvcResult = whenSentPingWithTraceIdAndNotSampling(expectedTraceId);
|
||||
|
||||
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
|
||||
then(span.isExportable()).isFalse();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configureMockMvcBuilder(DefaultMockMvcBuilder mockMvcBuilder) {
|
||||
mockMvcBuilder.addFilters(new TraceFilter(this.tracer, this.traceKeys,
|
||||
new NoOpSpanReporter(), this.spanExtractor, this.spanInjector,
|
||||
new NoOpSpanReporter(), this.spanExtractor,
|
||||
this.httpTraceKeysInjector));
|
||||
}
|
||||
|
||||
@@ -87,10 +85,6 @@ public class TraceFilterAlwaysSamplerIntegrationTests extends AbstractMvcIntegra
|
||||
return this.mockMvc.perform(request).andReturn();
|
||||
}
|
||||
|
||||
private Long tracingHeaderFrom(MvcResult mvcResult) {
|
||||
return Span.hexToId(mvcResult.getResponse().getHeader(Span.TRACE_ID_NAME));
|
||||
}
|
||||
|
||||
@DefaultTestAutoConfiguration
|
||||
@RestController
|
||||
@Configuration
|
||||
|
||||
@@ -19,7 +19,6 @@ package org.springframework.cloud.sleuth.instrument.web;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.net.URI;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
@@ -84,20 +83,16 @@ public class TraceFilterCustomExtractorTests {
|
||||
.header("mySpanId", Span.idToHex(spanId)).build();
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
ResponseEntity<Map> requestHeaders = this.restTemplate.exchange(requestEntity,
|
||||
ResponseEntity<Map> responseHeaders = this.restTemplate.exchange(requestEntity,
|
||||
Map.class);
|
||||
|
||||
await().until(() -> then(this.accumulator.getSpans().stream().filter(
|
||||
span -> span.getSpanId() == spanId).findFirst().get())
|
||||
.hasTraceIdEqualTo(traceId));
|
||||
then(requestHeaders.getBody())
|
||||
then(responseHeaders.getBody())
|
||||
.containsEntry("correlationid", Span.idToHex(traceId))
|
||||
.containsEntry("myspanid", Span.idToHex(spanId))
|
||||
.as("input request headers");
|
||||
then(requestHeaders.getHeaders())
|
||||
.containsEntry("correlationId",
|
||||
Collections.singletonList(Span.idToHex(traceId)))
|
||||
.containsKey("mySpanId").as("response headers");
|
||||
}
|
||||
|
||||
@Configuration
|
||||
|
||||
@@ -59,9 +59,8 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
|
||||
|
||||
@Test
|
||||
public void should_create_and_return_trace_in_HTTP_header() throws Exception {
|
||||
MvcResult mvcResult = whenSentPingWithoutTracingData();
|
||||
whenSentPingWithoutTracingData();
|
||||
|
||||
then(tracingHeaderFrom(mvcResult)).isNotNull();
|
||||
Span parentSpan = this.spanAccumulator.getSpans().stream().filter(
|
||||
span -> span.getSpanId() == TraceFilterIntegrationTests.span.getParents().get(0))
|
||||
.findFirst().get();
|
||||
@@ -75,7 +74,9 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
|
||||
throws Exception {
|
||||
MvcResult mvcResult = whenSentInfoWithTraceId(new Random().nextLong());
|
||||
|
||||
then(notSampledHeaderIsPresent(mvcResult)).isEqualTo(true);
|
||||
// https://github.com/spring-cloud/spring-cloud-sleuth/issues/327
|
||||
// we don't want to respond with any tracing data
|
||||
then(notSampledHeaderIsPresent(mvcResult)).isEqualTo(false);
|
||||
then(ExceptionUtils.getLastException()).isNull();
|
||||
}
|
||||
|
||||
@@ -86,7 +87,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
|
||||
|
||||
MvcResult mvcResult = whenSentPingWithTraceId(expectedTraceId);
|
||||
|
||||
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
|
||||
then(ExceptionUtils.getLastException()).isNull();
|
||||
}
|
||||
|
||||
@@ -108,7 +108,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
|
||||
this.mockMvc.perform(asyncDispatch(mvcResult))
|
||||
.andExpect(status().isOk()).andReturn();
|
||||
|
||||
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
|
||||
then(this.tracer.getCurrentSpan()).isNull();
|
||||
then(ExceptionUtils.getLastException()).isNull();
|
||||
}
|
||||
@@ -121,7 +120,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
|
||||
this.mockMvc.perform(asyncDispatch(mvcResult))
|
||||
.andExpect(status().isOk()).andReturn();
|
||||
|
||||
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
|
||||
Optional<Span> taggedSpan = this.spanAccumulator.getSpans().stream()
|
||||
.filter(span -> span.tags().containsKey("tag")).findFirst();
|
||||
then(taggedSpan.isPresent()).isTrue();
|
||||
@@ -137,7 +135,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
|
||||
|
||||
MvcResult mvcResult = whenSentToNonExistentEndpointWithTraceId(expectedTraceId);
|
||||
|
||||
then(tracingHeaderFrom(mvcResult)).isEqualTo(expectedTraceId);
|
||||
then(this.tracer.getCurrentSpan()).isNull();
|
||||
then(ExceptionUtils.getLastException()).isNull();
|
||||
}
|
||||
@@ -208,12 +205,10 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
|
||||
|
||||
private MvcResult whenSentRequestWithTraceIdAndNoSpanId(Long traceId)
|
||||
throws Exception {
|
||||
MvcResult mvcResult = this.mockMvc
|
||||
return this.mockMvc
|
||||
.perform(MockMvcRequestBuilders.get("/ping").accept(MediaType.TEXT_PLAIN)
|
||||
.header(Span.TRACE_ID_NAME, Span.idToHex(traceId)))
|
||||
.andReturn();
|
||||
then(tracingHeaderFrom(mvcResult)).isEqualTo(traceId);
|
||||
return mvcResult;
|
||||
}
|
||||
|
||||
private MvcResult sendRequestWithTraceId(String path, String headerName, Long traceId, HttpStatus status)
|
||||
@@ -226,10 +221,6 @@ public class TraceFilterIntegrationTests extends AbstractMvcIntegrationTest {
|
||||
.andReturn();
|
||||
}
|
||||
|
||||
private Long tracingHeaderFrom(MvcResult mvcResult) {
|
||||
return Span.hexToId(mvcResult.getResponse().getHeader(Span.TRACE_ID_NAME));
|
||||
}
|
||||
|
||||
private boolean notSampledHeaderIsPresent(MvcResult mvcResult) {
|
||||
return Span.SPAN_NOT_SAMPLED
|
||||
.equals(mvcResult.getResponse().getHeader(Span.SAMPLED_NAME));
|
||||
|
||||
@@ -74,7 +74,7 @@ public class TraceFilterMockChainIntegrationTests {
|
||||
public void startsNewTrace() throws Exception {
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, new NoOpSpanReporter(),
|
||||
new HttpServletRequestExtractor(Pattern.compile(TraceFilter.DEFAULT_SKIP_PATTERN)),
|
||||
new HttpServletResponseInjector(), keysInjector);
|
||||
keysInjector);
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
assertNull(TestSpanContextHolder.getCurrentSpan());
|
||||
}
|
||||
@@ -86,7 +86,7 @@ public class TraceFilterMockChainIntegrationTests {
|
||||
.header(Span.TRACE_ID_NAME, generator.nextLong()).buildRequest(new MockServletContext());
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, new NoOpSpanReporter(),
|
||||
new HttpServletRequestExtractor(Pattern.compile(TraceFilter.DEFAULT_SKIP_PATTERN)),
|
||||
new HttpServletResponseInjector(), keysInjector);
|
||||
keysInjector);
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
assertNull(TestSpanContextHolder.getCurrentSpan());
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.springframework.cloud.sleuth.instrument.web;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Optional;
|
||||
import java.util.Random;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -30,7 +29,6 @@ import org.springframework.cloud.sleuth.DefaultSpanNamer;
|
||||
import org.springframework.cloud.sleuth.Sampler;
|
||||
import org.springframework.cloud.sleuth.Span;
|
||||
import org.springframework.cloud.sleuth.SpanExtractor;
|
||||
import org.springframework.cloud.sleuth.SpanInjector;
|
||||
import org.springframework.cloud.sleuth.SpanReporter;
|
||||
import org.springframework.cloud.sleuth.TraceKeys;
|
||||
import org.springframework.cloud.sleuth.Tracer;
|
||||
@@ -51,8 +49,8 @@ import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilde
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.MockitoAnnotations.initMocks;
|
||||
import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.assertThat;
|
||||
import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then;
|
||||
import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.entry;
|
||||
import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||
|
||||
/**
|
||||
@@ -67,7 +65,6 @@ public class TraceFilterTests {
|
||||
ArrayListSpanAccumulator spanReporter = new ArrayListSpanAccumulator();
|
||||
SpanExtractor<HttpServletRequest> spanExtractor = new HttpServletRequestExtractor(Pattern
|
||||
.compile(TraceFilter.DEFAULT_SKIP_PATTERN));
|
||||
SpanInjector<HttpServletResponse> spanInjector = new HttpServletResponseInjector();
|
||||
|
||||
private Tracer tracer;
|
||||
private TraceKeys traceKeys = new TraceKeys();
|
||||
@@ -112,7 +109,7 @@ public class TraceFilterTests {
|
||||
public void notTraced() throws Exception {
|
||||
this.sampler = NeverSampler.INSTANCE;
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
|
||||
this.request = get("/favicon.ico").accept(MediaType.ALL)
|
||||
.buildRequest(new MockServletContext());
|
||||
@@ -126,7 +123,7 @@ public class TraceFilterTests {
|
||||
@Test
|
||||
public void startsNewTrace() throws Exception {
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
verifyCurrentSpanStatusCode(HttpStatus.OK);
|
||||
@@ -137,7 +134,7 @@ public class TraceFilterTests {
|
||||
@Test
|
||||
public void shouldNotStoreHttpStatusCodeWhenResponseCodeHasNotYetBeenSet() throws Exception {
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
this.response.setStatus(0);
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
@@ -154,7 +151,7 @@ public class TraceFilterTests {
|
||||
.header(Span.PARENT_ID_NAME, Span.idToHex(3L))
|
||||
.buildRequest(new MockServletContext());
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
@@ -187,7 +184,7 @@ public class TraceFilterTests {
|
||||
TestSpanContextHolder.removeCurrentSpan();
|
||||
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
then(TestSpanContextHolder.getCurrentSpan()).isNull();
|
||||
@@ -203,7 +200,7 @@ public class TraceFilterTests {
|
||||
TestSpanContextHolder.removeCurrentSpan();
|
||||
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
then(TestSpanContextHolder.getCurrentSpan()).isNull();
|
||||
@@ -220,7 +217,7 @@ public class TraceFilterTests {
|
||||
TestSpanContextHolder.removeCurrentSpan();
|
||||
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
then(TestSpanContextHolder.getCurrentSpan()).isNull();
|
||||
@@ -232,7 +229,7 @@ public class TraceFilterTests {
|
||||
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
|
||||
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
verifyParentSpanHttpTags();
|
||||
@@ -247,7 +244,7 @@ public class TraceFilterTests {
|
||||
|
||||
this.traceKeys.getHttp().getHeaders().add("x-foo");
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
this.request.addHeader("X-Foo", "bar");
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
@@ -261,7 +258,7 @@ public class TraceFilterTests {
|
||||
this.request = builder().header(Span.SPAN_ID_NAME, PARENT_ID)
|
||||
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, spanIsStoppedVeryfingReporter(),
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
}
|
||||
@@ -277,7 +274,7 @@ public class TraceFilterTests {
|
||||
|
||||
this.traceKeys.getHttp().getHeaders().add("x-foo");
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
this.request.addHeader("X-Foo", "bar");
|
||||
this.request.addHeader("X-Foo", "spam");
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
@@ -292,7 +289,7 @@ public class TraceFilterTests {
|
||||
this.request = builder().header(Span.SPAN_ID_NAME, PARENT_ID)
|
||||
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
this.filterChain = new MockFilterChain() {
|
||||
@Override
|
||||
public void doFilter(javax.servlet.ServletRequest request,
|
||||
@@ -317,7 +314,7 @@ public class TraceFilterTests {
|
||||
this.request = builder().header(Span.SPAN_ID_NAME, PARENT_ID)
|
||||
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
this.response.setStatus(404);
|
||||
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
@@ -330,7 +327,7 @@ public class TraceFilterTests {
|
||||
this.request = builder().header(Span.SPAN_ID_NAME, "asd")
|
||||
.header(Span.TRACE_ID_NAME, 20L).buildRequest(new MockServletContext());
|
||||
TraceFilter filter = new TraceFilter(this.tracer, this.traceKeys, this.spanReporter,
|
||||
this.spanExtractor, this.spanInjector, this.httpTraceKeysInjector);
|
||||
this.spanExtractor, this.httpTraceKeysInjector);
|
||||
|
||||
filter.doFilter(this.request, this.response, this.filterChain);
|
||||
|
||||
|
||||
@@ -112,8 +112,8 @@ public class WebClientTests {
|
||||
ResponseEntityProvider provider) {
|
||||
ResponseEntity<String> response = provider.get(this);
|
||||
|
||||
then(getHeader(response, Span.TRACE_ID_NAME)).isNotNull();
|
||||
then(getHeader(response, Span.SPAN_ID_NAME)).isNotNull();
|
||||
then(getHeader(response, Span.TRACE_ID_NAME)).isNull();
|
||||
then(getHeader(response, Span.SPAN_ID_NAME)).isNull();
|
||||
then(this.listener.getSpans()).isNotEmpty();
|
||||
Awaitility.await().atMost(3, TimeUnit.SECONDS).until(() -> {
|
||||
log.info("Seraching for a notrace span in " + this.listener.getSpans());
|
||||
@@ -172,9 +172,10 @@ public class WebClientTests {
|
||||
|
||||
ResponseEntity<String> response = provider.get(this);
|
||||
|
||||
then(getHeader(response, Span.SAMPLED_NAME)).isEqualTo(Span.SPAN_SAMPLED);
|
||||
then(Span.hexToId(getHeader(response, Span.TRACE_ID_NAME)))
|
||||
.isEqualTo(currentTraceId);
|
||||
// https://github.com/spring-cloud/spring-cloud-sleuth/issues/327
|
||||
// we don't want to respond with any tracing data
|
||||
then(getHeader(response, Span.SAMPLED_NAME)).isNull();
|
||||
then(getHeader(response, Span.TRACE_ID_NAME)).isNull();
|
||||
thenRegisteredClientSentAndReceivedEvents(spanWithClientEvents());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
package org.springframework.cloud.sleuth.instrument.web.common;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cloud.sleuth.SpanExtractor;
|
||||
import org.springframework.cloud.sleuth.SpanInjector;
|
||||
import org.springframework.cloud.sleuth.TraceKeys;
|
||||
import org.springframework.cloud.sleuth.Tracer;
|
||||
import org.springframework.cloud.sleuth.instrument.web.HttpTraceKeysInjector;
|
||||
@@ -37,7 +35,6 @@ public abstract class AbstractMvcIntegrationTest {
|
||||
@Autowired protected Tracer tracer;
|
||||
@Autowired protected TraceKeys traceKeys;
|
||||
@Autowired protected SpanExtractor<HttpServletRequest> spanExtractor;
|
||||
@Autowired protected SpanInjector<HttpServletResponse> spanInjector;
|
||||
@Autowired protected HttpTraceKeysInjector httpTraceKeysInjector;
|
||||
|
||||
@Before
|
||||
|
||||
Reference in New Issue
Block a user