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'
dependencies {
implementation project(':opentelemetry-api'),
testImplementation project(':opentelemetry-api'),
project(':opentelemetry-sdk'),
project(':opentelemetry-exporter-inmemory'),
project(':opentelemetry-sdk-testing'),
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.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<Integer> finishedSpansSize(final InMemorySpanExporter tracer) {
return () -> tracer.getFinishedSpanItems().size();
/**
* Returns the number of finished {@code Span}s in the specified {@code OpenTelemetryExtension}.
*/
public static Callable<Integer> finishedSpansSize(final OpenTelemetryExtension otelTesting) {
return () -> otelTesting.getSpans().size();
}
/** 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;
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<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(3);
assertThat(spans.get(0).getName()).isEqualTo("initial"); // Isolated task
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.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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> 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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> 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");

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.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<Message> 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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> finished = otelTesting.getSpans();
assertEquals(2, finished.size());
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.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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> finished = otelTesting.getSpans();
assertThat(finished).hasSize(2);
for (SpanData spanProto : finished) {
@ -73,7 +69,7 @@ class HandlerTest {
parentSpan.end();
}
List<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> 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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> finished = otelTesting.getSpans();
assertThat(finished).hasSize(3);
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.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<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> 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<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> 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<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> 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<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> spans = otelTesting.getSpans();
assertEquals(spans.size(), 1);
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.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<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(3);
assertThat(spans.get(0).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.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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> finished = otelTesting.getSpans();
assertThat(finished).hasSize(1);
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.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<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(4);
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.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<SpanData> spans = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> spans = otelTesting.getSpans();
assertThat(spans).hasSize(1);
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.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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> finished = otelTesting.getSpans();
assertThat(finished.size()).isEqualTo(4);
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 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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> finished = otelTesting.getSpans();
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.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<SpanData> finished = inMemoryTracing.getSpanExporter().getFinishedSpanItems();
List<SpanData> finished = otelTesting.getSpans();
assertThat(finished.size()).isEqualTo(2);
assertThat(finished.get(0).getName()).isEqualTo("job 1");