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'
 | 
					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
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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. */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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());
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue