Setting headers for Gateway instead of replacing them; fixes gh-1141

This commit is contained in:
Marcin Grzejszczak
2019-01-21 17:57:22 +01:00
parent 8af5b71dda
commit 77139bc6b6
2 changed files with 20 additions and 5 deletions

View File

@@ -15,8 +15,6 @@
*/
package org.springframework.cloud.sleuth.instrument.web.client;
import java.util.Collections;
import brave.Span;
import brave.Tracer;
import brave.http.HttpClientHandler;
@@ -110,8 +108,7 @@ abstract class AbstractHttpHeadersFilter implements HttpHeadersFilter {
private static final Propagation.Setter<ServerHttpRequest.Builder, String> SETTER = new Propagation.Setter<ServerHttpRequest.Builder, String>() {
@Override
public void put(ServerHttpRequest.Builder carrier, String key, String value) {
carrier.headers(httpHeaders -> httpHeaders.replace(key,
Collections.singletonList(value)));
carrier.headers(httpHeaders -> httpHeaders.set(key, value));
}
@Override

View File

@@ -25,7 +25,7 @@ public class TraceRequestHttpHeadersFilterTests {
HttpTracing httpTracing = HttpTracing.newBuilder(this.tracing).build();
@Test
public void should_override_any_tracing_headers() {
public void should_override_span_tracing_headers() {
HttpHeadersFilter filter = TraceRequestHttpHeadersFilter.create(this.httpTracing);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.set("X-B3-TraceId", "52f112af7472aff0");
@@ -46,4 +46,22 @@ public class TraceRequestHttpHeadersFilterTests {
.isNotNull();
}
@Test
public void should_set_tracing_headers() {
HttpHeadersFilter filter = TraceRequestHttpHeadersFilter.create(this.httpTracing);
HttpHeaders httpHeaders = new HttpHeaders();
MockServerHttpRequest request = MockServerHttpRequest.post("foo/bar")
.headers(httpHeaders).build();
MockServerWebExchange exchange = MockServerWebExchange.builder(request).build();
HttpHeaders filteredHeaders = filter.filter(httpHeaders, exchange);
BDDAssertions.then(filteredHeaders.get("X-B3-TraceId")).isNotEmpty();
BDDAssertions.then(filteredHeaders.get("X-B3-SpanId")).isNotEmpty();
BDDAssertions
.then((Object) exchange
.getAttribute(TraceRequestHttpHeadersFilter.SPAN_ATTRIBUTE))
.isNotNull();
}
}