From cc00e3ae80590d503b9bf95a78ec66bb8cdaf253 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 7 Jun 2017 10:40:57 +0200 Subject: [PATCH] Making baggage keys case insensitive fixes #605 --- .../springframework/cloud/sleuth/Span.java | 6 ++--- .../cloud/sleuth/trace/CustomLoggerTests.java | 24 ++++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java index 33c5d09bc..5af2c9154 100644 --- a/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java +++ b/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/Span.java @@ -365,7 +365,7 @@ public class Span implements SpanContext { * @return this Span instance, for chaining */ public Span setBaggageItem(String key, String value) { - this.baggage.put(key, value); + this.baggage.put(key.toLowerCase(), value); return this; } @@ -373,7 +373,7 @@ public class Span implements SpanContext { * @return the value of the baggage item identified by the given key, or null if no such item could be found */ public String getBaggageItem(String key) { - return this.baggage.get(key); + return this.baggage.get(key.toLowerCase()); } @Override @@ -732,7 +732,7 @@ public class Span implements SpanContext { } public Span.SpanBuilder baggage(String baggageKey, String baggageValue) { - this.baggage.put(baggageKey, baggageValue); + this.baggage.put(baggageKey.toLowerCase(), baggageValue); return this; } diff --git a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/trace/CustomLoggerTests.java b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/trace/CustomLoggerTests.java index 44a8eca0c..8a9246b27 100644 --- a/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/trace/CustomLoggerTests.java +++ b/spring-cloud-sleuth-core/src/test/java/org/springframework/cloud/sleuth/trace/CustomLoggerTests.java @@ -16,17 +16,21 @@ package org.springframework.cloud.sleuth.trace; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.junit.Test; -import org.springframework.cloud.sleuth.*; -import org.springframework.cloud.sleuth.log.Slf4jSpanLogger; -import org.springframework.cloud.sleuth.sampler.AlwaysSampler; - import java.lang.invoke.MethodHandles; import java.util.Random; import java.util.concurrent.atomic.AtomicBoolean; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Test; +import org.springframework.cloud.sleuth.DefaultSpanNamer; +import org.springframework.cloud.sleuth.NoOpSpanReporter; +import org.springframework.cloud.sleuth.Span; +import org.springframework.cloud.sleuth.TraceKeys; +import org.springframework.cloud.sleuth.Tracer; +import org.springframework.cloud.sleuth.log.Slf4jSpanLogger; +import org.springframework.cloud.sleuth.sampler.AlwaysSampler; + import static org.springframework.cloud.sleuth.assertions.SleuthAssertions.then; /** @@ -39,13 +43,16 @@ public class CustomLoggerTests { new DefaultSpanNamer(), this.spanLogger, new NoOpSpanReporter(), new TraceKeys()); // https://github.com/spring-cloud/spring-cloud-sleuth/issues/547 + // https://github.com/spring-cloud/spring-cloud-sleuth/issues/605 @Test public void should_pass_baggage_to_custom_span_logger() { - Span parent = Span.builder().spanId(1).traceId(2).baggage("foo", "bar").build(); + Span parent = Span.builder().spanId(1).traceId(2).baggage("FOO", "bar").build(); + parent.setBaggageItem("bAz", "baz"); Span child = this.tracer.createSpan("child", parent); then(child).hasBaggageItem("foo", "bar"); + then(child.getBaggageItem("FoO")).isEqualTo("bar"); then(this.spanLogger.called.get()).isTrue(); TestSpanContextHolder.removeCurrentSpan(); } @@ -66,6 +73,7 @@ class CustomSpanLogger extends Slf4jSpanLogger { called.set(true); then(parent).hasBaggageItem("foo", "bar"); then(span).hasBaggageItem("foo", "bar"); + then(span).hasBaggageItem("baz", "baz"); log.info("Baggage item foo=>bar found"); log.info("Parent's baggage: " + parent.getBaggage()); log.info("Child's baggage: " + span.getBaggage());