Change testbed to use the junit5 extension (#1988)
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
		
							parent
							
								
									37cce8dbca
								
							
						
					
					
						commit
						faf6b9f15e
					
				|  | @ -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 | ||||
| } | ||||
|  |  | |||
|  | @ -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. */ | ||||
|  |  | |||
|  | @ -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"); | ||||
|  |  | |||
|  | @ -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"); | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -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); | ||||
|   } | ||||
|  |  | |||
|  | @ -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"); | ||||
|  |  | |||
|  | @ -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); | ||||
| 
 | ||||
|  |  | |||
|  | @ -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"); | ||||
| 
 | ||||
|  |  | |||
|  | @ -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"); | ||||
| 
 | ||||
|  |  | |||
|  | @ -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"); | ||||
|  |  | |||
|  | @ -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()); | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -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"); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue