|
10 | 10 |
|
11 | 11 | import org.opensearch.test.OpenSearchTestCase;
|
12 | 12 |
|
| 13 | +import java.util.Arrays; |
13 | 14 | import java.util.HashMap;
|
| 15 | +import java.util.List; |
14 | 16 | import java.util.Map;
|
15 | 17 |
|
16 | 18 | import io.opentelemetry.api.OpenTelemetry;
|
|
19 | 21 | import io.opentelemetry.api.trace.TraceFlags;
|
20 | 22 | import io.opentelemetry.api.trace.TraceState;
|
21 | 23 | import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
|
| 24 | +import io.opentelemetry.context.Context; |
22 | 25 | import io.opentelemetry.context.propagation.ContextPropagators;
|
23 | 26 |
|
24 | 27 | import static org.mockito.Mockito.mock;
|
@@ -48,8 +51,39 @@ public void testExtractTracerContextFromHeader() {
|
48 | 51 | OpenTelemetry mockOpenTelemetry = mock(OpenTelemetry.class);
|
49 | 52 | when(mockOpenTelemetry.getPropagators()).thenReturn(ContextPropagators.create(W3CTraceContextPropagator.getInstance()));
|
50 | 53 | TracingContextPropagator tracingContextPropagator = new OTelTracingContextPropagator(mockOpenTelemetry);
|
51 |
| - org.opensearch.telemetry.tracing.Span span = tracingContextPropagator.extract(requestHeaders); |
| 54 | + org.opensearch.telemetry.tracing.Span span = tracingContextPropagator.extract(requestHeaders).orElse(null); |
52 | 55 | assertEquals(TRACE_ID, span.getTraceId());
|
53 | 56 | assertEquals(SPAN_ID, span.getSpanId());
|
54 | 57 | }
|
| 58 | + |
| 59 | + public void testExtractTracerContextFromHttpHeader() { |
| 60 | + Map<String, List<String>> requestHeaders = new HashMap<>(); |
| 61 | + requestHeaders.put("traceparent", Arrays.asList("00-" + TRACE_ID + "-" + SPAN_ID + "-00")); |
| 62 | + OpenTelemetry mockOpenTelemetry = mock(OpenTelemetry.class); |
| 63 | + when(mockOpenTelemetry.getPropagators()).thenReturn(ContextPropagators.create(W3CTraceContextPropagator.getInstance())); |
| 64 | + TracingContextPropagator tracingContextPropagator = new OTelTracingContextPropagator(mockOpenTelemetry); |
| 65 | + org.opensearch.telemetry.tracing.Span span = tracingContextPropagator.extractFromHeaders(requestHeaders).get(); |
| 66 | + assertEquals(TRACE_ID, span.getTraceId()); |
| 67 | + assertEquals(SPAN_ID, span.getSpanId()); |
| 68 | + } |
| 69 | + |
| 70 | + public void testExtractTracerContextFromHttpHeaderNull() { |
| 71 | + OpenTelemetry mockOpenTelemetry = mock(OpenTelemetry.class); |
| 72 | + when(mockOpenTelemetry.getPropagators()).thenReturn(ContextPropagators.create(W3CTraceContextPropagator.getInstance())); |
| 73 | + TracingContextPropagator tracingContextPropagator = new OTelTracingContextPropagator(mockOpenTelemetry); |
| 74 | + org.opensearch.telemetry.tracing.Span span = tracingContextPropagator.extractFromHeaders(null).get(); |
| 75 | + org.opensearch.telemetry.tracing.Span propagatedSpan = new OTelPropagatedSpan(Span.fromContext(Context.root())); |
| 76 | + assertEquals(propagatedSpan.getTraceId(), span.getTraceId()); |
| 77 | + assertEquals(propagatedSpan.getSpanId(), span.getSpanId()); |
| 78 | + } |
| 79 | + |
| 80 | + public void testExtractTracerContextFromHttpHeaderEmpty() { |
| 81 | + OpenTelemetry mockOpenTelemetry = mock(OpenTelemetry.class); |
| 82 | + when(mockOpenTelemetry.getPropagators()).thenReturn(ContextPropagators.create(W3CTraceContextPropagator.getInstance())); |
| 83 | + TracingContextPropagator tracingContextPropagator = new OTelTracingContextPropagator(mockOpenTelemetry); |
| 84 | + org.opensearch.telemetry.tracing.Span span = tracingContextPropagator.extractFromHeaders(new HashMap<>()).get(); |
| 85 | + org.opensearch.telemetry.tracing.Span propagatedSpan = new OTelPropagatedSpan(Span.fromContext(Context.root())); |
| 86 | + assertEquals(propagatedSpan.getTraceId(), span.getTraceId()); |
| 87 | + assertEquals(propagatedSpan.getSpanId(), span.getSpanId()); |
| 88 | + } |
55 | 89 | }
|
0 commit comments