|
32 | 32 | import io.opentelemetry.api.trace.TraceState; |
33 | 33 | import io.opentelemetry.api.trace.TracerProvider; |
34 | 34 | import io.opentelemetry.context.Context; |
| 35 | +import io.opentelemetry.context.ContextKey; |
35 | 36 | import io.opentelemetry.context.Scope; |
36 | 37 | import io.opentelemetry.sdk.trace.data.LinkData; |
37 | 38 | import io.opentelemetry.sdk.trace.data.SpanData; |
|
47 | 48 | import org.junit.jupiter.api.BeforeEach; |
48 | 49 | import org.junit.jupiter.api.Test; |
49 | 50 | import org.junit.jupiter.api.extension.ExtendWith; |
| 51 | +import org.mockito.ArgumentCaptor; |
50 | 52 | import org.mockito.ArgumentMatchers; |
51 | 53 | import org.mockito.Mock; |
52 | 54 | import org.mockito.Mockito; |
@@ -940,6 +942,43 @@ void propagateRandomTraceIdFlag() { |
940 | 942 | } |
941 | 943 | } |
942 | 944 |
|
| 945 | + @Test |
| 946 | + void samplerReceivesPropagatorContextWithRandomTraceId() { |
| 947 | + Sampler mockSampler = Mockito.mock(Sampler.class); |
| 948 | + Mockito.when( |
| 949 | + mockSampler.shouldSample( |
| 950 | + ArgumentMatchers.any(), |
| 951 | + ArgumentMatchers.anyString(), |
| 952 | + ArgumentMatchers.anyString(), |
| 953 | + ArgumentMatchers.any(), |
| 954 | + ArgumentMatchers.any(), |
| 955 | + ArgumentMatchers.anyList())) |
| 956 | + .thenReturn(SamplingResult.recordAndSample()); |
| 957 | + |
| 958 | + SdkTracerProvider provider = SdkTracerProvider.builder().setSampler(mockSampler).build(); |
| 959 | + ContextKey<String> propagatorKey = ContextKey.named("propagator-test-key"); |
| 960 | + Context parentWithPropagatorData = Context.root().with(propagatorKey, "test-value"); |
| 961 | + |
| 962 | + Span span = |
| 963 | + provider.get("test").spanBuilder(SPAN_NAME).setParent(parentWithPropagatorData).startSpan(); |
| 964 | + span.end(); |
| 965 | + |
| 966 | + ArgumentCaptor<Context> contextCaptor = ArgumentCaptor.forClass(Context.class); |
| 967 | + Mockito.verify(mockSampler) |
| 968 | + .shouldSample( |
| 969 | + contextCaptor.capture(), |
| 970 | + ArgumentMatchers.anyString(), |
| 971 | + ArgumentMatchers.anyString(), |
| 972 | + ArgumentMatchers.any(), |
| 973 | + ArgumentMatchers.any(), |
| 974 | + ArgumentMatchers.anyList()); |
| 975 | + |
| 976 | + Context samplerContext = contextCaptor.getValue(); |
| 977 | + assertThat(samplerContext.get(propagatorKey)).isEqualTo("test-value"); |
| 978 | + assertThat(Span.fromContext(samplerContext).getSpanContext().getTraceFlags().isTraceIdRandom()) |
| 979 | + .isTrue(); |
| 980 | + } |
| 981 | + |
943 | 982 | @Test |
944 | 983 | void startTimestamp_numeric() { |
945 | 984 | SdkSpan span = |
|
0 commit comments