diff --git a/api/all/src/main/java/io/opentelemetry/api/baggage/propagation/W3CBaggagePropagator.java b/api/all/src/main/java/io/opentelemetry/api/baggage/propagation/W3CBaggagePropagator.java index 4bffc0c784..198a0d656f 100644 --- a/api/all/src/main/java/io/opentelemetry/api/baggage/propagation/W3CBaggagePropagator.java +++ b/api/all/src/main/java/io/opentelemetry/api/baggage/propagation/W3CBaggagePropagator.java @@ -78,14 +78,14 @@ public final class W3CBaggagePropagator implements TextMapPropagator { return context; } if (baggageHeader.isEmpty()) { - return context.with(Baggage.empty()); + return context; } BaggageBuilder baggageBuilder = Baggage.builder(); try { extractEntries(baggageHeader, baggageBuilder); } catch (RuntimeException e) { - return context.with(Baggage.empty()); + return context; } return context.with(baggageBuilder.build()); } diff --git a/api/all/src/test/java/io/opentelemetry/api/baggage/propagation/W3CBaggagePropagatorTest.java b/api/all/src/test/java/io/opentelemetry/api/baggage/propagation/W3CBaggagePropagatorTest.java index 81f5b304f5..49aa1bfcfd 100644 --- a/api/all/src/test/java/io/opentelemetry/api/baggage/propagation/W3CBaggagePropagatorTest.java +++ b/api/all/src/test/java/io/opentelemetry/api/baggage/propagation/W3CBaggagePropagatorTest.java @@ -136,23 +136,20 @@ class W3CBaggagePropagatorTest { assertThat(Baggage.fromContext(result)).isEqualTo(expectedBaggage); } - /** - * It would be cool if we could replace this with a fuzzer to generate tons of crud data, to make - * sure we don't blow up with it. - */ @Test void extract_invalidHeader() { W3CBaggagePropagator propagator = W3CBaggagePropagator.getInstance(); + Context input = Context.current(); Context result = propagator.extract( - Context.root(), + input, ImmutableMap.of( "baggage", "key1= v;alsdf;-asdflkjasdf===asdlfkjadsf ,,a sdf9asdf-alue1; metadata-key = " + "value; othermetadata, key2 =value2 , key3 =\tvalue3 ; "), getter); - + assertThat(result).isSameAs(input); assertThat(Baggage.fromContext(result)).isEqualTo(Baggage.empty()); } diff --git a/api/all/src/test/java/io/opentelemetry/api/trace/propagation/W3CTraceContextPropagatorTest.java b/api/all/src/test/java/io/opentelemetry/api/trace/propagation/W3CTraceContextPropagatorTest.java index 6185adf9d6..0d4a3516e8 100644 --- a/api/all/src/test/java/io/opentelemetry/api/trace/propagation/W3CTraceContextPropagatorTest.java +++ b/api/all/src/test/java/io/opentelemetry/api/trace/propagation/W3CTraceContextPropagatorTest.java @@ -298,42 +298,42 @@ class W3CTraceContextPropagatorTest { void extract_EmptyHeader() { Map invalidHeaders = new LinkedHashMap<>(); invalidHeaders.put(W3CTraceContextPropagator.TRACE_PARENT, ""); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test void extract_invalidDelimiters() { Map carrier = new LinkedHashMap<>(); + Context input = Context.current(); + Context result; + carrier.put( W3CTraceContextPropagator.TRACE_PARENT, "01+" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "-00-02"); - assertThat( - getSpanContext(w3cTraceContextPropagator.extract(Context.current(), carrier, getter))) - .isEqualTo(SpanContext.getInvalid()); + result = w3cTraceContextPropagator.extract(input, carrier, getter); + assertThat(result).isSameAs(input); + assertThat(getSpanContext(result)).isEqualTo(SpanContext.getInvalid()); carrier.put( W3CTraceContextPropagator.TRACE_PARENT, "01-" + TRACE_ID_BASE16 + "+" + SPAN_ID_BASE16 + "-00-02"); - assertThat( - getSpanContext(w3cTraceContextPropagator.extract(Context.current(), carrier, getter))) - .isEqualTo(SpanContext.getInvalid()); + result = w3cTraceContextPropagator.extract(input, carrier, getter); + assertThat(result).isSameAs(input); + assertThat(getSpanContext(result)).isEqualTo(SpanContext.getInvalid()); carrier.put( W3CTraceContextPropagator.TRACE_PARENT, "01-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "+00-02"); - assertThat( - getSpanContext(w3cTraceContextPropagator.extract(Context.current(), carrier, getter))) - .isEqualTo(SpanContext.getInvalid()); + result = w3cTraceContextPropagator.extract(input, carrier, getter); + assertThat(result).isSameAs(input); + assertThat(getSpanContext(result)).isEqualTo(SpanContext.getInvalid()); carrier.put( W3CTraceContextPropagator.TRACE_PARENT, "01-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "-00+02"); - assertThat( - getSpanContext(w3cTraceContextPropagator.extract(Context.current(), carrier, getter))) - .isEqualTo(SpanContext.getInvalid()); + result = w3cTraceContextPropagator.extract(input, carrier, getter); + assertThat(result).isSameAs(input); + assertThat(getSpanContext(result)).isEqualTo(SpanContext.getInvalid()); } @Test @@ -342,10 +342,7 @@ class W3CTraceContextPropagatorTest { invalidHeaders.put( W3CTraceContextPropagator.TRACE_PARENT, "00-" + "abcdefghijklmnopabcdefghijklmnop" + "-" + SPAN_ID_BASE16 + "-01"); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -354,10 +351,7 @@ class W3CTraceContextPropagatorTest { invalidHeaders.put( W3CTraceContextPropagator.TRACE_PARENT, "00-" + TRACE_ID_BASE16 + "00-" + SPAN_ID_BASE16 + "-01"); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -366,10 +360,7 @@ class W3CTraceContextPropagatorTest { invalidHeaders.put( W3CTraceContextPropagator.TRACE_PARENT, "00-" + TRACE_ID_BASE16 + "-" + "abcdefghijklmnop" + "-01"); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -378,10 +369,7 @@ class W3CTraceContextPropagatorTest { invalidHeaders.put( W3CTraceContextPropagator.TRACE_PARENT, "00-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "00-01"); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -390,10 +378,7 @@ class W3CTraceContextPropagatorTest { invalidHeaders.put( W3CTraceContextPropagator.TRACE_PARENT, "00-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "-gh"); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -402,10 +387,14 @@ class W3CTraceContextPropagatorTest { invalidHeaders.put( W3CTraceContextPropagator.TRACE_PARENT, "00-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "-0100"); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); + } + + private void verifyInvalidBehavior(Map invalidHeaders) { + Context input = Context.current(); + Context result = w3cTraceContextPropagator.extract(input, invalidHeaders, getter); + assertThat(result).isSameAs(input); + assertThat(getSpanContext(result)).isSameAs(SpanContext.getInvalid()); } @Test @@ -474,10 +463,7 @@ class W3CTraceContextPropagatorTest { invalidHeaders.put( W3CTraceContextPropagator.TRACE_PARENT, "ff-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "-01"); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -486,10 +472,7 @@ class W3CTraceContextPropagatorTest { invalidHeaders.put( W3CTraceContextPropagator.TRACE_PARENT, "00-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "-00-01"); - assertThat( - getSpanContext( - w3cTraceContextPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test diff --git a/context/src/test/java/io/opentelemetry/context/propagation/MultiTextMapPropagatorTest.java b/context/src/test/java/io/opentelemetry/context/propagation/MultiTextMapPropagatorTest.java index f572985ee8..3950779746 100644 --- a/context/src/test/java/io/opentelemetry/context/propagation/MultiTextMapPropagatorTest.java +++ b/context/src/test/java/io/opentelemetry/context/propagation/MultiTextMapPropagatorTest.java @@ -93,6 +93,19 @@ class MultiTextMapPropagatorTest { verify(propagator3).inject(context, carrier, setter); } + @Test + void inject_nullContextAllDelegated() { + Map carrier = new HashMap<>(); + Context context = null; + TextMapSetter> setter = Map::put; + + TextMapPropagator prop = new MultiTextMapPropagator(propagator1, propagator2, propagator3); + prop.inject(context, carrier, setter); + verify(propagator1).inject(context, carrier, setter); + verify(propagator2).inject(context, carrier, setter); + verify(propagator3).inject(context, carrier, setter); + } + @Test void extract_noPropagators() { Map carrier = new HashMap<>(); @@ -121,7 +134,6 @@ class MultiTextMapPropagatorTest { @Test void extract_notFound() { - Map carrier = new HashMap<>(); Context context = mock(Context.class); when(propagator1.extract(context, carrier, getter)).thenReturn(context); @@ -132,4 +144,17 @@ class MultiTextMapPropagatorTest { assertThat(result).isSameAs(context); } + + @Test + void extract_nullContext() { + Map carrier = new HashMap<>(); + Context context = null; + when(propagator1.extract(context, carrier, getter)).thenReturn(context); + when(propagator2.extract(context, carrier, getter)).thenReturn(context); + + TextMapPropagator prop = new MultiTextMapPropagator(propagator1, propagator2); + Context result = prop.extract(context, carrier, getter); + + assertThat(result).isSameAs(context); + } } diff --git a/context/src/test/java/io/opentelemetry/context/propagation/NoopTextMapPropagatorTest.java b/context/src/test/java/io/opentelemetry/context/propagation/NoopTextMapPropagatorTest.java index 7eb7d09e64..1d16115d9a 100644 --- a/context/src/test/java/io/opentelemetry/context/propagation/NoopTextMapPropagatorTest.java +++ b/context/src/test/java/io/opentelemetry/context/propagation/NoopTextMapPropagatorTest.java @@ -7,6 +7,9 @@ package io.opentelemetry.context.propagation; import static org.assertj.core.api.Assertions.assertThat; +import io.opentelemetry.context.Context; +import java.util.HashMap; +import javax.annotation.Nullable; import org.junit.jupiter.api.Test; class NoopTextMapPropagatorTest { @@ -15,4 +18,34 @@ class NoopTextMapPropagatorTest { void noopFields() { assertThat(TextMapPropagator.noop().fields()).isEmpty(); } + + @Test + void extract_contextUnchanged() { + Context input = Context.current(); + Context result = + TextMapPropagator.noop().extract(input, new HashMap<>(), new HashMapTextMapGetter()); + assertThat(result).isSameAs(input); + } + + @Test + void extract_nullContext() { + Context input = null; + Context result = + TextMapPropagator.noop().extract(input, new HashMap<>(), new HashMapTextMapGetter()); + assertThat(result).isSameAs(input); + } + + private static class HashMapTextMapGetter + implements TextMapGetter> { + @Override + public Iterable keys(HashMap carrier) { + return null; + } + + @Nullable + @Override + public String get(@Nullable HashMap carrier, String key) { + return null; + } + } } diff --git a/extensions/aws/src/main/java/io/opentelemetry/extension/aws/AwsXrayPropagator.java b/extensions/aws/src/main/java/io/opentelemetry/extension/aws/AwsXrayPropagator.java index 1ffb275d2a..a596ddfaff 100644 --- a/extensions/aws/src/main/java/io/opentelemetry/extension/aws/AwsXrayPropagator.java +++ b/extensions/aws/src/main/java/io/opentelemetry/extension/aws/AwsXrayPropagator.java @@ -233,8 +233,9 @@ public final class AwsXrayPropagator implements TextMapPropagator { spanId, isSampled ? TraceFlags.getSampled() : TraceFlags.getDefault(), TraceState.getDefault()); - - context = context.with(Span.wrap(spanContext)); + if (spanContext.isValid()) { + context = context.with(Span.wrap(spanContext)); + } if (baggage != null) { context = context.with(baggage.build()); } diff --git a/extensions/aws/src/test/java/io/opentelemetry/extension/aws/AwsXrayPropagatorTest.java b/extensions/aws/src/test/java/io/opentelemetry/extension/aws/AwsXrayPropagatorTest.java index 3ef7f16e08..1ad62173db 100644 --- a/extensions/aws/src/test/java/io/opentelemetry/extension/aws/AwsXrayPropagatorTest.java +++ b/extensions/aws/src/test/java/io/opentelemetry/extension/aws/AwsXrayPropagatorTest.java @@ -273,8 +273,7 @@ class AwsXrayPropagatorTest { Map invalidHeaders = new LinkedHashMap<>(); invalidHeaders.put(TRACE_HEADER_KEY, ""); - assertThat(getSpanContext(xrayPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -284,8 +283,7 @@ class AwsXrayPropagatorTest { TRACE_HEADER_KEY, "Root=abcdefghijklmnopabcdefghijklmnop;Parent=53995c3f42cd8ad8;Sampled=0"); - assertThat(getSpanContext(xrayPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -295,8 +293,7 @@ class AwsXrayPropagatorTest { TRACE_HEADER_KEY, "Root=1-8a3c60f7-d188f8fa79d48a391a778fa600;Parent=53995c3f42cd8ad8;Sampled=0"); - assertThat(getSpanContext(xrayPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -306,8 +303,7 @@ class AwsXrayPropagatorTest { TRACE_HEADER_KEY, "Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=abcdefghijklmnop;Sampled=0"); - assertThat(getSpanContext(xrayPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -317,8 +313,7 @@ class AwsXrayPropagatorTest { TRACE_HEADER_KEY, "Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad800;Sampled=0"); - assertThat(getSpanContext(xrayPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -328,8 +323,7 @@ class AwsXrayPropagatorTest { TRACE_HEADER_KEY, "Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled="); - assertThat(getSpanContext(xrayPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -339,8 +333,7 @@ class AwsXrayPropagatorTest { TRACE_HEADER_KEY, "Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=10220"); - assertThat(getSpanContext(xrayPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -350,8 +343,14 @@ class AwsXrayPropagatorTest { TRACE_HEADER_KEY, "Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=a"); - assertThat(getSpanContext(xrayPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); + } + + private void verifyInvalidBehavior(Map invalidHeaders) { + Context input = Context.current(); + Context result = xrayPropagator.extract(input, invalidHeaders, getter); + assertThat(result).isSameAs(input); + assertThat(getSpanContext(result)).isSameAs(SpanContext.getInvalid()); } @Test diff --git a/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/B3PropagatorTest.java b/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/B3PropagatorTest.java index e69ca3c46f..ed996b2c96 100644 --- a/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/B3PropagatorTest.java +++ b/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/B3PropagatorTest.java @@ -234,8 +234,7 @@ class B3PropagatorTest { invalidHeaders.put(B3Propagator.TRACE_ID_HEADER, "g" + TRACE_ID.substring(1)); invalidHeaders.put(B3Propagator.SPAN_ID_HEADER, SPAN_ID); invalidHeaders.put(B3Propagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -244,8 +243,7 @@ class B3PropagatorTest { invalidHeaders.put(B3Propagator.TRACE_ID_HEADER, TRACE_ID.substring(2)); invalidHeaders.put(B3Propagator.SPAN_ID_HEADER, SPAN_ID); invalidHeaders.put(B3Propagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -254,8 +252,7 @@ class B3PropagatorTest { invalidHeaders.put(B3Propagator.TRACE_ID_HEADER, TRACE_ID + "00"); invalidHeaders.put(B3Propagator.SPAN_ID_HEADER, SPAN_ID); invalidHeaders.put(B3Propagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -264,8 +261,7 @@ class B3PropagatorTest { invalidHeaders.put(B3Propagator.TRACE_ID_HEADER, TRACE_ID_ALL_ZERO); invalidHeaders.put(B3Propagator.SPAN_ID_HEADER, SPAN_ID); invalidHeaders.put(B3Propagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -274,8 +270,7 @@ class B3PropagatorTest { invalidHeaders.put(B3Propagator.TRACE_ID_HEADER, TRACE_ID); invalidHeaders.put(B3Propagator.SPAN_ID_HEADER, "g" + SPAN_ID.substring(1)); invalidHeaders.put(B3Propagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -284,8 +279,7 @@ class B3PropagatorTest { invalidHeaders.put(B3Propagator.TRACE_ID_HEADER, TRACE_ID); invalidHeaders.put(B3Propagator.SPAN_ID_HEADER, SPAN_ID.substring(2)); invalidHeaders.put(B3Propagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -294,8 +288,7 @@ class B3PropagatorTest { invalidHeaders.put(B3Propagator.TRACE_ID_HEADER, TRACE_ID); invalidHeaders.put(B3Propagator.SPAN_ID_HEADER, SPAN_ID + "00"); invalidHeaders.put(B3Propagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -304,8 +297,7 @@ class B3PropagatorTest { invalidHeaders.put(B3Propagator.TRACE_ID_HEADER, TRACE_ID); invalidHeaders.put(B3Propagator.SPAN_ID_HEADER, SPAN_ID_ALL_ZERO); invalidHeaders.put(B3Propagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -481,8 +473,14 @@ class B3PropagatorTest { Map invalidHeaders = new LinkedHashMap<>(); invalidHeaders.put(B3Propagator.COMBINED_HEADER, null); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); + } + + private void verifyInvalidBehavior(Map invalidHeaders) { + Context input = Context.current(); + Context extractedContext = b3Propagator.extract(input, invalidHeaders, getter); + assertThat(extractedContext).isSameAs(input); + assertThat(getSpanContext(extractedContext)).isSameAs(SpanContext.getInvalid()); } @Test @@ -490,8 +488,7 @@ class B3PropagatorTest { Map invalidHeaders = new LinkedHashMap<>(); invalidHeaders.put(B3Propagator.COMBINED_HEADER, ""); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -501,8 +498,7 @@ class B3PropagatorTest { B3Propagator.COMBINED_HEADER, "abcdefghijklmnopabcdefghijklmnop" + "-" + SPAN_ID + "-" + Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -512,8 +508,7 @@ class B3PropagatorTest { B3Propagator.COMBINED_HEADER, "abcdefghijklmnopabcdefghijklmnop" + "00" + "-" + SPAN_ID + "-" + Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -522,8 +517,7 @@ class B3PropagatorTest { invalidHeaders.put( B3Propagator.COMBINED_HEADER, TRACE_ID + "-" + "abcdefghijklmnop" + "-" + Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -533,8 +527,7 @@ class B3PropagatorTest { B3Propagator.COMBINED_HEADER, TRACE_ID + "-" + "abcdefghijklmnop" + "00" + "-" + Common.TRUE_INT); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -542,8 +535,7 @@ class B3PropagatorTest { Map invalidHeaders = new LinkedHashMap<>(); invalidHeaders.put(B3Propagator.COMBINED_HEADER, TRACE_ID); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -552,8 +544,7 @@ class B3PropagatorTest { invalidHeaders.put( B3Propagator.COMBINED_HEADER, TRACE_ID + "-" + SPAN_ID + "-" + Common.TRUE_INT + "-extra-extra"); - assertThat(getSpanContext(b3Propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test diff --git a/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/JaegerPropagatorTest.java b/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/JaegerPropagatorTest.java index 83c19ce055..a518d9d3d5 100644 --- a/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/JaegerPropagatorTest.java +++ b/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/JaegerPropagatorTest.java @@ -213,8 +213,14 @@ class JaegerPropagatorTest { Map invalidHeaders = new LinkedHashMap<>(); invalidHeaders.put(PROPAGATION_HEADER, "aa:bb:cc"); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); + } + + private void verifyInvalidBehavior(Map invalidHeaders) { + Context input = Context.current(); + Context result = jaegerPropagator.extract(input, invalidHeaders, getter); + assertThat(result).isSameAs(input); + assertThat(getSpanContext(result)).isSameAs(SpanContext.getInvalid()); } @Test @@ -222,8 +228,7 @@ class JaegerPropagatorTest { Map invalidHeaders = new LinkedHashMap<>(); invalidHeaders.put(PROPAGATION_HEADER, "aa:bb:cc:dd:ee"); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -234,8 +239,7 @@ class JaegerPropagatorTest { generateTraceIdHeaderValue( "abcdefghijklmnopabcdefghijklmnop", SPAN_ID, DEPRECATED_PARENT_SPAN, "0")); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -245,8 +249,7 @@ class JaegerPropagatorTest { PROPAGATION_HEADER, generateTraceIdHeaderValue(TRACE_ID + "00", SPAN_ID, DEPRECATED_PARENT_SPAN, "0")); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -256,8 +259,7 @@ class JaegerPropagatorTest { PROPAGATION_HEADER, generateTraceIdHeaderValue(TRACE_ID, "abcdefghijklmnop", DEPRECATED_PARENT_SPAN, "0")); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -267,8 +269,7 @@ class JaegerPropagatorTest { PROPAGATION_HEADER, generateTraceIdHeaderValue(TRACE_ID, SPAN_ID + "00", DEPRECATED_PARENT_SPAN, "0")); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -278,8 +279,7 @@ class JaegerPropagatorTest { PROPAGATION_HEADER, generateTraceIdHeaderValue(TRACE_ID, SPAN_ID, DEPRECATED_PARENT_SPAN, "")); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -289,8 +289,7 @@ class JaegerPropagatorTest { PROPAGATION_HEADER, generateTraceIdHeaderValue(TRACE_ID, SPAN_ID, DEPRECATED_PARENT_SPAN, "10220")); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -300,8 +299,7 @@ class JaegerPropagatorTest { PROPAGATION_HEADER, generateTraceIdHeaderValue(TRACE_ID, SPAN_ID, DEPRECATED_PARENT_SPAN, "abcdefr")); - assertThat(getSpanContext(jaegerPropagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test diff --git a/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/OtTracePropagatorTest.java b/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/OtTracePropagatorTest.java index f5fb42bcd8..2da3a970ed 100644 --- a/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/OtTracePropagatorTest.java +++ b/extensions/trace-propagators/src/test/java/io/opentelemetry/extension/trace/propagation/OtTracePropagatorTest.java @@ -264,8 +264,7 @@ class OtTracePropagatorTest { invalidHeaders.put(OtTracePropagator.TRACE_ID_HEADER, TRACE_ID + "00"); invalidHeaders.put(OtTracePropagator.SPAN_ID_HEADER, SPAN_ID); invalidHeaders.put(OtTracePropagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -274,8 +273,7 @@ class OtTracePropagatorTest { invalidHeaders.put(OtTracePropagator.TRACE_ID_HEADER, TRACE_ID); invalidHeaders.put(OtTracePropagator.SPAN_ID_HEADER, "abcdefghijklmnop"); invalidHeaders.put(OtTracePropagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); } @Test @@ -284,15 +282,20 @@ class OtTracePropagatorTest { invalidHeaders.put(OtTracePropagator.TRACE_ID_HEADER, TRACE_ID); invalidHeaders.put(OtTracePropagator.SPAN_ID_HEADER, "abcdefghijklmnop" + "00"); invalidHeaders.put(OtTracePropagator.SAMPLED_HEADER, Common.TRUE_INT); - assertThat(getSpanContext(propagator.extract(Context.current(), invalidHeaders, getter))) - .isSameAs(SpanContext.getInvalid()); + verifyInvalidBehavior(invalidHeaders); + } + + private void verifyInvalidBehavior(Map invalidHeaders) { + Context input = Context.current(); + Context result = propagator.extract(input, invalidHeaders, getter); + assertThat(result).isSameAs(input); + assertThat(getSpanContext(result)).isSameAs(SpanContext.getInvalid()); } @Test void extract_emptyCarrier() { Map emptyHeaders = new HashMap<>(); - assertThat(getSpanContext(propagator.extract(Context.current(), emptyHeaders, getter))) - .isEqualTo(SpanContext.getInvalid()); + verifyInvalidBehavior(emptyHeaders); } @Test