Change testbed to use the junit5 extension (#1988)

Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
Bogdan Drutu 2020-11-03 15:22:11 -08:00 committed by GitHub
parent 37cce8dbca
commit faf6b9f15e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 126 additions and 132 deletions

View File

@ -8,8 +8,8 @@ description = 'OpenTelemetry SDK Testbed'
ext.moduleName = 'io.opentelemetry.sdk.extension.trace.testbed' ext.moduleName = 'io.opentelemetry.sdk.extension.trace.testbed'
dependencies { dependencies {
implementation project(':opentelemetry-api'), testImplementation project(':opentelemetry-api'),
project(':opentelemetry-sdk'), project(':opentelemetry-sdk'),
project(':opentelemetry-exporter-inmemory'), project(':opentelemetry-sdk-testing'),
libraries.guava libraries.guava
} }

View File

@ -9,7 +9,7 @@ import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.trace.Span.Kind; 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 io.opentelemetry.sdk.trace.data.SpanData;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@ -22,9 +22,11 @@ import javax.annotation.Nullable;
public final class TestUtils { public final class TestUtils {
private TestUtils() {} private TestUtils() {}
/** Returns the number of finished {@code Span}s in the specified {@code InMemorySpanExporter}. */ /**
public static Callable<Integer> finishedSpansSize(final InMemorySpanExporter tracer) { * Returns the number of finished {@code Span}s in the specified {@code OpenTelemetryExtension}.
return () -> tracer.getFinishedSpanItems().size(); */
public static Callable<Integer> finishedSpansSize(final OpenTelemetryExtension otelTesting) {
return () -> otelTesting.getSpans().size();
} }
/** Returns a {@code List} with the {@code Span} matching the specified attribute. */ /** Returns a {@code List} with the {@code Span} matching the specified attribute. */

View File

@ -5,7 +5,6 @@
package io.opentelemetry.sdk.extensions.trace.testbed.activespanreplacement; 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 io.opentelemetry.sdk.extensions.trace.testbed.TestUtils.sleep;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await; 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.SpanId;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope; 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;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@SuppressWarnings("FutureReturnValueIgnored") @SuppressWarnings("FutureReturnValueIgnored")
class ActiveSpanReplacementTest { class ActiveSpanReplacementTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(ActiveSpanReplacementTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(ActiveSpanReplacementTest.class.getName());
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
@Test @Test
@ -44,9 +45,9 @@ class ActiveSpanReplacementTest {
await() await()
.atMost(15, TimeUnit.SECONDS) .atMost(15, TimeUnit.SECONDS)
.until(finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(3)); .until(TestUtils.finishedSpansSize(otelTesting), equalTo(3));
List<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(3); assertThat(spans).hasSize(3);
assertThat(spans.get(0).getName()).isEqualTo("initial"); // Isolated task assertThat(spans.get(0).getName()).isEqualTo("initial"); // Isolated task
assertThat(spans.get(1).getName()).isEqualTo("subtask"); assertThat(spans.get(1).getName()).isEqualTo("subtask");

View File

@ -11,9 +11,8 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Span.Kind; import io.opentelemetry.api.trace.Span.Kind;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; 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;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
@ -21,6 +20,7 @@ import java.util.concurrent.Future;
import java.util.concurrent.Phaser; import java.util.concurrent.Phaser;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; 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 * 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") @SuppressWarnings("FutureReturnValueIgnored")
class ActorPropagationTest { class ActorPropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(ActorPropagationTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(ActorPropagationTest.class.getName());
private Phaser phaser; private Phaser phaser;
@BeforeEach @BeforeEach
@ -56,17 +57,14 @@ class ActorPropagationTest {
} }
phaser.arriveAndAwaitAdvance(); // child tracer started phaser.arriveAndAwaitAdvance(); // child tracer started
assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems()).hasSize(1); assertThat(otelTesting.getSpans()).hasSize(1);
phaser.arriveAndAwaitAdvance(); // continue... phaser.arriveAndAwaitAdvance(); // continue...
phaser.arriveAndAwaitAdvance(); // child tracer finished phaser.arriveAndAwaitAdvance(); // child tracer finished
assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems()).hasSize(3); assertThat(otelTesting.getSpans()).hasSize(3);
assertThat( assertThat(TestUtils.getByKind(otelTesting.getSpans(), Span.Kind.CONSUMER)).hasSize(2);
TestUtils.getByKind(
inMemoryTracing.getSpanExporter().getFinishedSpanItems(), Span.Kind.CONSUMER))
.hasSize(2);
phaser.arriveAndDeregister(); // continue... phaser.arriveAndDeregister(); // continue...
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertThat(finished.size()).isEqualTo(3); assertThat(finished.size()).isEqualTo(3);
assertThat(finished.get(0).getTraceId()).isEqualTo(finished.get(1).getTraceId()); assertThat(finished.get(0).getTraceId()).isEqualTo(finished.get(1).getTraceId());
assertThat(TestUtils.getByKind(finished, Span.Kind.CONSUMER)).hasSize(2); assertThat(TestUtils.getByKind(finished, Span.Kind.CONSUMER)).hasSize(2);
@ -92,17 +90,14 @@ class ActorPropagationTest {
span.end(); span.end();
} }
phaser.arriveAndAwaitAdvance(); // child tracer started phaser.arriveAndAwaitAdvance(); // child tracer started
assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems().size()).isEqualTo(1); assertThat(otelTesting.getSpans().size()).isEqualTo(1);
phaser.arriveAndAwaitAdvance(); // continue... phaser.arriveAndAwaitAdvance(); // continue...
phaser.arriveAndAwaitAdvance(); // child tracer finished phaser.arriveAndAwaitAdvance(); // child tracer finished
assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems().size()).isEqualTo(3); assertThat(otelTesting.getSpans().size()).isEqualTo(3);
assertThat( assertThat(TestUtils.getByKind(otelTesting.getSpans(), Span.Kind.CONSUMER)).hasSize(2);
TestUtils.getByKind(
inMemoryTracing.getSpanExporter().getFinishedSpanItems(), Span.Kind.CONSUMER))
.hasSize(2);
phaser.arriveAndDeregister(); // continue... phaser.arriveAndDeregister(); // continue...
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
String message1 = future1.get(); // This really should be a non-blocking callback... String message1 = future1.get(); // This really should be a non-blocking callback...
String message2 = future2.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"); assertThat(message1).isEqualTo("received my message 1");

View File

@ -13,9 +13,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Span.Kind; import io.opentelemetry.api.trace.Span.Kind;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; 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;
import java.util.List; import java.util.List;
import java.util.concurrent.ArrayBlockingQueue; 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.AfterEach;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
class TestClientServerTest { class TestClientServerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(TestClientServerTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(TestClientServerTest.class.getName());
private final ArrayBlockingQueue<Message> queue = new ArrayBlockingQueue<>(10); private final ArrayBlockingQueue<Message> queue = new ArrayBlockingQueue<>(10);
private Server server; private Server server;
@ -52,9 +53,9 @@ class TestClientServerTest {
await() await()
.atMost(15, TimeUnit.SECONDS) .atMost(15, TimeUnit.SECONDS)
.until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(2)); .until(TestUtils.finishedSpansSize(otelTesting), equalTo(2));
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertEquals(2, finished.size()); assertEquals(2, finished.size());
finished = TestUtils.sortByStartTime(finished); finished = TestUtils.sortByStartTime(finished);

View File

@ -12,15 +12,14 @@ import io.opentelemetry.api.trace.SpanId;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Context; import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; 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;
import java.util.List; import java.util.List;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; 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 * 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 { class HandlerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(HandlerTest.class.getName());
private final Client client = new Client(new RequestHandler(tracer));
@BeforeEach private final Tracer tracer =
void before() { otelTesting.getOpenTelemetry().getTracer(HandlerTest.class.getName());
inMemoryTracing.getSpanExporter().reset();
} private final Client client = new Client(new RequestHandler(tracer));
@Test @Test
void two_requests() throws Exception { void two_requests() throws Exception {
@ -48,7 +44,7 @@ class HandlerTest {
assertThat(responseFuture.get(15, TimeUnit.SECONDS)).isEqualTo("message:response"); assertThat(responseFuture.get(15, TimeUnit.SECONDS)).isEqualTo("message:response");
assertThat(responseFuture2.get(15, TimeUnit.SECONDS)).isEqualTo("message2:response"); assertThat(responseFuture2.get(15, TimeUnit.SECONDS)).isEqualTo("message2:response");
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertThat(finished).hasSize(2); assertThat(finished).hasSize(2);
for (SpanData spanProto : finished) { for (SpanData spanProto : finished) {
@ -73,7 +69,7 @@ class HandlerTest {
parentSpan.end(); parentSpan.end();
} }
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertThat(finished).hasSize(2); assertThat(finished).hasSize(2);
SpanData child = TestUtils.getOneByName(finished, RequestHandler.OPERATION_NAME); SpanData child = TestUtils.getOneByName(finished, RequestHandler.OPERATION_NAME);
@ -108,7 +104,7 @@ class HandlerTest {
String response = client.send("wrong_parent").get(15, TimeUnit.SECONDS); String response = client.send("wrong_parent").get(15, TimeUnit.SECONDS);
assertThat(response).isEqualTo("wrong_parent:response"); assertThat(response).isEqualTo("wrong_parent:response");
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertThat(finished).hasSize(3); assertThat(finished).hasSize(3);
finished = TestUtils.sortByStartTime(finished); finished = TestUtils.sortByStartTime(finished);

View File

@ -14,9 +14,8 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.api.trace.StatusCode;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; 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;
import io.opentelemetry.sdk.trace.data.SpanData.Event; import io.opentelemetry.sdk.trace.data.SpanData.Event;
import java.util.List; import java.util.List;
@ -24,14 +23,16 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@SuppressWarnings("FutureReturnValueIgnored") @SuppressWarnings("FutureReturnValueIgnored")
public final class ErrorReportingTest { public final class ErrorReportingTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(ErrorReportingTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(ErrorReportingTest.class.getName());
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
/* Very simple error handling **/ /* Very simple error handling **/
@ -48,7 +49,7 @@ public final class ErrorReportingTest {
assertThat(Span.current()).isSameAs(Span.getInvalid()); assertThat(Span.current()).isSameAs(Span.getInvalid());
List<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(1); assertThat(spans).hasSize(1);
assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR); assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR);
} }
@ -68,11 +69,9 @@ public final class ErrorReportingTest {
} }
}); });
await() await().atMost(5, TimeUnit.SECONDS).until(TestUtils.finishedSpansSize(otelTesting), equalTo(1));
.atMost(5, TimeUnit.SECONDS)
.until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(1));
List<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(1); assertThat(spans).hasSize(1);
assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR); assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR);
} }
@ -99,7 +98,7 @@ public final class ErrorReportingTest {
assertThat(Span.current()).isSameAs(Span.getInvalid()); assertThat(Span.current()).isSameAs(Span.getInvalid());
List<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(1); assertThat(spans).hasSize(1);
assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR); assertThat(spans.get(0).getStatus().getCanonicalCode()).isEqualTo(StatusCode.ERROR);
@ -129,11 +128,9 @@ public final class ErrorReportingTest {
tracer)); tracer));
} }
await() await().atMost(5, TimeUnit.SECONDS).until(TestUtils.finishedSpansSize(otelTesting), equalTo(1));
.atMost(5, TimeUnit.SECONDS)
.until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(1));
List<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> spans = otelTesting.getSpans();
assertEquals(spans.size(), 1); assertEquals(spans.size(), 1);
assertEquals(spans.get(0).getStatus().getCanonicalCode(), StatusCode.ERROR); assertEquals(spans.get(0).getStatus().getCanonicalCode(), StatusCode.ERROR);
} }

View File

@ -10,22 +10,23 @@ import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; 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;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@SuppressWarnings("FutureReturnValueIgnored") @SuppressWarnings("FutureReturnValueIgnored")
public final class LateSpanFinishTest { public final class LateSpanFinishTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(LateSpanFinishTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(LateSpanFinishTest.class.getName());
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
@Test @Test
@ -42,7 +43,7 @@ public final class LateSpanFinishTest {
parentSpan.end(); parentSpan.end();
// Children finish order is not guaranteed, but parent should finish *last*. // Children finish order is not guaranteed, but parent should finish *last*.
List<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(3); assertThat(spans).hasSize(3);
assertThat(spans.get(0).getName()).startsWith("task"); assertThat(spans.get(0).getName()).startsWith("task");
assertThat(spans.get(1).getName()).startsWith("task"); assertThat(spans.get(1).getName()).startsWith("task");

View File

@ -10,18 +10,19 @@ import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Span.Kind; import io.opentelemetry.api.trace.Span.Kind;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension;
import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
/** Each request has own instance of ResponseListener. */ /** Each request has own instance of ResponseListener. */
class ListenerTest { class ListenerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(ListenerTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(ListenerTest.class.getName());
@Test @Test
void test() throws Exception { void test() throws Exception {
@ -29,7 +30,7 @@ class ListenerTest {
Object response = client.send("message").get(); Object response = client.send("message").get();
assertThat(response).isEqualTo("message:response"); assertThat(response).isEqualTo("message:response");
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertThat(finished).hasSize(1); assertThat(finished).hasSize(1);
assertThat(finished.get(0).getKind()).isEqualTo(Kind.CLIENT); assertThat(finished.get(0).getKind()).isEqualTo(Kind.CLIENT);

View File

@ -12,14 +12,14 @@ import static org.hamcrest.core.IsEqual.equalTo;
import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; 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;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Test; 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. * These tests are intended to simulate a task with independent, asynchronous callbacks.
@ -29,10 +29,11 @@ import org.junit.jupiter.api.Test;
*/ */
@SuppressWarnings("FutureReturnValueIgnored") @SuppressWarnings("FutureReturnValueIgnored")
class MultipleCallbacksTest { class MultipleCallbacksTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(MultipleCallbacksTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(MultipleCallbacksTest.class.getName());
@Test @Test
void test() { void test() {
@ -51,9 +52,9 @@ class MultipleCallbacksTest {
await() await()
.atMost(15, TimeUnit.SECONDS) .atMost(15, TimeUnit.SECONDS)
.until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(4)); .until(TestUtils.finishedSpansSize(otelTesting), equalTo(4));
List<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(4); assertThat(spans).hasSize(4);
assertThat(spans.get(0).getName()).isEqualTo("parent"); assertThat(spans.get(0).getName()).isEqualTo("parent");

View File

@ -14,23 +14,23 @@ import io.opentelemetry.api.common.ReadableAttributes;
import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; 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;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
@SuppressWarnings("FutureReturnValueIgnored") @SuppressWarnings("FutureReturnValueIgnored")
public final class NestedCallbacksTest { public final class NestedCallbacksTest {
@RegisterExtension
static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); private final Tracer tracer =
private final InMemoryTracing inMemoryTracing = otelTesting.getOpenTelemetry().getTracer(NestedCallbacksTest.class.getName());
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(NestedCallbacksTest.class.getName());
private final ExecutorService executor = Executors.newCachedThreadPool(); private final ExecutorService executor = Executors.newCachedThreadPool();
@Test @Test
@ -41,9 +41,9 @@ public final class NestedCallbacksTest {
await() await()
.atMost(15, TimeUnit.SECONDS) .atMost(15, TimeUnit.SECONDS)
.until(TestUtils.finishedSpansSize(inMemoryTracing.getSpanExporter()), equalTo(1)); .until(TestUtils.finishedSpansSize(otelTesting), equalTo(1));
List<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(1); assertThat(spans).hasSize(1);
assertThat(spans.get(0).getName()).isEqualTo("one"); assertThat(spans.get(0).getName()).isEqualTo("one");

View File

@ -13,15 +13,16 @@ import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.SpanId; import io.opentelemetry.api.trace.SpanId;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.exporters.inmemory.InMemoryTracing;
import io.opentelemetry.sdk.extensions.trace.testbed.TestUtils; 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 io.opentelemetry.sdk.trace.data.SpanData;
import java.util.List; import java.util.List;
import java.util.concurrent.Phaser; import java.util.concurrent.Phaser;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; 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 * 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. * execution for the tests without sleeps.
*/ */
class PromisePropagationTest { class PromisePropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(PromisePropagationTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(NestedCallbacksTest.class.getName());
private Phaser phaser; private Phaser phaser;
@BeforeEach @BeforeEach
@ -77,7 +79,7 @@ class PromisePropagationTest {
phaser.arriveAndAwaitAdvance(); // result set phaser.arriveAndAwaitAdvance(); // result set
}); });
assertThat(inMemoryTracing.getSpanExporter().getFinishedSpanItems().size()).isEqualTo(0); assertThat(otelTesting.getSpans().size()).isEqualTo(0);
successPromise.success("success!"); successPromise.success("success!");
errorPromise.error(new Exception("some error.")); errorPromise.error(new Exception("some error."));
} finally { } finally {
@ -91,7 +93,7 @@ class PromisePropagationTest {
phaser.arriveAndAwaitAdvance(); // wait for traces to be reported phaser.arriveAndAwaitAdvance(); // wait for traces to be reported
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertThat(finished.size()).isEqualTo(4); assertThat(finished.size()).isEqualTo(4);
AttributeKey<String> component = stringKey("component"); AttributeKey<String> component = stringKey("component");

View File

@ -8,14 +8,13 @@ package io.opentelemetry.sdk.extensions.trace.testbed.statelesscommonrequesthand
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension;
import io.opentelemetry.sdk.trace.TracerSdkProvider;
import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.data.SpanData;
import java.util.List; import java.util.List;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; 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 * 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 { public final class HandlerTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(HandlerTest.class.getName());
private final Client client = new Client(new RequestHandler(tracer));
@BeforeEach private final Tracer tracer =
void before() { otelTesting.getOpenTelemetry().getTracer(HandlerTest.class.getName());
inMemoryTracing.getSpanExporter().reset(); private final Client client = new Client(new RequestHandler(tracer));
}
@Test @Test
void test_requests() throws Exception { void test_requests() throws Exception {
@ -44,7 +39,7 @@ public final class HandlerTest {
assertEquals("message2:response", responseFuture2.get(5, TimeUnit.SECONDS)); assertEquals("message2:response", responseFuture2.get(5, TimeUnit.SECONDS));
assertEquals("message:response", responseFuture.get(5, TimeUnit.SECONDS)); assertEquals("message:response", responseFuture.get(5, TimeUnit.SECONDS));
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertEquals(3, finished.size()); assertEquals(3, finished.size());
} }
} }

View File

@ -9,22 +9,24 @@ import static org.assertj.core.api.Assertions.assertThat;
import io.opentelemetry.api.trace.SpanId; import io.opentelemetry.api.trace.SpanId;
import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporters.inmemory.InMemoryTracing; import io.opentelemetry.sdk.extensions.trace.testbed.statelesscommonrequesthandler.HandlerTest;
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;
import java.util.List; import java.util.List;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; 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 * These tests are intended to simulate the kind of async models that are common in java async
* frameworks. * frameworks.
*/ */
class SuspendResumePropagationTest { class SuspendResumePropagationTest {
private final TracerSdkProvider sdk = TracerSdkProvider.builder().build(); @RegisterExtension
private final InMemoryTracing inMemoryTracing = static final OpenTelemetryExtension otelTesting = OpenTelemetryExtension.create();
InMemoryTracing.builder().setTracerSdkManagement(sdk).build();
private final Tracer tracer = sdk.get(SuspendResumePropagationTest.class.getName()); private final Tracer tracer =
otelTesting.getOpenTelemetry().getTracer(HandlerTest.class.getName());
@BeforeEach @BeforeEach
void before() {} void before() {}
@ -45,7 +47,7 @@ class SuspendResumePropagationTest {
job1.done(); job1.done();
job2.done(); job2.done();
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems(); List<SpanData> finished = otelTesting.getSpans();
assertThat(finished.size()).isEqualTo(2); assertThat(finished.size()).isEqualTo(2);
assertThat(finished.get(0).getName()).isEqualTo("job 1"); assertThat(finished.get(0).getName()).isEqualTo("job 1");