@@ -124,7 +124,10 @@ void testActiveSpanScopeWithBaggage() {
124
124
@ Test
125
125
void testIncomingBaggage () {
126
126
Tracer tracer = Tracer .global ();
127
- HeaderProvider inboundHeaders = new MapHeaderProvider (Map .of ("baggage" , List .of ("bag1=val1,bag2=val2" )));
127
+ // Need to supply both the traceparent and the baggage for OTel to construct a proper span context.
128
+ HeaderProvider inboundHeaders = new MapHeaderProvider (
129
+ Map .of ("traceparent" , List .of ("00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01" ),
130
+ "baggage" , List .of ("bag1=val1,bag2=val2" )));
128
131
Optional <SpanContext > spanContextOpt = tracer .extract (inboundHeaders );
129
132
assertThat ("Span context from inbound headers" , spanContextOpt , OptionalMatcher .optionalPresent ());
130
133
Span span = tracer .spanBuilder ("inbound" ).parent (spanContextOpt .get ()).start ();
@@ -172,7 +175,7 @@ void testBaggageAddedAfterActivation() {
172
175
final String BAGGAGE_KEY = "mykey" ;
173
176
final String BAGGAGE_VALUE = "myvalue" ;
174
177
final var tracer = io .helidon .tracing .Tracer .global ();
175
- final var span = tracer .spanBuilder ("baggageCanaryMinimal " ).start ();
178
+ final var span = tracer .spanBuilder ("baggageMinimal " ).start ();
176
179
try {
177
180
// Set baggage and confirm that it's known in the span
178
181
try (Scope scope = span .activate ()) {
@@ -186,6 +189,19 @@ void testBaggageAddedAfterActivation() {
186
189
}
187
190
}
188
191
192
+ @ Test
193
+ void testExtractWithNoCurrentSpan () {
194
+ final String BAGGAGE_KEY = "mykey" ;
195
+ final String BAGGAGE_VALUE = "myvalue" ;
196
+ final var tracer = io .helidon .tracing .Tracer .global ();
197
+
198
+ HeaderProvider headers = HeaderProvider .create (Map .of ("not-a-trace" , List .of ("1234567890123456" ),
199
+ "not-a-span" , List .of ("6543210987654321" )));
200
+ Optional <SpanContext > spanContext = tracer .extract (headers );
201
+
202
+ assertThat ("Current span reported" , spanContext , OptionalMatcher .optionalEmpty ());
203
+ }
204
+
189
205
private void checkBaggage (Tracer tracer , Span span , Supplier <SpanContext > spanContextSupplier ) {
190
206
String value = span .baggage (BAGGAGE_KEY ).orElseThrow ();
191
207
assertThat ("baggage value right after set" , value , Matchers .is (Matchers .equalTo (BAGGAGE_VALUE )));
0 commit comments