diff --git a/sdk-extensions/testbed/build.gradle b/sdk-extensions/testbed/build.gradle index b17b022521..f25c53efad 100644 --- a/sdk-extensions/testbed/build.gradle +++ b/sdk-extensions/testbed/build.gradle @@ -8,8 +8,8 @@ description = 'OpenTelemetry SDK Testbed' ext.moduleName = 'io.opentelemetry.sdk.extension.trace.testbed' dependencies { - implementation project(':opentelemetry-api'), + testImplementation project(':opentelemetry-api'), project(':opentelemetry-sdk'), - project(':opentelemetry-exporter-inmemory'), + project(':opentelemetry-sdk-testing'), libraries.guava } diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/TestUtils.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/TestUtils.java index b2e33aad23..c946302636 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/TestUtils.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/TestUtils.java @@ -9,7 +9,7 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.trace.Span.Kind; -import io.opentelemetry.exporters.inmemory.InMemorySpanExporter; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.ArrayList; import java.util.Collections; @@ -22,9 +22,11 @@ import javax.annotation.Nullable; public final class TestUtils { private TestUtils() {} - /** Returns the number of finished {@code Span}s in the specified {@code InMemorySpanExporter}. */ - public static Callable finishedSpansSize(final InMemorySpanExporter tracer) { - return () -> tracer.getFinishedSpanItems().size(); + /** + * Returns the number of finished {@code Span}s in the specified {@code OpenTelemetryExtension}. + */ + public static Callable finishedSpansSize(final OpenTelemetryExtension otelTesting) { + return () -> otelTesting.getSpans().size(); } /** Returns a {@code List} with the {@code Span} matching the specified attribute. */ diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/activespanreplacement/ActiveSpanReplacementTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/activespanreplacement/ActiveSpanReplacementTest.java index 14108ac7a2..46021bd5f4 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/activespanreplacement/ActiveSpanReplacementTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/activespanreplacement/ActiveSpanReplacementTest.java @@ -5,7 +5,6 @@ package io.opentelemetry.sdk.extensions.trace.testbed.activespanreplacement; -import static io.opentelemetry.sdk.extensions.trace.testbed.TestUtils.finishedSpansSize; import static io.opentelemetry.sdk.extensions.trace.testbed.TestUtils.sleep; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; @@ -15,22 +14,24 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanId; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; @SuppressWarnings("FutureReturnValueIgnored") class ActiveSpanReplacementTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(ActiveSpanReplacementTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(ActiveSpanReplacementTest.class.getName()); private final ExecutorService executor = Executors.newCachedThreadPool(); @Test @@ -44,9 +45,9 @@ class ActiveSpanReplacementTest { await() .atMost(15, TimeUnit.SECONDS) - .until(finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(3)); + .until(TestUtils.finishedSpansSize(otelTesting), equalTo(3)); - List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List spans = otelTesting.getSpans(); assertThat(spans).hasSize(3); assertThat(spans.get(0).getName()).isEqualTo("initial"); // Isolated task assertThat(spans.get(1).getName()).isEqualTo("subtask"); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/actorpropagation/ActorPropagationTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/actorpropagation/ActorPropagationTest.java index 247e6225a4..8dd41db5db 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/actorpropagation/ActorPropagationTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/actorpropagation/ActorPropagationTest.java @@ -11,9 +11,8 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span.Kind; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.ExecutionException; @@ -21,6 +20,7 @@ import java.util.concurrent.Future; import java.util.concurrent.Phaser; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** * These tests are intended to simulate the kind of async models that are common in java async @@ -31,10 +31,11 @@ import org.junit.jupiter.api.Test; */ @SuppressWarnings("FutureReturnValueIgnored") class ActorPropagationTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(ActorPropagationTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(ActorPropagationTest.class.getName()); private Phaser phaser; @BeforeEach @@ -56,17 +57,14 @@ class ActorPropagationTest { } phaser.arriveAndAwaitAdvance(); // child tracer started - assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems()).hasSize(1); + assertThat(otelTesting.getSpans()).hasSize(1); phaser.arriveAndAwaitAdvance(); // continue... phaser.arriveAndAwaitAdvance(); // child tracer finished - assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems()).hasSize(3); - assertThat( - TestUtils.getByKind( - inMemoryTracing.getSpanExporter().getFinishedSpanItems(), Span.Kind.CONSUMER)) - .hasSize(2); + assertThat(otelTesting.getSpans()).hasSize(3); + assertThat(TestUtils.getByKind(otelTesting.getSpans(), Span.Kind.CONSUMER)).hasSize(2); phaser.arriveAndDeregister(); // continue... - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertThat(finished.size()).isEqualTo(3); assertThat(finished.get(0).getTraceId()).isEqualTo(finished.get(1).getTraceId()); assertThat(TestUtils.getByKind(finished, Span.Kind.CONSUMER)).hasSize(2); @@ -92,17 +90,14 @@ class ActorPropagationTest { span.end(); } phaser.arriveAndAwaitAdvance(); // child tracer started - assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems().size()).isEqualTo(1); + assertThat(otelTesting.getSpans().size()).isEqualTo(1); phaser.arriveAndAwaitAdvance(); // continue... phaser.arriveAndAwaitAdvance(); // child tracer finished - assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems().size()).isEqualTo(3); - assertThat( - TestUtils.getByKind( - inMemoryTracing.getSpanExporter().getFinishedSpanItems(), Span.Kind.CONSUMER)) - .hasSize(2); + assertThat(otelTesting.getSpans().size()).isEqualTo(3); + assertThat(TestUtils.getByKind(otelTesting.getSpans(), Span.Kind.CONSUMER)).hasSize(2); phaser.arriveAndDeregister(); // continue... - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); String message1 = future1.get(); // This really should be a non-blocking callback... String message2 = future2.get(); // This really should be a non-blocking callback... assertThat(message1).isEqualTo("received my message 1"); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/clientserver/TestClientServerTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/clientserver/TestClientServerTest.java index 98159e93a1..ea5197b6e2 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/clientserver/TestClientServerTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/clientserver/TestClientServerTest.java @@ -13,9 +13,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span.Kind; import io.opentelemetry.api.trace.Tracer; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.ArrayBlockingQueue; @@ -23,13 +22,15 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; class TestClientServerTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(TestClientServerTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(TestClientServerTest.class.getName()); private final ArrayBlockingQueue queue = new ArrayBlockingQueue<>(10); private Server server; @@ -52,9 +53,9 @@ class TestClientServerTest { await() .atMost(15, TimeUnit.SECONDS) - .until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(2)); + .until(TestUtils.finishedSpansSize(otelTesting), equalTo(2)); - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertEquals(2, finished.size()); finished = TestUtils.sortByStartTime(finished); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/concurrentcommonrequesthandler/HandlerTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/concurrentcommonrequesthandler/HandlerTest.java index 3533d41442..62356aa7ca 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/concurrentcommonrequesthandler/HandlerTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/concurrentcommonrequesthandler/HandlerTest.java @@ -12,15 +12,14 @@ import io.opentelemetry.api.trace.SpanId; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Context; import io.opentelemetry.context.Scope; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** * There is only one instance of 'RequestHandler' per 'Client'. Methods of 'RequestHandler' are @@ -29,16 +28,13 @@ import org.junit.jupiter.api.Test; */ class HandlerTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(HandlerTest.class.getName()); - private final Client client = new Client(new RequestHandler(tracer)); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); - @BeforeEach - void before() { - inMemoryTracing.getSpanExporter().reset(); - } + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(HandlerTest.class.getName()); + + private final Client client = new Client(new RequestHandler(tracer)); @Test void two_requests() throws Exception { @@ -48,7 +44,7 @@ class HandlerTest { assertThat(responseFuture.get(15, TimeUnit.SECONDS)).isEqualTo("message:response"); assertThat(responseFuture2.get(15, TimeUnit.SECONDS)).isEqualTo("message2:response"); - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertThat(finished).hasSize(2); for (SpanData spanProto : finished) { @@ -73,7 +69,7 @@ class HandlerTest { parentSpan.end(); } - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertThat(finished).hasSize(2); SpanData child = TestUtils.getOneByName(finished, RequestHandler.OPERATION_NAME); @@ -108,7 +104,7 @@ class HandlerTest { String response = client.send("wrong_parent").get(15, TimeUnit.SECONDS); assertThat(response).isEqualTo("wrong_parent:response"); - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertThat(finished).hasSize(3); finished = TestUtils.sortByStartTime(finished); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/errorreporting/ErrorReportingTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/errorreporting/ErrorReportingTest.java index 1aab8cb41d..2d7fa48781 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/errorreporting/ErrorReportingTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/errorreporting/ErrorReportingTest.java @@ -14,9 +14,8 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData.Event; import java.util.List; @@ -24,14 +23,16 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; @SuppressWarnings("FutureReturnValueIgnored") public final class ErrorReportingTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(ErrorReportingTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(ErrorReportingTest.class.getName()); private final ExecutorService executor = Executors.newCachedThreadPool(); /* Very simple error handling **/ @@ -48,7 +49,7 @@ public final class ErrorReportingTest { assertThat(Span.current()).isSameAs(Span.getInvalid()); - List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List spans = otelTesting.getSpans(); assertThat(spans).hasSize(1); assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR); } @@ -68,11 +69,9 @@ public final class ErrorReportingTest { } }); - await() - .atMost(5, TimeUnit.SECONDS) - .until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(1)); + await().atMost(5, TimeUnit.SECONDS).until(TestUtils.finishedSpansSize(otelTesting), equalTo(1)); - List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List spans = otelTesting.getSpans(); assertThat(spans).hasSize(1); assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR); } @@ -99,7 +98,7 @@ public final class ErrorReportingTest { assertThat(Span.current()).isSameAs(Span.getInvalid()); - List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List spans = otelTesting.getSpans(); assertThat(spans).hasSize(1); assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR); @@ -129,11 +128,9 @@ public final class ErrorReportingTest { tracer)); } - await() - .atMost(5, TimeUnit.SECONDS) - .until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(1)); + await().atMost(5, TimeUnit.SECONDS).until(TestUtils.finishedSpansSize(otelTesting), equalTo(1)); - List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List spans = otelTesting.getSpans(); assertEquals(spans.size(), 1); assertEquals(spans.get(0).getStatus().getCanonicalCode(), StatusCode.ERROR); } diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/latespanfinish/LateSpanFinishTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/latespanfinish/LateSpanFinishTest.java index f334482b0a..8431a9cc89 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/latespanfinish/LateSpanFinishTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/latespanfinish/LateSpanFinishTest.java @@ -10,22 +10,23 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; @SuppressWarnings("FutureReturnValueIgnored") public final class LateSpanFinishTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(LateSpanFinishTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(LateSpanFinishTest.class.getName()); private final ExecutorService executor = Executors.newCachedThreadPool(); @Test @@ -42,7 +43,7 @@ public final class LateSpanFinishTest { parentSpan.end(); // Children finish order is not guaranteed, but parent should finish *last*. - List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List spans = otelTesting.getSpans(); assertThat(spans).hasSize(3); assertThat(spans.get(0).getName()).startsWith("task"); assertThat(spans.get(1).getName()).startsWith("task"); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/listenerperrequest/ListenerTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/listenerperrequest/ListenerTest.java index ddc84cb6de..9f34766dc0 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/listenerperrequest/ListenerTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/listenerperrequest/ListenerTest.java @@ -10,18 +10,19 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span.Kind; import io.opentelemetry.api.trace.Tracer; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** Each request has own instance of ResponseListener. */ class ListenerTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(ListenerTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(ListenerTest.class.getName()); @Test void test() throws Exception { @@ -29,7 +30,7 @@ class ListenerTest { Object response = client.send("message").get(); assertThat(response).isEqualTo("message:response"); - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertThat(finished).hasSize(1); assertThat(finished.get(0).getKind()).isEqualTo(Kind.CLIENT); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/multiplecallbacks/MultipleCallbacksTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/multiplecallbacks/MultipleCallbacksTest.java index b0a9615fa3..feffa57709 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/multiplecallbacks/MultipleCallbacksTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/multiplecallbacks/MultipleCallbacksTest.java @@ -12,14 +12,14 @@ import static org.hamcrest.core.IsEqual.equalTo; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** * These tests are intended to simulate a task with independent, asynchronous callbacks. @@ -29,10 +29,11 @@ import org.junit.jupiter.api.Test; */ @SuppressWarnings("FutureReturnValueIgnored") class MultipleCallbacksTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(MultipleCallbacksTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(MultipleCallbacksTest.class.getName()); @Test void test() { @@ -51,9 +52,9 @@ class MultipleCallbacksTest { await() .atMost(15, TimeUnit.SECONDS) - .until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(4)); + .until(TestUtils.finishedSpansSize(otelTesting), equalTo(4)); - List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List spans = otelTesting.getSpans(); assertThat(spans).hasSize(4); assertThat(spans.get(0).getName()).isEqualTo("parent"); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/nestedcallbacks/NestedCallbacksTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/nestedcallbacks/NestedCallbacksTest.java index ded27310fc..5186a53529 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/nestedcallbacks/NestedCallbacksTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/nestedcallbacks/NestedCallbacksTest.java @@ -14,23 +14,23 @@ import io.opentelemetry.api.common.ReadableAttributes; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; @SuppressWarnings("FutureReturnValueIgnored") public final class NestedCallbacksTest { + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(NestedCallbacksTest.class.getName()); + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(NestedCallbacksTest.class.getName()); private final ExecutorService executor = Executors.newCachedThreadPool(); @Test @@ -41,9 +41,9 @@ public final class NestedCallbacksTest { await() .atMost(15, TimeUnit.SECONDS) - .until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(1)); + .until(TestUtils.finishedSpansSize(otelTesting), equalTo(1)); - List spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List spans = otelTesting.getSpans(); assertThat(spans).hasSize(1); assertThat(spans.get(0).getName()).isEqualTo("one"); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/promisepropagation/PromisePropagationTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/promisepropagation/PromisePropagationTest.java index 17db4ef54e..edc242b11e 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/promisepropagation/PromisePropagationTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/promisepropagation/PromisePropagationTest.java @@ -13,15 +13,16 @@ import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.SpanId; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.extensions.trace.testbed.nestedcallbacks.NestedCallbacksTest; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.Phaser; import java.util.concurrent.atomic.AtomicReference; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** * These tests are intended to simulate the kind of async models that are common in java async @@ -31,10 +32,11 @@ import org.junit.jupiter.api.Test; * execution for the tests without sleeps. */ class PromisePropagationTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(PromisePropagationTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(NestedCallbacksTest.class.getName()); private Phaser phaser; @BeforeEach @@ -77,7 +79,7 @@ class PromisePropagationTest { phaser.arriveAndAwaitAdvance(); // result set }); - assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems().size()).isEqualTo(0); + assertThat(otelTesting.getSpans().size()).isEqualTo(0); successPromise.success("success!"); errorPromise.error(new Exception("some error.")); } finally { @@ -91,7 +93,7 @@ class PromisePropagationTest { phaser.arriveAndAwaitAdvance(); // wait for traces to be reported - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertThat(finished.size()).isEqualTo(4); AttributeKey component = stringKey("component"); diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/statelesscommonrequesthandler/HandlerTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/statelesscommonrequesthandler/HandlerTest.java index ce3e368e88..5e5cc3e6b6 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/statelesscommonrequesthandler/HandlerTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/statelesscommonrequesthandler/HandlerTest.java @@ -8,14 +8,13 @@ package io.opentelemetry.sdk.extensions.trace.testbed.statelesscommonrequesthand import static org.junit.jupiter.api.Assertions.assertEquals; import io.opentelemetry.api.trace.Tracer; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** * There is only one instance of 'RequestHandler' per 'Client'. Methods of 'RequestHandler' are @@ -23,16 +22,12 @@ import org.junit.jupiter.api.Test; */ public final class HandlerTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(HandlerTest.class.getName()); - private final Client client = new Client(new RequestHandler(tracer)); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); - @BeforeEach - void before() { - inMemoryTracing.getSpanExporter().reset(); - } + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(HandlerTest.class.getName()); + private final Client client = new Client(new RequestHandler(tracer)); @Test void test_requests() throws Exception { @@ -44,7 +39,7 @@ public final class HandlerTest { assertEquals("message2:response", responseFuture2.get(5, TimeUnit.SECONDS)); assertEquals("message:response", responseFuture.get(5, TimeUnit.SECONDS)); - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertEquals(3, finished.size()); } } diff --git a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/suspendresumepropagation/SuspendResumePropagationTest.java b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/suspendresumepropagation/SuspendResumePropagationTest.java index 25741d158a..5a6a4c9c63 100644 --- a/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/suspendresumepropagation/SuspendResumePropagationTest.java +++ b/sdk-extensions/testbed/src/test/java/io/opentelemetry/sdk/extensions/trace/testbed/suspendresumepropagation/SuspendResumePropagationTest.java @@ -9,22 +9,24 @@ import static org.assertj.core.api.Assertions.assertThat; import io.opentelemetry.api.trace.SpanId; import io.opentelemetry.api.trace.Tracer; -import io.opentelemetry.exporters.inmemory.InMemoryTracing; -import io.opentelemetry.sdk.trace.TracerSdkProvider; +import io.opentelemetry.sdk.extensions.trace.testbed.statelesscommonrequesthandler.HandlerTest; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; import io.opentelemetry.sdk.trace.data.SpanData; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; /** * These tests are intended to simulate the kind of async models that are common in java async * frameworks. */ class SuspendResumePropagationTest { - private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); - private final InMemoryTracing inMemoryTracing = - InMemoryTracing.builder().setTracerSdkManagement(sdk).build(); - private final Tracer tracer = sdk.get(SuspendResumePropagationTest.class.getName()); + @RegisterExtension + static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create(); + + private final Tracer tracer = + otelTesting.getOpenTelemetry().getTracer(HandlerTest.class.getName()); @BeforeEach void before() {} @@ -45,7 +47,7 @@ class SuspendResumePropagationTest { job1.done(); job2.done(); - List finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); + List finished = otelTesting.getSpans(); assertThat(finished.size()).isEqualTo(2); assertThat(finished.get(0).getName()).isEqualTo("job 1");