Avoid using mutable addSpanProcessor when trivial to change (#2365)
* Run go mod tidy on the master * Fixes Co-authored-by: Anuraag Agrawal <aanuraag@amazon.co.jp>
This commit is contained in:
parent
8dfdce3fe9
commit
95163d71fb
|
|
@ -25,6 +25,7 @@ import io.opentelemetry.sdk.metrics.data.MetricData.Point;
|
|||
import io.opentelemetry.sdk.metrics.export.IntervalMetricReader;
|
||||
import io.opentelemetry.sdk.metrics.export.MetricExporter;
|
||||
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricExporter;
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||
import io.opentelemetry.sdk.trace.export.BatchSpanProcessor;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
|
|
@ -267,6 +268,10 @@ public class OtlpPipelineStressTest {
|
|||
// .setMaxExportBatchSize(1024)
|
||||
// .setScheduleDelayMillis(1000)
|
||||
.build();
|
||||
OpenTelemetrySdk.getGlobalTracerManagement().addSpanProcessor(spanProcessor);
|
||||
|
||||
GlobalOpenTelemetry.set(
|
||||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(SdkTracerProvider.builder().addSpanProcessor(spanProcessor).build())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import io.opentelemetry.api.trace.Tracer;
|
|||
import io.opentelemetry.context.ContextStorage;
|
||||
import io.opentelemetry.context.Scope;
|
||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
|
|
@ -29,7 +30,11 @@ class JfrSpanProcessorTest {
|
|||
|
||||
static {
|
||||
ContextStorage.addWrapper(JfrContextStorageWrapper::new);
|
||||
OpenTelemetrySdk.getGlobalTracerManagement().addSpanProcessor(new JfrSpanProcessor());
|
||||
GlobalOpenTelemetry.set(
|
||||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder().addSpanProcessor(new JfrSpanProcessor()).build())
|
||||
.build());
|
||||
}
|
||||
|
||||
/** Simple test to validate JFR events for Span and Scope. */
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import io.opentelemetry.sdk.trace.data.SpanData;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/** Unit tests for {@link TracezDataAggregator}. */
|
||||
|
|
@ -25,17 +24,12 @@ public final class TracezDataAggregatorTest {
|
|||
private static final String SPAN_NAME_ONE = "one";
|
||||
private static final String SPAN_NAME_TWO = "two";
|
||||
private final TestClock testClock = TestClock.create();
|
||||
private final SdkTracerProvider sdkTracerProvider =
|
||||
SdkTracerProvider.builder().setClock(testClock).build();
|
||||
private final Tracer tracer = sdkTracerProvider.get("TracezDataAggregatorTest");
|
||||
private final TracezSpanProcessor spanProcessor = TracezSpanProcessor.builder().build();
|
||||
private final SdkTracerProvider sdkTracerProvider =
|
||||
SdkTracerProvider.builder().setClock(testClock).addSpanProcessor(spanProcessor).build();
|
||||
private final Tracer tracer = sdkTracerProvider.get("TracezDataAggregatorTest");
|
||||
private final TracezDataAggregator dataAggregator = new TracezDataAggregator(spanProcessor);
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
sdkTracerProvider.addSpanProcessor(spanProcessor);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getSpanNames_noSpans() {
|
||||
assertThat(dataAggregator.getSpanNames()).isEmpty();
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ import java.net.URI;
|
|||
import java.net.URISyntaxException;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
|
@ -38,18 +37,13 @@ class TracezZPageHandlerTest {
|
|||
private static final String LATENCY_SPAN = "LatencySpan";
|
||||
private static final String ERROR_SPAN = "ErrorSpan";
|
||||
private final TestClock testClock = TestClock.create();
|
||||
private final SdkTracerProvider sdkTracerProvider =
|
||||
SdkTracerProvider.builder().setClock(testClock).build();
|
||||
private final Tracer tracer = sdkTracerProvider.get("TracezZPageHandlerTest");
|
||||
private final TracezSpanProcessor spanProcessor = TracezSpanProcessor.builder().build();
|
||||
private final SdkTracerProvider sdkTracerProvider =
|
||||
SdkTracerProvider.builder().setClock(testClock).addSpanProcessor(spanProcessor).build();
|
||||
private final Tracer tracer = sdkTracerProvider.get("TracezZPageHandlerTest");
|
||||
private final TracezDataAggregator dataAggregator = new TracezDataAggregator(spanProcessor);
|
||||
private final Map<String, String> emptyQueryMap = ImmutableMap.of();
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
sdkTracerProvider.addSpanProcessor(spanProcessor);
|
||||
}
|
||||
|
||||
@Test
|
||||
void summaryTable_emitRowForEachSpan() {
|
||||
OutputStream output = new ByteArrayOutputStream();
|
||||
|
|
|
|||
|
|
@ -72,8 +72,10 @@ public class SpanPipelineBenchmark {
|
|||
TraceConfig.getDefault().toBuilder().setSampler(Sampler.alwaysOn()).build();
|
||||
|
||||
SdkTracerProvider tracerProvider =
|
||||
SdkTracerProvider.builder().setTraceConfig(alwaysOn).build();
|
||||
tracerProvider.addSpanProcessor(getSpanProcessor(address));
|
||||
SdkTracerProvider.builder()
|
||||
.setTraceConfig(alwaysOn)
|
||||
.addSpanProcessor(getSpanProcessor(address))
|
||||
.build();
|
||||
|
||||
Tracer tracerSdk = tracerProvider.get("PipelineBenchmarkTracer");
|
||||
sdkSpanBuilder = (SdkSpanBuilder) tracerSdk.spanBuilder("PipelineBenchmarkSpan");
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ import io.opentelemetry.sdk.trace.IdGenerator;
|
|||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||
import io.opentelemetry.sdk.trace.SpanProcessor;
|
||||
import io.opentelemetry.sdk.trace.config.TraceConfig;
|
||||
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
|
||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||
import io.opentelemetry.sdk.trace.samplers.Sampler;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
|
|
@ -153,11 +155,8 @@ class OpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
// TODO: Add support to configure SpanProcessor the builder.
|
||||
// .addSpanProcessor(SimpleSpanProcessor.builder(
|
||||
// mock(SpanExporter.class)).build())
|
||||
// .addSpanProcessor(SimpleSpanProcessor.builder(
|
||||
// mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.setClock(mock(Clock.class))
|
||||
.setIdGenerator(mock(IdGenerator.class))
|
||||
.setResource(mock(Resource.class))
|
||||
|
|
@ -175,8 +174,7 @@ class OpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
// TODO: Add support to configure SpanProcessor the builder.
|
||||
// .addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.build())
|
||||
.setPropagators(ContextPropagators.create(mock(TextMapPropagator.class)))
|
||||
.build();
|
||||
|
|
@ -189,8 +187,7 @@ class OpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
// TODO: Add support to configure SpanProcessor the builder.
|
||||
// .addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.setTraceConfig(
|
||||
TraceConfig.getDefault().toBuilder().setSampler(mock(Sampler.class)).build())
|
||||
.build())
|
||||
|
|
@ -200,8 +197,7 @@ class OpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
// TODO: Add support to configure SpanProcessor the builder.
|
||||
// .addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.setTraceConfig(
|
||||
TraceConfig.getDefault().toBuilder().setSampler(mock(Sampler.class)).build())
|
||||
.setIdGenerator(mock(IdGenerator.class))
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ final class TracerSharedState {
|
|||
private volatile boolean isStopped = false;
|
||||
|
||||
@GuardedBy("lock")
|
||||
private final List<SpanProcessor> registeredSpanProcessors = new ArrayList<>();
|
||||
private final List<SpanProcessor> registeredSpanProcessors;
|
||||
|
||||
TracerSharedState(
|
||||
Clock clock,
|
||||
|
|
@ -39,7 +39,8 @@ final class TracerSharedState {
|
|||
this.idGenerator = idGenerator;
|
||||
this.resource = resource;
|
||||
this.activeTraceConfig = traceConfig;
|
||||
spanProcessors.forEach(this::addSpanProcessor);
|
||||
this.registeredSpanProcessors = new ArrayList<>(spanProcessors);
|
||||
activeSpanProcessor = SpanProcessor.composite(registeredSpanProcessors);
|
||||
}
|
||||
|
||||
Clock getClock() {
|
||||
|
|
|
|||
|
|
@ -58,14 +58,16 @@ class SdkSpanBuilderTest {
|
|||
TraceState.getDefault());
|
||||
private final SpanProcessor mockedSpanProcessor = Mockito.mock(SpanProcessor.class);
|
||||
|
||||
private final SdkTracerProvider tracerSdkFactory = SdkTracerProvider.builder().build();
|
||||
private final SdkTracer sdkTracer = (SdkTracer) tracerSdkFactory.get("SpanBuilderSdkTest");
|
||||
private SdkTracerProvider tracerSdkFactory;
|
||||
private SdkTracer sdkTracer;
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
tracerSdkFactory = SdkTracerProvider.builder().addSpanProcessor(mockedSpanProcessor).build();
|
||||
sdkTracer = (SdkTracer) tracerSdkFactory.get("SpanBuilderSdkTest");
|
||||
|
||||
Mockito.when(mockedSpanProcessor.isStartRequired()).thenReturn(true);
|
||||
Mockito.when(mockedSpanProcessor.isEndRequired()).thenReturn(true);
|
||||
tracerSdkFactory.addSpanProcessor(mockedSpanProcessor);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -32,13 +32,13 @@ import org.mockito.quality.Strictness;
|
|||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
class SdkTracerProviderTest {
|
||||
@Mock private SpanProcessor spanProcessor;
|
||||
private final SdkTracerProvider tracerFactory = SdkTracerProvider.builder().build();
|
||||
private SdkTracerProvider tracerFactory;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
tracerFactory = SdkTracerProvider.builder().addSpanProcessor(spanProcessor).build();
|
||||
when(spanProcessor.forceFlush()).thenReturn(CompletableResultCode.ofSuccess());
|
||||
when(spanProcessor.shutdown()).thenReturn(CompletableResultCode.ofSuccess());
|
||||
tracerFactory.addSpanProcessor(spanProcessor);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -63,8 +63,8 @@ class SdkTracerTest {
|
|||
@Test
|
||||
void stressTest() {
|
||||
CountingSpanProcessor spanProcessor = new CountingSpanProcessor();
|
||||
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder().build();
|
||||
sdkTracerProvider.addSpanProcessor(spanProcessor);
|
||||
SdkTracerProvider sdkTracerProvider =
|
||||
SdkTracerProvider.builder().addSpanProcessor(spanProcessor).build();
|
||||
SdkTracer tracer =
|
||||
(SdkTracer)
|
||||
sdkTracerProvider.get(INSTRUMENTATION_LIBRARY_NAME, INSTRUMENTATION_LIBRARY_VERSION);
|
||||
|
|
@ -86,8 +86,8 @@ class SdkTracerTest {
|
|||
void stressTest_withBatchSpanProcessor() {
|
||||
CountingSpanExporter countingSpanExporter = new CountingSpanExporter();
|
||||
SpanProcessor spanProcessor = BatchSpanProcessor.builder(countingSpanExporter).build();
|
||||
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder().build();
|
||||
sdkTracerProvider.addSpanProcessor(spanProcessor);
|
||||
SdkTracerProvider sdkTracerProvider =
|
||||
SdkTracerProvider.builder().addSpanProcessor(spanProcessor).build();
|
||||
SdkTracer tracer =
|
||||
(SdkTracer)
|
||||
sdkTracerProvider.get(INSTRUMENTATION_LIBRARY_NAME, INSTRUMENTATION_LIBRARY_VERSION);
|
||||
|
|
|
|||
|
|
@ -42,14 +42,15 @@ class BatchSpanProcessorTest {
|
|||
private static final String SPAN_NAME_1 = "MySpanName/1";
|
||||
private static final String SPAN_NAME_2 = "MySpanName/2";
|
||||
private static final long MAX_SCHEDULE_DELAY_MILLIS = 500;
|
||||
private final SdkTracerProvider tracerSdkFactory = SdkTracerProvider.builder().build();
|
||||
private final Tracer tracer = tracerSdkFactory.get("BatchSpanProcessorTest");
|
||||
private SdkTracerProvider sdkTracerProvider;
|
||||
private final BlockingSpanExporter blockingSpanExporter = new BlockingSpanExporter();
|
||||
@Mock private SpanExporter mockServiceHandler;
|
||||
|
||||
@AfterEach
|
||||
void cleanup() {
|
||||
tracerSdkFactory.shutdown();
|
||||
if (sdkTracerProvider != null) {
|
||||
sdkTracerProvider.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(bdrutu): Fix this when Sampler return RECORD_ONLY option.
|
||||
|
|
@ -63,15 +64,17 @@ class BatchSpanProcessorTest {
|
|||
*/
|
||||
|
||||
private ReadableSpan createSampledEndedSpan(String spanName) {
|
||||
Tracer tracer = sdkTracerProvider.get(getClass().getName());
|
||||
Span span =
|
||||
TestUtils.startSpanWithSampler(tracerSdkFactory, tracer, spanName, Sampler.alwaysOn())
|
||||
TestUtils.startSpanWithSampler(sdkTracerProvider, tracer, spanName, Sampler.alwaysOn())
|
||||
.startSpan();
|
||||
span.end();
|
||||
return (ReadableSpan) span;
|
||||
}
|
||||
|
||||
private void createNotSampledEndedSpan(String spanName) {
|
||||
TestUtils.startSpanWithSampler(tracerSdkFactory, tracer, spanName, Sampler.alwaysOff())
|
||||
Tracer tracer = sdkTracerProvider.get(getClass().getName());
|
||||
TestUtils.startSpanWithSampler(sdkTracerProvider, tracer, spanName, Sampler.alwaysOff())
|
||||
.startSpan()
|
||||
.end();
|
||||
}
|
||||
|
|
@ -124,10 +127,13 @@ class BatchSpanProcessorTest {
|
|||
void exportDifferentSampledSpans() {
|
||||
WaitingSpanExporter waitingSpanExporter =
|
||||
new WaitingSpanExporter(2, CompletableResultCode.ofSuccess());
|
||||
tracerSdkFactory.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build());
|
||||
sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
ReadableSpan span1 = createSampledEndedSpan(SPAN_NAME_1);
|
||||
ReadableSpan span2 = createSampledEndedSpan(SPAN_NAME_2);
|
||||
|
|
@ -138,14 +144,16 @@ class BatchSpanProcessorTest {
|
|||
@Test
|
||||
void exportMoreSpansThanTheBufferSize() {
|
||||
CompletableSpanExporter spanExporter = new CompletableSpanExporter();
|
||||
BatchSpanProcessor batchSpanProcessor =
|
||||
BatchSpanProcessor.builder(spanExporter)
|
||||
.setMaxQueueSize(6)
|
||||
.setMaxExportBatchSize(2)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build();
|
||||
|
||||
tracerSdkFactory.addSpanProcessor(batchSpanProcessor);
|
||||
sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(spanExporter)
|
||||
.setMaxQueueSize(6)
|
||||
.setMaxExportBatchSize(2)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
ReadableSpan span1 = createSampledEndedSpan(SPAN_NAME_1);
|
||||
ReadableSpan span2 = createSampledEndedSpan(SPAN_NAME_1);
|
||||
|
|
@ -182,7 +190,7 @@ class BatchSpanProcessorTest {
|
|||
.setScheduleDelayMillis(10_000) // 10s
|
||||
.build();
|
||||
|
||||
tracerSdkFactory.addSpanProcessor(batchSpanProcessor);
|
||||
sdkTracerProvider = SdkTracerProvider.builder().addSpanProcessor(batchSpanProcessor).build();
|
||||
for (int i = 0; i < 100; i++) {
|
||||
createSampledEndedSpan("notExported");
|
||||
}
|
||||
|
|
@ -202,11 +210,15 @@ class BatchSpanProcessorTest {
|
|||
new WaitingSpanExporter(2, CompletableResultCode.ofSuccess());
|
||||
WaitingSpanExporter waitingSpanExporter2 =
|
||||
new WaitingSpanExporter(2, CompletableResultCode.ofSuccess());
|
||||
tracerSdkFactory.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(
|
||||
SpanExporter.composite(Arrays.asList(waitingSpanExporter, waitingSpanExporter2)))
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build());
|
||||
sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(
|
||||
SpanExporter.composite(
|
||||
Arrays.asList(waitingSpanExporter, waitingSpanExporter2)))
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
ReadableSpan span1 = createSampledEndedSpan(SPAN_NAME_1);
|
||||
ReadableSpan span2 = createSampledEndedSpan(SPAN_NAME_2);
|
||||
|
|
@ -221,14 +233,17 @@ class BatchSpanProcessorTest {
|
|||
final int maxQueuedSpans = 8;
|
||||
WaitingSpanExporter waitingSpanExporter =
|
||||
new WaitingSpanExporter(maxQueuedSpans, CompletableResultCode.ofSuccess());
|
||||
BatchSpanProcessor batchSpanProcessor =
|
||||
BatchSpanProcessor.builder(
|
||||
SpanExporter.composite(Arrays.asList(blockingSpanExporter, waitingSpanExporter)))
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.setMaxQueueSize(maxQueuedSpans)
|
||||
.setMaxExportBatchSize(maxQueuedSpans / 2)
|
||||
sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(
|
||||
SpanExporter.composite(
|
||||
Arrays.asList(blockingSpanExporter, waitingSpanExporter)))
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.setMaxQueueSize(maxQueuedSpans)
|
||||
.setMaxExportBatchSize(maxQueuedSpans / 2)
|
||||
.build())
|
||||
.build();
|
||||
tracerSdkFactory.addSpanProcessor(batchSpanProcessor);
|
||||
|
||||
List<SpanData> spansToExport = new ArrayList<>(maxQueuedSpans + 1);
|
||||
// Wait to block the worker thread in the BatchSampledSpansProcessor. This ensures that no items
|
||||
|
|
@ -286,11 +301,15 @@ class BatchSpanProcessorTest {
|
|||
doThrow(new IllegalArgumentException("No export for you."))
|
||||
.when(mockServiceHandler)
|
||||
.export(ArgumentMatchers.anyList());
|
||||
tracerSdkFactory.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(
|
||||
SpanExporter.composite(Arrays.asList(mockServiceHandler, waitingSpanExporter)))
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build());
|
||||
sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(
|
||||
SpanExporter.composite(
|
||||
Arrays.asList(mockServiceHandler, waitingSpanExporter)))
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build())
|
||||
.build();
|
||||
ReadableSpan span1 = createSampledEndedSpan(SPAN_NAME_1);
|
||||
List<SpanData> exported = waitingSpanExporter.waitForExport();
|
||||
assertThat(exported).containsExactly(span1.toSpanData());
|
||||
|
|
@ -332,15 +351,16 @@ class BatchSpanProcessorTest {
|
|||
};
|
||||
|
||||
int exporterTimeoutMillis = 100;
|
||||
BatchSpanProcessor batchSpanProcessor =
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setExporterTimeoutMillis(exporterTimeoutMillis)
|
||||
.setScheduleDelayMillis(1)
|
||||
.setMaxQueueSize(1)
|
||||
sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setExporterTimeoutMillis(exporterTimeoutMillis)
|
||||
.setScheduleDelayMillis(1)
|
||||
.setMaxQueueSize(1)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
tracerSdkFactory.addSpanProcessor(batchSpanProcessor);
|
||||
|
||||
ReadableSpan span = createSampledEndedSpan(SPAN_NAME_1);
|
||||
List<SpanData> exported = waitingSpanExporter.waitForExport();
|
||||
assertThat(exported).containsExactly(span.toSpanData());
|
||||
|
|
@ -354,11 +374,13 @@ class BatchSpanProcessorTest {
|
|||
void exportNotSampledSpans() {
|
||||
WaitingSpanExporter waitingSpanExporter =
|
||||
new WaitingSpanExporter(1, CompletableResultCode.ofSuccess());
|
||||
BatchSpanProcessor batchSpanProcessor =
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build())
|
||||
.build();
|
||||
tracerSdkFactory.addSpanProcessor(batchSpanProcessor);
|
||||
|
||||
createNotSampledEndedSpan(SPAN_NAME_1);
|
||||
createNotSampledEndedSpan(SPAN_NAME_2);
|
||||
|
|
@ -377,7 +399,7 @@ class BatchSpanProcessorTest {
|
|||
void exportNotSampledSpans_recordingEvents() {
|
||||
// TODO(bdrutu): Fix this when Sampler return RECORD_ONLY option.
|
||||
/*
|
||||
tracerSdkFactory.addSpanProcessor(
|
||||
sdkTracerProvider.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.reportOnlySampled(false)
|
||||
|
|
@ -393,7 +415,7 @@ class BatchSpanProcessorTest {
|
|||
void exportNotSampledSpans_reportOnlySampled() {
|
||||
// TODO(bdrutu): Fix this when Sampler return RECORD_ONLY option.
|
||||
/*
|
||||
tracerSdkFactory.addSpanProcessor(
|
||||
sdkTracerProvider.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.reportOnlySampled(true)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
|
|
@ -413,13 +435,18 @@ class BatchSpanProcessorTest {
|
|||
new WaitingSpanExporter(1, CompletableResultCode.ofSuccess());
|
||||
// Set the export delay to large value, in order to confirm the #flush() below works
|
||||
|
||||
tracerSdkFactory.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter).setScheduleDelayMillis(10_000).build());
|
||||
sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setScheduleDelayMillis(10_000)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
ReadableSpan span2 = createSampledEndedSpan(SPAN_NAME_2);
|
||||
|
||||
// Force a shutdown, which forces processing of all remaining spans.
|
||||
tracerSdkFactory.shutdown();
|
||||
sdkTracerProvider.shutdown();
|
||||
|
||||
List<SpanData> exported = waitingSpanExporter.getExported();
|
||||
assertThat(exported).containsExactly(span2.toSpanData());
|
||||
|
|
|
|||
|
|
@ -47,8 +47,6 @@ class SimpleSpanProcessorTest {
|
|||
@Mock private ReadableSpan readableSpan;
|
||||
@Mock private ReadWriteSpan readWriteSpan;
|
||||
@Mock private SpanExporter spanExporter;
|
||||
private final SdkTracerProvider tracerSdkFactory = SdkTracerProvider.builder().build();
|
||||
private final Tracer tracer = tracerSdkFactory.get("SimpleSpanProcessor");
|
||||
private static final SpanContext SAMPLED_SPAN_CONTEXT =
|
||||
SpanContext.create(
|
||||
TraceId.getInvalid(),
|
||||
|
|
@ -129,30 +127,37 @@ class SimpleSpanProcessorTest {
|
|||
void tracerSdk_NotSampled_Span() {
|
||||
WaitingSpanExporter waitingSpanExporter =
|
||||
new WaitingSpanExporter(1, CompletableResultCode.ofSuccess());
|
||||
SdkTracerProvider sdkTracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
tracerSdkFactory.addSpanProcessor(
|
||||
BatchSpanProcessor.builder(waitingSpanExporter)
|
||||
.setScheduleDelayMillis(MAX_SCHEDULE_DELAY_MILLIS)
|
||||
.build());
|
||||
try {
|
||||
Tracer tracer = sdkTracerProvider.get(getClass().getName());
|
||||
TestUtils.startSpanWithSampler(sdkTracerProvider, tracer, SPAN_NAME, Sampler.alwaysOff())
|
||||
.startSpan()
|
||||
.end();
|
||||
TestUtils.startSpanWithSampler(sdkTracerProvider, tracer, SPAN_NAME, Sampler.alwaysOff())
|
||||
.startSpan()
|
||||
.end();
|
||||
|
||||
TestUtils.startSpanWithSampler(tracerSdkFactory, tracer, SPAN_NAME, Sampler.alwaysOff())
|
||||
.startSpan()
|
||||
.end();
|
||||
TestUtils.startSpanWithSampler(tracerSdkFactory, tracer, SPAN_NAME, Sampler.alwaysOff())
|
||||
.startSpan()
|
||||
.end();
|
||||
Span span = tracer.spanBuilder(SPAN_NAME).startSpan();
|
||||
span.end();
|
||||
|
||||
Span span = tracer.spanBuilder(SPAN_NAME).startSpan();
|
||||
span.end();
|
||||
|
||||
// Spans are recorded and exported in the same order as they are ended, we test that a non
|
||||
// sampled span is not exported by creating and ending a sampled span after a non sampled span
|
||||
// and checking that the first exported span is the sampled span (the non sampled did not get
|
||||
// exported).
|
||||
List<SpanData> exported = waitingSpanExporter.waitForExport();
|
||||
// Need to check this because otherwise the variable span1 is unused, other option is to not
|
||||
// have a span1 variable.
|
||||
assertThat(exported).containsExactly(((ReadableSpan) span).toSpanData());
|
||||
// Spans are recorded and exported in the same order as they are ended, we test that a non
|
||||
// sampled span is not exported by creating and ending a sampled span after a non sampled span
|
||||
// and checking that the first exported span is the sampled span (the non sampled did not get
|
||||
// exported).
|
||||
List<SpanData> exported = waitingSpanExporter.waitForExport();
|
||||
// Need to check this because otherwise the variable span1 is unused, other option is to not
|
||||
// have a span1 variable.
|
||||
assertThat(exported).containsExactly(((ReadableSpan) span).toSpanData());
|
||||
} finally {
|
||||
sdkTracerProvider.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
Loading…
Reference in New Issue