Add SimpleSpanProcessor.create and deprecate SimpleSpanProcessorBuilder (#2374)
* Deprecate SimpleSpanProcessorBuilder * Null test
This commit is contained in:
parent
fa507d4e7c
commit
24ef29efea
|
@ -64,7 +64,7 @@ class JaegerThriftIntegrationTest {
|
|||
return OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(jaegerExporter).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(jaegerExporter))
|
||||
.build())
|
||||
.build();
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ class JaegerIntegrationTest {
|
|||
return OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(jaegerExporter).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(jaegerExporter))
|
||||
.build())
|
||||
.build();
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ public class SendTraceToJaeger {
|
|||
return OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(jaegerExporter).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(jaegerExporter))
|
||||
.build())
|
||||
.build();
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ class TraceInteroperabilityTest {
|
|||
spanExporter = spy(SpanExporter.class);
|
||||
when(spanExporter.export(anyList())).thenReturn(CompletableResultCode.ofSuccess());
|
||||
|
||||
SpanProcessor spanProcessor = SimpleSpanProcessor.builder(spanExporter).build();
|
||||
SpanProcessor spanProcessor = SimpleSpanProcessor.create(spanExporter);
|
||||
openTelemetry =
|
||||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(SdkTracerProvider.builder().addSpanProcessor(spanProcessor).build())
|
||||
|
|
|
@ -96,12 +96,11 @@ public class SpanPipelineBenchmark {
|
|||
public static class SimpleSpanProcessorBenchmark extends AbstractProcessorBenchmark {
|
||||
@Override
|
||||
protected SpanProcessor getSpanProcessor(String collectorAddress) {
|
||||
return SimpleSpanProcessor.builder(
|
||||
OtlpGrpcSpanExporter.builder()
|
||||
.setEndpoint(collectorAddress)
|
||||
.setDeadlineMs(50000)
|
||||
.build())
|
||||
.build();
|
||||
return SimpleSpanProcessor.create(
|
||||
OtlpGrpcSpanExporter.builder()
|
||||
.setEndpoint(collectorAddress)
|
||||
.setDeadlineMs(50000)
|
||||
.build());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -158,8 +158,8 @@ class OpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(mock(SpanExporter.class)))
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(mock(SpanExporter.class)))
|
||||
.setClock(mock(Clock.class))
|
||||
.setIdGenerator(mock(IdGenerator.class))
|
||||
.setResource(mock(Resource.class))
|
||||
|
@ -177,7 +177,7 @@ class OpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(mock(SpanExporter.class)))
|
||||
.build())
|
||||
.setPropagators(ContextPropagators.create(mock(TextMapPropagator.class)))
|
||||
.build();
|
||||
|
@ -190,7 +190,7 @@ class OpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(mock(SpanExporter.class)))
|
||||
.setTraceConfig(
|
||||
TraceConfig.getDefault().toBuilder().setSampler(mock(Sampler.class)).build())
|
||||
.build())
|
||||
|
@ -200,7 +200,7 @@ class OpenTelemetrySdkTest {
|
|||
OpenTelemetrySdk.builder()
|
||||
.setTracerProvider(
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(mock(SpanExporter.class)))
|
||||
.setTraceConfig(
|
||||
TraceConfig.getDefault().toBuilder().setSampler(mock(Sampler.class)).build())
|
||||
.setIdGenerator(mock(IdGenerator.class))
|
||||
|
|
|
@ -53,7 +53,7 @@ public final class OpenTelemetryRule extends ExternalResource {
|
|||
|
||||
SdkTracerProvider tracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(spanExporter).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(spanExporter))
|
||||
.build();
|
||||
|
||||
OpenTelemetrySdk openTelemetry =
|
||||
|
|
|
@ -59,7 +59,7 @@ public final class OpenTelemetryExtension
|
|||
|
||||
SdkTracerProvider tracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(spanExporter).build())
|
||||
.addSpanProcessor(SimpleSpanProcessor.create(spanExporter))
|
||||
.build();
|
||||
|
||||
OpenTelemetrySdk openTelemetry =
|
||||
|
|
|
@ -32,9 +32,7 @@ class InMemorySpanExporterTest {
|
|||
@BeforeEach
|
||||
void setup() {
|
||||
tracerProvider =
|
||||
SdkTracerProvider.builder()
|
||||
.addSpanProcessor(SimpleSpanProcessor.builder(exporter).build())
|
||||
.build();
|
||||
SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(exporter)).build();
|
||||
tracer = tracerProvider.get("InMemorySpanExporterTest");
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.trace.export;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.trace.ReadWriteSpan;
|
||||
|
@ -13,7 +15,6 @@ import io.opentelemetry.sdk.trace.SpanProcessor;
|
|||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
@ -48,19 +49,30 @@ public final class SimpleSpanProcessor implements SpanProcessor {
|
|||
private final boolean sampled;
|
||||
private final AtomicBoolean isShutdown = new AtomicBoolean(false);
|
||||
|
||||
/**
|
||||
* Returns a new {@link SimpleSpanProcessor} which exports spans to the {@link SpanExporter}
|
||||
* synchronously.
|
||||
*/
|
||||
public static SpanProcessor create(SpanExporter exporter) {
|
||||
requireNonNull(exporter, "exporter");
|
||||
return new SimpleSpanProcessor(exporter, /* sampled= */ true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a new Builder for {@link SimpleSpanProcessor}.
|
||||
*
|
||||
* @param spanExporter the {@code SpanExporter} to where the Spans are pushed.
|
||||
* @return a new {@link SimpleSpanProcessor}.
|
||||
* @throws NullPointerException if the {@code spanExporter} is {@code null}.
|
||||
* @deprecated Use {@link SimpleSpanProcessor#create(SpanExporter)}
|
||||
*/
|
||||
@Deprecated
|
||||
public static SimpleSpanProcessorBuilder builder(SpanExporter spanExporter) {
|
||||
return new SimpleSpanProcessorBuilder(spanExporter);
|
||||
}
|
||||
|
||||
SimpleSpanProcessor(SpanExporter spanExporter, boolean sampled) {
|
||||
this.spanExporter = Objects.requireNonNull(spanExporter, "spanExporter");
|
||||
this.spanExporter = requireNonNull(spanExporter, "spanExporter");
|
||||
this.sampled = sampled;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,12 @@ import io.opentelemetry.sdk.common.export.ConfigBuilder;
|
|||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/** Builder class for {@link SimpleSpanProcessor}. */
|
||||
/**
|
||||
* Builder class for {@link SimpleSpanProcessor}.
|
||||
*
|
||||
* @deprecated Use {@link SimpleSpanProcessor#create(SpanExporter)}
|
||||
*/
|
||||
@Deprecated
|
||||
public final class SimpleSpanProcessorBuilder extends ConfigBuilder<SimpleSpanProcessorBuilder> {
|
||||
|
||||
private static final String KEY_SAMPLED = "otel.ssp.export.sampled";
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
package io.opentelemetry.sdk.trace.export;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoInteractions;
|
||||
|
@ -23,6 +24,7 @@ import io.opentelemetry.sdk.common.CompletableResultCode;
|
|||
import io.opentelemetry.sdk.trace.ReadWriteSpan;
|
||||
import io.opentelemetry.sdk.trace.ReadableSpan;
|
||||
import io.opentelemetry.sdk.trace.SdkTracerProvider;
|
||||
import io.opentelemetry.sdk.trace.SpanProcessor;
|
||||
import io.opentelemetry.sdk.trace.TestUtils;
|
||||
import io.opentelemetry.sdk.trace.data.SpanData;
|
||||
import io.opentelemetry.sdk.trace.export.BatchSpanProcessorTest.WaitingSpanExporter;
|
||||
|
@ -41,6 +43,8 @@ import org.mockito.quality.Strictness;
|
|||
/** Unit tests for {@link SimpleSpanProcessor}. */
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
// TODO(anuraaga): Remove after builder() is removed.
|
||||
@SuppressWarnings("deprecation")
|
||||
class SimpleSpanProcessorTest {
|
||||
private static final long MAX_SCHEDULE_DELAY_MILLIS = 500;
|
||||
private static final String SPAN_NAME = "MySpanName";
|
||||
|
@ -55,11 +59,18 @@ class SimpleSpanProcessorTest {
|
|||
TraceState.builder().build());
|
||||
private static final SpanContext NOT_SAMPLED_SPAN_CONTEXT = SpanContext.getInvalid();
|
||||
|
||||
private SimpleSpanProcessor simpleSampledSpansProcessor;
|
||||
private SpanProcessor simpleSampledSpansProcessor;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
simpleSampledSpansProcessor = SimpleSpanProcessor.builder(spanExporter).build();
|
||||
simpleSampledSpansProcessor = SimpleSpanProcessor.create(spanExporter);
|
||||
}
|
||||
|
||||
@Test
|
||||
void createNull() {
|
||||
assertThatThrownBy(() -> SimpleSpanProcessor.create(null))
|
||||
.isInstanceOf(NullPointerException.class)
|
||||
.hasMessage("exporter");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -107,7 +118,7 @@ class SimpleSpanProcessorTest {
|
|||
when(readableSpan.toSpanData())
|
||||
.thenReturn(TestUtils.makeBasicSpan())
|
||||
.thenThrow(new RuntimeException());
|
||||
SimpleSpanProcessor simpleSpanProcessor = SimpleSpanProcessor.builder(spanExporter).build();
|
||||
SpanProcessor simpleSpanProcessor = SimpleSpanProcessor.create(spanExporter);
|
||||
simpleSpanProcessor.onEnd(readableSpan);
|
||||
verifyNoInteractions(spanExporter);
|
||||
}
|
||||
|
@ -118,7 +129,7 @@ class SimpleSpanProcessorTest {
|
|||
when(readableSpan.toSpanData())
|
||||
.thenReturn(TestUtils.makeBasicSpan())
|
||||
.thenThrow(new RuntimeException());
|
||||
SimpleSpanProcessor simpleSpanProcessor = SimpleSpanProcessor.builder(spanExporter).build();
|
||||
SpanProcessor simpleSpanProcessor = SimpleSpanProcessor.create(spanExporter);
|
||||
simpleSpanProcessor.onEnd(readableSpan);
|
||||
verify(spanExporter).export(Collections.singletonList(TestUtils.makeBasicSpan()));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue