Improve library tests' stability (#2300)

* Improve library tests' stability

* Code review follow-up
This commit is contained in:
Mateusz Rzeszutek 2021-02-17 13:22:14 +01:00 committed by GitHub
parent 64c8a51f7d
commit aa5fef2bfe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 12 deletions

View File

@ -21,12 +21,12 @@ import io.opentelemetry.extension.trace.propagation.B3Propagator;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class ApiGatewayProxyRequestTest {
@AfterEach
@BeforeEach
void resetOpenTelemetry() {
GlobalOpenTelemetry.resetForTest();
}

View File

@ -32,6 +32,8 @@ public class ParentContextExtractorTest {
@BeforeClass
public static void setUp() {
// reset opentelemetry global instance in case any of the previous tests set it
GlobalOpenTelemetry.resetForTest();
GlobalOpenTelemetry.set(
OpenTelemetry.getPropagating(ContextPropagators.create(B3Propagator.getInstance())));
}

View File

@ -5,6 +5,7 @@
package io.opentelemetry.instrumentation.testing;
import io.opentelemetry.api.GlobalOpenTelemetry;
import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.ContextPropagators;
@ -27,20 +28,24 @@ import java.util.List;
*/
public final class LibraryTestRunner implements InstrumentationTestRunner {
protected static final InMemorySpanExporter testExporter;
private static final OpenTelemetrySdk openTelemetry;
private static final InMemorySpanExporter testExporter;
private static boolean forceFlushCalled;
private static final LibraryTestRunner INSTANCE = new LibraryTestRunner();
static {
GlobalOpenTelemetry.resetForTest();
testExporter = InMemorySpanExporter.create();
OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(new FlushTrackingSpanProcessor())
.addSpanProcessor(SimpleSpanProcessor.create(testExporter))
.build())
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.buildAndRegisterGlobal();
openTelemetry =
OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(new FlushTrackingSpanProcessor())
.addSpanProcessor(SimpleSpanProcessor.create(testExporter))
.build())
.setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
.buildAndRegisterGlobal();
}
public static InstrumentationTestRunner instance() {
@ -48,7 +53,13 @@ public final class LibraryTestRunner implements InstrumentationTestRunner {
}
@Override
public void beforeTestClass() {}
public void beforeTestClass() {
// just in case: if there was any test that modified the global instance, reset it
if (GlobalOpenTelemetry.get() != openTelemetry) {
GlobalOpenTelemetry.resetForTest();
GlobalOpenTelemetry.set(openTelemetry);
}
}
@Override
public void afterTestClass() {}