From c1b93adc112f139370c338744fac9800ba675322 Mon Sep 17 00:00:00 2001 From: Matt Spataro Date: Thu, 17 Nov 2022 19:13:34 -0700 Subject: [PATCH] handle noop --- dependencyManagement/build.gradle.kts | 1 + opentracing-shim/build.gradle.kts | 1 + .../opentracingshim/SpanBuilderShim.java | 5 ++--- .../opentracingshim/SpanBuilderShimTest.java | 15 +++++++++++++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index 6f721a483b7..634dcea1a22 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -90,6 +90,7 @@ val DEPENDENCIES = listOf( "io.jaegertracing:jaeger-client:1.8.1", "io.opentelemetry.proto:opentelemetry-proto:0.19.0-alpha", "io.opentracing:opentracing-api:0.33.0", + "io.opentracing:opentracing-noop:0.33.0", "junit:junit:4.13.2", "nl.jqno.equalsverifier:equalsverifier:3.11", "org.assertj:assertj-core:3.23.1", diff --git a/opentracing-shim/build.gradle.kts b/opentracing-shim/build.gradle.kts index 98129994fbc..56dac7d0ce8 100644 --- a/opentracing-shim/build.gradle.kts +++ b/opentracing-shim/build.gradle.kts @@ -11,6 +11,7 @@ dependencies { api("io.opentracing:opentracing-api") implementation(project(":semconv")) + implementation("io.opentracing:opentracing-noop:0.33.0") annotationProcessor("com.google.auto.value:auto-value") diff --git a/opentracing-shim/src/main/java/io/opentelemetry/opentracingshim/SpanBuilderShim.java b/opentracing-shim/src/main/java/io/opentelemetry/opentracingshim/SpanBuilderShim.java index ac3c1f62c17..5435abaa730 100644 --- a/opentracing-shim/src/main/java/io/opentelemetry/opentracingshim/SpanBuilderShim.java +++ b/opentracing-shim/src/main/java/io/opentelemetry/opentracingshim/SpanBuilderShim.java @@ -23,6 +23,7 @@ import io.opentracing.Span; import io.opentracing.SpanContext; import io.opentracing.Tracer.SpanBuilder; +import io.opentracing.noop.NoopSpan; import io.opentracing.tag.Tag; import io.opentracing.tag.Tags; import java.util.ArrayList; @@ -63,11 +64,9 @@ public SpanBuilderShim(TelemetryInfo telemetryInfo, String spanName) { @Override public SpanBuilder asChildOf(Span parent) { - if (parent == null) { + if (parent == null || parent instanceof NoopSpan) { return this; } - - // TODO - Verify we handle a no-op Span SpanShim spanShim = ShimUtil.getSpanShim(parent); return addReference(References.CHILD_OF, spanShim.context()); } diff --git a/opentracing-shim/src/test/java/io/opentelemetry/opentracingshim/SpanBuilderShimTest.java b/opentracing-shim/src/test/java/io/opentelemetry/opentracingshim/SpanBuilderShimTest.java index 16ff9cfeb99..59994ec6d53 100644 --- a/opentracing-shim/src/test/java/io/opentelemetry/opentracingshim/SpanBuilderShimTest.java +++ b/opentracing-shim/src/test/java/io/opentelemetry/opentracingshim/SpanBuilderShimTest.java @@ -11,6 +11,7 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.SpanId; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Context; @@ -22,6 +23,7 @@ import io.opentelemetry.sdk.trace.samplers.SamplingResult; import io.opentelemetry.semconv.trace.attributes.SemanticAttributes; import io.opentracing.References; +import io.opentracing.noop.NoopSpan; import java.math.BigInteger; import java.util.List; import org.junit.jupiter.api.BeforeEach; @@ -59,6 +61,19 @@ void parent_single() { } } + @Test + void noop_parent_span() { + SpanShim childSpan = + (SpanShim) + new SpanBuilderShim(telemetryInfo, SPAN_NAME).asChildOf(NoopSpan.INSTANCE).start(); + try { + SpanData spanData = ((ReadableSpan) childSpan.getSpan()).toSpanData(); + assertThat(SpanId.isValid(spanData.getParentSpanId())).isFalse(); + } finally { + childSpan.finish(); + } + } + @Test void parent_multipleFollowsFrom() { SpanShim parentSpan1 = (SpanShim) new SpanBuilderShim(telemetryInfo, SPAN_NAME).start();