Some example of possible SDK configuration (#2263)

* Some example of possible SDK configuration

* Format
This commit is contained in:
Nikita Salnikov-Tarnovski 2020-12-11 11:12:13 +02:00 committed by GitHub
parent f88e207f09
commit 4a400fed2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 74 additions and 0 deletions

View File

@ -19,6 +19,7 @@ import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.context.propagation.TextMapPropagator;
import io.opentelemetry.sdk.OpenTelemetrySdk.ObfuscatedTracerProvider;
import io.opentelemetry.sdk.common.Clock;
import io.opentelemetry.sdk.internal.SystemClock;
@ -28,6 +29,9 @@ import io.opentelemetry.sdk.trace.IdGenerator;
import io.opentelemetry.sdk.trace.SpanProcessor;
import io.opentelemetry.sdk.trace.TracerSdkProvider;
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;
import org.mockito.Mock;
@ -190,4 +194,74 @@ class OpenTelemetrySdkTest {
IllegalArgumentException.class,
() -> OpenTelemetrySdk.builder().setTracerProvider(mock(TracerProvider.class)));
}
// This is just a demonstration of maximum that one can do with OpenTelemetry configuration.
// Demonstrates how clear or confusing is SDK configuration
@Test
void fullOpenTelemetrySdkConfigurationDemo() {
TraceConfig currentConfig = TraceConfig.getDefault();
TraceConfig newConfig =
currentConfig.toBuilder()
.setSampler(mock(Sampler.class))
.setMaxLengthOfAttributeValues(128)
.build();
OpenTelemetrySdk.Builder sdkBuilder =
OpenTelemetrySdk.builder()
.addSpanProcessor(mock(SpanProcessor.class))
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
.setIdGenerator(mock(IdGenerator.class))
.setPropagators(ContextPropagators.create(mock(TextMapPropagator.class)))
.setClock(mock(Clock.class))
.setResource(mock(Resource.class));
TracerSdkProvider tracerSdkProvider =
TracerSdkProvider.builder()
.setClock(mock(Clock.class))
.setIdGenerator(mock(IdGenerator.class))
.setResource(mock(Resource.class))
.setTraceConfig(newConfig)
.build();
MeterSdkProvider meterSdkProvider =
MeterSdkProvider.builder()
.setClock(mock(Clock.class))
.setResource(mock(Resource.class))
.build();
sdkBuilder.setTracerProvider(tracerSdkProvider);
sdkBuilder.setMeterProvider(meterSdkProvider);
sdkBuilder.setTraceConfig(newConfig);
sdkBuilder.build();
}
// This is just a demonstration of the bare minimal required configuration in order to get useful
// SDK.
// Demonstrates how clear or confusing is SDK configuration
@Test
void trivialOpenTelemetrySdkConfigurationDemo() {
OpenTelemetrySdk.builder()
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
.setPropagators(ContextPropagators.create(mock(TextMapPropagator.class)))
.build();
}
// This is just a demonstration of two small but not trivial configurations.
// Demonstrates how clear or confusing is SDK configuration
@Test
void minimalOpenTelemetrySdkConfigurationDemo() {
OpenTelemetrySdk.builder()
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
.setPropagators(ContextPropagators.create(mock(TextMapPropagator.class)))
.setTraceConfig(
TraceConfig.getDefault().toBuilder().setSampler(mock(Sampler.class)).build())
.build();
OpenTelemetrySdk.builder()
.addSpanProcessor(SimpleSpanProcessor.builder(mock(SpanExporter.class)).build())
.setPropagators(ContextPropagators.create(mock(TextMapPropagator.class)))
.setIdGenerator(mock(IdGenerator.class))
.build();
}
}