opentelemetry-java-instrume.../dd-trace/src/test/java/com/datadoghq/trace/resolver/TracerResolverTest.java

78 lines
2.5 KiB
Java

package com.datadoghq.trace.resolver;
import static org.assertj.core.api.Assertions.assertThat;
import java.lang.reflect.Field;
import java.util.List;
import io.opentracing.NoopTracerFactory;
import io.opentracing.Tracer;
import io.opentracing.contrib.tracerresolver.TracerResolver;
import io.opentracing.tag.Tags;
import io.opentracing.util.GlobalTracer;
import org.junit.Test;
import com.datadoghq.trace.DDTracer;
import com.datadoghq.trace.integration.DDSpanContextDecorator;
import com.datadoghq.trace.integration.HTTPComponent;
import com.datadoghq.trace.integration.URLAsResourceName;
public class TracerResolverTest {
@Test
public void testResolve() {
DDTracerResolver tracerResolver = new DDTracerResolver();
DDTracer tracer = (DDTracer) tracerResolver.resolve();
// for HTTP decorators
List<DDSpanContextDecorator> decorators = tracer.getSpanContextDecorators(Tags.COMPONENT.getKey());
assertThat(decorators.size()).isEqualTo(2);
DDSpanContextDecorator decorator = decorators.get(0);
assertThat(decorator.getClass()).isEqualTo(HTTPComponent.class);
HTTPComponent httpServiceDecorator = (HTTPComponent) decorator;
assertThat(httpServiceDecorator.getMatchingTag()).isEqualTo("component");
assertThat(httpServiceDecorator.getMatchingValue()).isEqualTo("hello");
assertThat(httpServiceDecorator.getSetValue()).isEqualTo("world");
// for URL decorators
decorators = tracer.getSpanContextDecorators(Tags.HTTP_URL.getKey());
assertThat(decorators.size()).isEqualTo(1);
decorator = decorators.get(0);
assertThat(decorator.getClass()).isEqualTo(URLAsResourceName.class);
}
@Test
public void testResolveTracer() throws Exception {
Field tracerField = GlobalTracer.class.getDeclaredField("tracer");
tracerField.setAccessible(true);
tracerField.set(null, NoopTracerFactory.create());
assertThat(GlobalTracer.isRegistered()).isFalse();
Tracer tracer = TracerResolver.resolveTracer();
assertThat(GlobalTracer.isRegistered()).isFalse();
assertThat(tracer).isInstanceOf(DDTracer.class);
}
@Test
public void testRegisterTracer() throws Exception {
Field tracerField = GlobalTracer.class.getDeclaredField("tracer");
tracerField.setAccessible(true);
tracerField.set(null, NoopTracerFactory.create());
assertThat(GlobalTracer.isRegistered()).isFalse();
DDTracerResolver.registerTracer();
assertThat(GlobalTracer.isRegistered()).isTrue();
assertThat(tracerField.get(null)).isInstanceOf(DDTracer.class);
tracerField.set(null, NoopTracerFactory.create());
}
}