Fix OpenTelemetrySdk(.tracerProvider).tracerBuilder() being noop. (#3466)

* Add test for obfuscated tracerBuilder.

* Fix bug, add more tests.
This commit is contained in:
Christian Neumüller 2021-08-11 18:02:09 +02:00 committed by GitHub
parent d9e1151336
commit dd7cae97d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 2 deletions

View File

@ -206,5 +206,10 @@ public final class GlobalOpenTelemetry {
public ContextPropagators getPropagators() {
return delegate.getPropagators();
}
@Override
public TracerBuilder tracerBuilder(String instrumentationName) {
return delegate.tracerBuilder(instrumentationName);
}
}
}

View File

@ -7,6 +7,7 @@ package io.opentelemetry.sdk;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.api.trace.TracerBuilder;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.context.propagation.ContextPropagators;
import io.opentelemetry.sdk.trace.SdkTracerProvider;
@ -73,6 +74,11 @@ public final class OpenTelemetrySdk implements OpenTelemetry {
return delegate.get(instrumentationName, instrumentationVersion);
}
@Override
public TracerBuilder tracerBuilder(String instrumentationName) {
return delegate.tracerBuilder(instrumentationName);
}
public SdkTracerProvider unobfuscate() {
return delegate;
}

View File

@ -11,6 +11,7 @@ import static org.assertj.core.api.InstanceOfAssertFactories.type;
import static org.mockito.Mockito.mock;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.trace.TracerProvider;
import io.opentelemetry.context.propagation.ContextPropagators;
@ -72,9 +73,20 @@ class OpenTelemetrySdkTest {
@Test
void testShortcutVersions() {
assertThat(GlobalOpenTelemetry.getTracer("testTracer1"))
.isEqualTo(GlobalOpenTelemetry.getTracerProvider().get("testTracer1"));
.isSameAs(GlobalOpenTelemetry.getTracerProvider().get("testTracer1"));
assertThat(GlobalOpenTelemetry.getTracer("testTracer2", "testVersion"))
.isEqualTo(GlobalOpenTelemetry.getTracerProvider().get("testTracer2", "testVersion"));
.isSameAs(GlobalOpenTelemetry.getTracerProvider().get("testTracer2", "testVersion"));
assertThat(
GlobalOpenTelemetry.tracerBuilder("testTracer2")
.setInstrumentationVersion("testVersion")
.setSchemaUrl("https://example.invalid")
.build())
.isSameAs(
GlobalOpenTelemetry.getTracerProvider()
.tracerBuilder("testTracer2")
.setInstrumentationVersion("testVersion")
.setSchemaUrl("https://example.invalid")
.build());
}
@Test
@ -133,6 +145,20 @@ class OpenTelemetrySdkTest {
.hasFieldOrPropertyWithValue("idGenerator", idGenerator);
}
@Test
void testTracerBuilder() {
final OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().build();
assertThat(openTelemetry.tracerBuilder("instr"))
.isNotSameAs(OpenTelemetry.noop().tracerBuilder("instr"));
}
@Test
void testTracerBuilderViaProvider() {
final OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder().build();
assertThat(openTelemetry.getTracerProvider().tracerBuilder("instr"))
.isNotSameAs(OpenTelemetry.noop().tracerBuilder("instr"));
}
@Test
void testTracerProviderAccess() {
OpenTelemetrySdk openTelemetry =