Includes the input headers for gateway; fixes gh-1198
This commit is contained in:
@@ -55,7 +55,10 @@ class TraceRequestHttpHeadersFilter extends AbstractHttpHeadersFilter {
|
||||
+ builder.build().getHeaders().toSingleValueMap());
|
||||
}
|
||||
exchange.getAttributes().put(SPAN_ATTRIBUTE, span);
|
||||
return new HttpHeaders(builder.build().getHeaders());
|
||||
HttpHeaders headersWithInput = new HttpHeaders();
|
||||
headersWithInput.addAll(input);
|
||||
headersWithInput.addAll(builder.build().getHeaders());
|
||||
return headersWithInput;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.springframework.cloud.sleuth.instrument.web.client;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import brave.Tracing;
|
||||
import brave.http.HttpTracing;
|
||||
import brave.propagation.StrictScopeDecorator;
|
||||
@@ -28,18 +30,23 @@ public class TraceRequestHttpHeadersFilterTests {
|
||||
public void should_override_span_tracing_headers() {
|
||||
HttpHeadersFilter filter = TraceRequestHttpHeadersFilter.create(this.httpTracing);
|
||||
HttpHeaders httpHeaders = new HttpHeaders();
|
||||
httpHeaders.set("X-Hello", "World");
|
||||
httpHeaders.set("X-B3-TraceId", "52f112af7472aff0");
|
||||
httpHeaders.set("X-B3-SpanId", "53e6ab6fc5dfee58");
|
||||
MockServerHttpRequest request = MockServerHttpRequest.post("foo/bar")
|
||||
.headers(httpHeaders).build();
|
||||
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
|
||||
|
||||
HttpHeaders filteredHeaders = filter.filter(httpHeaders, exchange);
|
||||
HttpHeaders filteredHeaders = filter.filter(requestHeaders(), exchange);
|
||||
|
||||
BDDAssertions.then(filteredHeaders.get("X-B3-TraceId"))
|
||||
.isNotEqualTo(httpHeaders.get("X-B3-TraceId"));
|
||||
BDDAssertions.then(filteredHeaders.get("X-B3-SpanId"))
|
||||
.isNotEqualTo(httpHeaders.get("X-B3-SpanId"));
|
||||
BDDAssertions.then(filteredHeaders.get("X-Hello"))
|
||||
.isEqualTo(Collections.singletonList("World"));
|
||||
BDDAssertions.then(filteredHeaders.get("X-Hello-Request"))
|
||||
.isEqualTo(Collections.singletonList("Request World"));
|
||||
BDDAssertions
|
||||
.then((Object) exchange
|
||||
.getAttribute(TraceRequestHttpHeadersFilter.SPAN_ATTRIBUTE))
|
||||
@@ -50,18 +57,29 @@ public class TraceRequestHttpHeadersFilterTests {
|
||||
public void should_set_tracing_headers() {
|
||||
HttpHeadersFilter filter = TraceRequestHttpHeadersFilter.create(this.httpTracing);
|
||||
HttpHeaders httpHeaders = new HttpHeaders();
|
||||
httpHeaders.set("X-Hello", "World");
|
||||
MockServerHttpRequest request = MockServerHttpRequest.post("foo/bar")
|
||||
.headers(httpHeaders).build();
|
||||
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
|
||||
|
||||
HttpHeaders filteredHeaders = filter.filter(httpHeaders, exchange);
|
||||
HttpHeaders filteredHeaders = filter.filter(requestHeaders(), exchange);
|
||||
|
||||
BDDAssertions.then(filteredHeaders.get("X-B3-TraceId")).isNotEmpty();
|
||||
BDDAssertions.then(filteredHeaders.get("X-B3-SpanId")).isNotEmpty();
|
||||
BDDAssertions.then(filteredHeaders.get("X-Hello"))
|
||||
.isEqualTo(Collections.singletonList("World"));
|
||||
BDDAssertions.then(filteredHeaders.get("X-Hello-Request"))
|
||||
.isEqualTo(Collections.singletonList("Request World"));
|
||||
BDDAssertions
|
||||
.then((Object) exchange
|
||||
.getAttribute(TraceRequestHttpHeadersFilter.SPAN_ATTRIBUTE))
|
||||
.isNotNull();
|
||||
}
|
||||
|
||||
private HttpHeaders requestHeaders() {
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add("X-Hello-Request", "Request World");
|
||||
return headers;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user