Merge pull request #1174 from DataDog/tyler/ddtrace-builder
Add Builder to DDTracer
This commit is contained in:
commit
d8bf99555f
|
@ -11,7 +11,7 @@ public class TracerInstaller {
|
|||
public static synchronized void installGlobalTracer() {
|
||||
if (Config.get().isTraceEnabled()) {
|
||||
if (!io.opentracing.util.GlobalTracer.isRegistered()) {
|
||||
final DDTracer tracer = new DDTracer();
|
||||
final DDTracer tracer = DDTracer.builder().build();
|
||||
try {
|
||||
io.opentracing.util.GlobalTracer.register(tracer);
|
||||
datadog.trace.api.GlobalTracer.registerIfAbsent(tracer);
|
||||
|
|
|
@ -95,7 +95,7 @@ public abstract class AgentTestRunner extends DDSpecification {
|
|||
return result;
|
||||
}
|
||||
};
|
||||
TEST_TRACER = new DDTracer(TEST_WRITER);
|
||||
TEST_TRACER = DDTracer.builder().writer(TEST_WRITER).build();
|
||||
GlobalTracerUtils.registerOrReplaceGlobalTracer((Tracer) TEST_TRACER);
|
||||
GlobalTracer.registerIfAbsent((datadog.trace.api.Tracer) TEST_TRACER);
|
||||
}
|
||||
|
|
|
@ -96,28 +96,61 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
|
|||
private final HttpCodec.Injector injector;
|
||||
private final HttpCodec.Extractor extractor;
|
||||
|
||||
public static class Builder {
|
||||
|
||||
public Builder() {
|
||||
// Apply the default values from config.
|
||||
config(Config.get());
|
||||
}
|
||||
|
||||
public Builder withProperties(final Properties properties) {
|
||||
return config(Config.get(properties));
|
||||
}
|
||||
|
||||
public Builder config(final Config config) {
|
||||
this.config = config;
|
||||
serviceName(config.getServiceName());
|
||||
// Explicitly skip setting writer to avoid allocating resources prematurely.
|
||||
sampler(Sampler.Builder.forConfig(config));
|
||||
injector(HttpCodec.createInjector(config));
|
||||
extractor(HttpCodec.createExtractor(config, config.getHeaderTags()));
|
||||
localRootSpanTags(config.getLocalRootSpanTags());
|
||||
defaultSpanTags(config.getMergedSpanTags());
|
||||
serviceNameMappings(config.getServiceMapping());
|
||||
taggedHeaders(config.getHeaderTags());
|
||||
partialFlushMinSpans(config.getPartialFlushMinSpans());
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/** By default, report to local agent and collect all traces. */
|
||||
@Deprecated
|
||||
public DDTracer() {
|
||||
this(Config.get());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public DDTracer(final String serviceName) {
|
||||
this(serviceName, Config.get());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public DDTracer(final Properties config) {
|
||||
this(Config.get(config));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public DDTracer(final Config config) {
|
||||
this(config.getServiceName(), config);
|
||||
}
|
||||
|
||||
// This constructor is already used in the wild, so we have to keep it inside this API for now.
|
||||
@Deprecated
|
||||
public DDTracer(final String serviceName, final Writer writer, final Sampler sampler) {
|
||||
this(serviceName, writer, sampler, Config.get().getLocalRootSpanTags());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
private DDTracer(final String serviceName, final Config config) {
|
||||
this(
|
||||
serviceName,
|
||||
|
@ -132,6 +165,7 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
|
|||
}
|
||||
|
||||
/** Visible for testing */
|
||||
@Deprecated
|
||||
DDTracer(
|
||||
final String serviceName,
|
||||
final Writer writer,
|
||||
|
@ -148,10 +182,12 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
|
|||
0);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public DDTracer(final Writer writer) {
|
||||
this(Config.get(), writer);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public DDTracer(final Config config, final Writer writer) {
|
||||
this(
|
||||
config.getServiceName(),
|
||||
|
@ -164,9 +200,6 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
|
|||
config.getPartialFlushMinSpans());
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #DDTracer(String, Writer, Sampler, Map, Map, Map, Map, int)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public DDTracer(
|
||||
final String serviceName,
|
||||
|
@ -188,9 +221,6 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
|
|||
Config.get().getPartialFlushMinSpans());
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #DDTracer(String, Writer, Sampler, Map, Map, Map, Map, int)} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
public DDTracer(
|
||||
final String serviceName,
|
||||
|
@ -211,6 +241,7 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
|
|||
Config.get().getPartialFlushMinSpans());
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public DDTracer(
|
||||
final String serviceName,
|
||||
final Writer writer,
|
||||
|
@ -220,20 +251,56 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
|
|||
final Map<String, String> serviceNameMappings,
|
||||
final Map<String, String> taggedHeaders,
|
||||
final int partialFlushMinSpans) {
|
||||
this(
|
||||
Config.get(),
|
||||
serviceName,
|
||||
writer,
|
||||
sampler,
|
||||
HttpCodec.createInjector(Config.get()),
|
||||
HttpCodec.createExtractor(Config.get(), taggedHeaders),
|
||||
localRootSpanTags,
|
||||
defaultSpanTags,
|
||||
serviceNameMappings,
|
||||
taggedHeaders,
|
||||
partialFlushMinSpans);
|
||||
}
|
||||
|
||||
@lombok.Builder(builderClassName = "Builder")
|
||||
// These field names must be stable to ensure the builder api is stable.
|
||||
private DDTracer(
|
||||
final Config config,
|
||||
final String serviceName,
|
||||
final Writer writer,
|
||||
final Sampler sampler,
|
||||
final HttpCodec.Injector injector,
|
||||
final HttpCodec.Extractor extractor,
|
||||
final Map<String, String> localRootSpanTags,
|
||||
final Map<String, String> defaultSpanTags,
|
||||
final Map<String, String> serviceNameMappings,
|
||||
final Map<String, String> taggedHeaders,
|
||||
final int partialFlushMinSpans) {
|
||||
|
||||
assert localRootSpanTags != null;
|
||||
assert defaultSpanTags != null;
|
||||
assert serviceNameMappings != null;
|
||||
assert taggedHeaders != null;
|
||||
|
||||
this.serviceName = serviceName;
|
||||
if (writer == null) {
|
||||
this.writer = Writer.Builder.forConfig(config);
|
||||
} else {
|
||||
this.writer = writer;
|
||||
this.writer.start();
|
||||
}
|
||||
this.sampler = sampler;
|
||||
this.injector = injector;
|
||||
this.extractor = extractor;
|
||||
this.localRootSpanTags = localRootSpanTags;
|
||||
this.defaultSpanTags = defaultSpanTags;
|
||||
this.serviceNameMappings = serviceNameMappings;
|
||||
this.partialFlushMinSpans = partialFlushMinSpans;
|
||||
|
||||
this.writer.start();
|
||||
|
||||
shutdownCallback = new ShutdownHook(this);
|
||||
try {
|
||||
Runtime.getRuntime().addShutdownHook(shutdownCallback);
|
||||
|
@ -241,10 +308,6 @@ public class DDTracer implements io.opentracing.Tracer, Closeable, datadog.trace
|
|||
// The JVM is already shutting down.
|
||||
}
|
||||
|
||||
// TODO: we have too many constructors, we should move to some sort of builder approach
|
||||
injector = HttpCodec.createInjector(Config.get());
|
||||
extractor = HttpCodec.createExtractor(Config.get(), taggedHeaders);
|
||||
|
||||
if (this.writer instanceof DDAgentWriter && sampler instanceof DDAgentResponseListener) {
|
||||
((DDAgentWriter) this.writer).addResponseListener((DDAgentResponseListener) this.sampler);
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ public class DDTracerResolver extends TracerResolver {
|
|||
Tracer resolve(final Config config) {
|
||||
if (config.isTraceResolverEnabled()) {
|
||||
log.info("Creating DDTracer with DDTracerResolver");
|
||||
return new DDTracer();
|
||||
return DDTracer.builder().config(config).build();
|
||||
} else {
|
||||
log.info("DDTracerResolver disabled");
|
||||
return null;
|
||||
|
|
|
@ -17,7 +17,7 @@ class OT31ApiTest extends DDSpecification {
|
|||
static final WRITER = new ListWriter()
|
||||
|
||||
@Subject
|
||||
Tracer tracer = new DDTracer(WRITER)
|
||||
Tracer tracer = DDTracer.builder().writer(WRITER).build()
|
||||
|
||||
def "test startActive"() {
|
||||
when:
|
||||
|
|
|
@ -13,7 +13,7 @@ class OT33ApiTest extends DDSpecification {
|
|||
static final WRITER = new ListWriter()
|
||||
|
||||
@Subject
|
||||
Tracer tracer = new DDTracer(WRITER)
|
||||
Tracer tracer = DDTracer.builder().writer(WRITER).build()
|
||||
|
||||
def "test start"() {
|
||||
when:
|
||||
|
|
|
@ -16,7 +16,7 @@ class DDSpanBuilderTest extends DDSpecification {
|
|||
|
||||
def writer = new ListWriter()
|
||||
def config = Config.get()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
|
||||
def "build simple span"() {
|
||||
setup:
|
||||
|
@ -458,7 +458,7 @@ class DDSpanBuilderTest extends DDSpecification {
|
|||
setup:
|
||||
System.setProperty("dd.trace.span.tags", tagString)
|
||||
def config = new Config()
|
||||
tracer = new DDTracer(config, writer)
|
||||
tracer = DDTracer.builder().config(config).writer(writer).build()
|
||||
def span = tracer.buildSpan("op name").withServiceName("foo").start()
|
||||
|
||||
expect:
|
||||
|
|
|
@ -40,7 +40,7 @@ class DDSpanSerializationTest extends DDSpecification {
|
|||
expected.put("trace_id", 1l)
|
||||
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
final DDSpanContext context =
|
||||
new DDSpanContext(
|
||||
1G,
|
||||
|
@ -81,7 +81,7 @@ class DDSpanSerializationTest extends DDSpecification {
|
|||
setup:
|
||||
def objectMapper = new ObjectMapper(new MessagePackFactory())
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
def context = new DDSpanContext(
|
||||
value,
|
||||
value,
|
||||
|
|
|
@ -17,7 +17,7 @@ class DDSpanTest extends DDSpecification {
|
|||
|
||||
def writer = new ListWriter()
|
||||
def sampler = new RateByServiceSampler()
|
||||
def tracer = new DDTracer(DEFAULT_SERVICE_NAME, writer, sampler, [:])
|
||||
def tracer = DDTracer.builder().writer(writer).sampler(sampler).build()
|
||||
|
||||
def "getters and setters"() {
|
||||
setup:
|
||||
|
@ -91,7 +91,7 @@ class DDSpanTest extends DDSpecification {
|
|||
when:
|
||||
final String resourceName = "fake"
|
||||
final String serviceName = "myService"
|
||||
span = new DDTracer()
|
||||
span = DDTracer.builder().build()
|
||||
.buildSpan(opName)
|
||||
.withResourceName(resourceName)
|
||||
.withServiceName(serviceName)
|
||||
|
|
|
@ -23,7 +23,7 @@ class PendingTraceTest extends DDSpecification {
|
|||
PendingTraceTest.this.traceCount.incrementAndGet()
|
||||
}
|
||||
}
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
|
||||
BigInteger traceId = BigInteger.valueOf(System.identityHashCode(this))
|
||||
|
||||
|
@ -195,7 +195,7 @@ class PendingTraceTest extends DDSpecification {
|
|||
def properties = new Properties()
|
||||
properties.setProperty(PARTIAL_FLUSH_MIN_SPANS, "1")
|
||||
def config = Config.get(properties)
|
||||
def tracer = new DDTracer(config, writer)
|
||||
def tracer = DDTracer.builder().config(config).writer(writer).build()
|
||||
def trace = new PendingTrace(tracer, traceId, [:])
|
||||
def rootSpan = SpanFactory.newSpanOf(trace)
|
||||
def child1 = tracer.buildSpan("child1").asChildOf(rootSpan).start()
|
||||
|
@ -241,7 +241,7 @@ class PendingTraceTest extends DDSpecification {
|
|||
def properties = new Properties()
|
||||
properties.setProperty(PARTIAL_FLUSH_MIN_SPANS, "1")
|
||||
def config = Config.get(properties)
|
||||
def tracer = new DDTracer(config, writer)
|
||||
def tracer = DDTracer.builder().config(config).writer(writer).build()
|
||||
def trace = new PendingTrace(tracer, traceId, [:])
|
||||
def rootSpan = SpanFactory.newSpanOf(trace)
|
||||
def child1 = tracer.buildSpan("child1").asChildOf(rootSpan).start()
|
||||
|
|
|
@ -8,7 +8,7 @@ class SpanFactory {
|
|||
|
||||
static DDSpan newSpanOf(long timestampMicro, String threadName = Thread.currentThread().name) {
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
def currentThreadName = Thread.currentThread().getName()
|
||||
Thread.currentThread().setName(threadName)
|
||||
def context = new DDSpanContext(
|
||||
|
@ -70,7 +70,7 @@ class SpanFactory {
|
|||
|
||||
static DDSpan newSpanOf(String serviceName, String envName) {
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
def context = new DDSpanContext(
|
||||
1G,
|
||||
1G,
|
||||
|
|
|
@ -10,7 +10,7 @@ class TraceCorrelationTest extends DDSpecification {
|
|||
static final WRITER = new ListWriter()
|
||||
|
||||
@Shared
|
||||
DDTracer tracer = new DDTracer(WRITER)
|
||||
DDTracer tracer = DDTracer.builder().writer(WRITER).build()
|
||||
|
||||
def scope = tracer.buildSpan("test").startActive(true)
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ import java.util.concurrent.atomic.AtomicBoolean
|
|||
class TraceInterceptorTest extends DDSpecification {
|
||||
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
|
||||
def "interceptor is registered as a service"() {
|
||||
expect:
|
||||
|
|
|
@ -16,7 +16,6 @@ import io.opentracing.tag.Tags
|
|||
|
||||
import static datadog.trace.api.Config.DEFAULT_SERVICE_NAME
|
||||
import static datadog.trace.api.DDTags.ANALYTICS_SAMPLE_RATE
|
||||
import static java.util.Collections.emptyMap
|
||||
|
||||
class SpanDecoratorTest extends DDSpecification {
|
||||
static {
|
||||
|
@ -30,7 +29,7 @@ class SpanDecoratorTest extends DDSpecification {
|
|||
System.clearProperty("dd.$Config.SPLIT_BY_TAGS")
|
||||
}
|
||||
}
|
||||
def tracer = new DDTracer(new LoggingWriter())
|
||||
def tracer = DDTracer.builder().writer(new LoggingWriter()).build()
|
||||
def span = SpanFactory.newSpanOf(tracer)
|
||||
|
||||
def "adding span personalisation using Decorators"() {
|
||||
|
@ -55,16 +54,12 @@ class SpanDecoratorTest extends DDSpecification {
|
|||
|
||||
def "set service name"() {
|
||||
setup:
|
||||
tracer = new DDTracer(
|
||||
"wrong-service",
|
||||
new LoggingWriter(),
|
||||
new AllSampler(),
|
||||
"some-runtime-id",
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
mapping,
|
||||
emptyMap()
|
||||
)
|
||||
tracer = DDTracer.builder()
|
||||
.serviceName("wrong-service")
|
||||
.writer(new LoggingWriter())
|
||||
.sampler(new AllSampler())
|
||||
.serviceNameMappings(mapping)
|
||||
.build()
|
||||
|
||||
when:
|
||||
def span = tracer.buildSpan("some span").withTag(tag, name).start()
|
||||
|
@ -91,16 +86,12 @@ class SpanDecoratorTest extends DDSpecification {
|
|||
|
||||
def "default or configured service name can be remapped without setting tag"() {
|
||||
setup:
|
||||
tracer = new DDTracer(
|
||||
serviceName,
|
||||
new LoggingWriter(),
|
||||
new AllSampler(),
|
||||
"some-runtime-id",
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
mapping,
|
||||
emptyMap()
|
||||
)
|
||||
tracer = DDTracer.builder()
|
||||
.serviceName(serviceName)
|
||||
.writer(new LoggingWriter())
|
||||
.sampler(new AllSampler())
|
||||
.serviceNameMappings(mapping)
|
||||
.build()
|
||||
|
||||
when:
|
||||
def span = tracer.buildSpan("some span").start()
|
||||
|
@ -138,16 +129,12 @@ class SpanDecoratorTest extends DDSpecification {
|
|||
|
||||
def "set service name from servlet.context with context '#context' for service #serviceName"() {
|
||||
setup:
|
||||
tracer = new DDTracer(
|
||||
serviceName,
|
||||
new LoggingWriter(),
|
||||
new AllSampler(),
|
||||
"some-runtime-id",
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
mapping,
|
||||
emptyMap()
|
||||
)
|
||||
tracer = DDTracer.builder()
|
||||
.serviceName(serviceName)
|
||||
.writer(new LoggingWriter())
|
||||
.sampler(new AllSampler())
|
||||
.serviceNameMappings(mapping)
|
||||
.build()
|
||||
|
||||
when:
|
||||
def span = tracer.buildSpan("some span").start()
|
||||
|
@ -172,16 +159,12 @@ class SpanDecoratorTest extends DDSpecification {
|
|||
}
|
||||
|
||||
static createSplittingTracer(tag) {
|
||||
def tracer = new DDTracer(
|
||||
"my-service",
|
||||
new LoggingWriter(),
|
||||
new AllSampler(),
|
||||
"some-runtime-id",
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
emptyMap()
|
||||
)
|
||||
def tracer = DDTracer.builder()
|
||||
.serviceName("my-service")
|
||||
.writer(new LoggingWriter())
|
||||
.sampler(new AllSampler())
|
||||
.build()
|
||||
|
||||
// equivalent to split-by-tags: tag
|
||||
tracer.addDecorator(new ServiceNameDecorator(tag, true))
|
||||
|
||||
|
@ -477,16 +460,11 @@ class SpanDecoratorTest extends DDSpecification {
|
|||
System.setProperty("dd.trace." + PeerServiceDecorator.getSimpleName().toLowerCase() + ".enabled", "false")
|
||||
}
|
||||
|
||||
tracer = new DDTracer(
|
||||
"some-service",
|
||||
new LoggingWriter(),
|
||||
new AllSampler(),
|
||||
"some-runtime-id",
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
emptyMap()
|
||||
)
|
||||
tracer = DDTracer.builder()
|
||||
.serviceName("some-service")
|
||||
.writer(new LoggingWriter())
|
||||
.sampler(new AllSampler())
|
||||
.build()
|
||||
|
||||
when:
|
||||
def span = tracer.buildSpan("some span").withTag(Tags.PEER_SERVICE.key, "peer-service").start()
|
||||
|
@ -507,16 +485,11 @@ class SpanDecoratorTest extends DDSpecification {
|
|||
System.setProperty("dd.trace." + ServiceNameDecorator.getSimpleName().toLowerCase() + ".enabled", "false")
|
||||
}
|
||||
|
||||
tracer = new DDTracer(
|
||||
"some-service",
|
||||
new LoggingWriter(),
|
||||
new AllSampler(),
|
||||
"some-runtime-id",
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
emptyMap(),
|
||||
emptyMap()
|
||||
)
|
||||
tracer = DDTracer.builder()
|
||||
.serviceName("some-service")
|
||||
.writer(new LoggingWriter())
|
||||
.sampler(new AllSampler())
|
||||
.build()
|
||||
|
||||
when:
|
||||
def span = tracer.buildSpan("some span").withTag(tag, name).start()
|
||||
|
|
|
@ -12,7 +12,7 @@ import spock.lang.Subject
|
|||
class URLAsResourceNameTest extends DDSpecification {
|
||||
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
|
||||
@Subject
|
||||
def decorator = new URLAsResourceName()
|
||||
|
|
|
@ -20,7 +20,7 @@ class B3HttpInjectorTest extends DDSpecification {
|
|||
def "inject http headers"() {
|
||||
setup:
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
final DDSpanContext mockedContext =
|
||||
new DDSpanContext(
|
||||
traceId,
|
||||
|
|
|
@ -22,7 +22,7 @@ class DatadogHttpInjectorTest extends DDSpecification {
|
|||
def "inject http headers"() {
|
||||
setup:
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
final DDSpanContext mockedContext =
|
||||
new DDSpanContext(
|
||||
traceId,
|
||||
|
|
|
@ -20,7 +20,7 @@ class HaystackHttpInjectorTest extends DDSpecification {
|
|||
def "inject http headers"() {
|
||||
setup:
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
final DDSpanContext mockedContext =
|
||||
new DDSpanContext(
|
||||
traceId,
|
||||
|
|
|
@ -25,7 +25,7 @@ class HttpInjectorTest extends DDSpecification {
|
|||
def spanId = 2G
|
||||
|
||||
def writer = new ListWriter()
|
||||
def tracer = new DDTracer(writer)
|
||||
def tracer = DDTracer.builder().writer(writer).build()
|
||||
final DDSpanContext mockedContext =
|
||||
new DDSpanContext(
|
||||
traceId,
|
||||
|
|
|
@ -40,7 +40,7 @@ class DDTracerTest extends DDSpecification {
|
|||
|
||||
def "verify defaults on tracer"() {
|
||||
when:
|
||||
def tracer = new DDTracer()
|
||||
def tracer = DDTracer.builder().build()
|
||||
|
||||
then:
|
||||
tracer.serviceName == "unnamed-java-app"
|
||||
|
@ -63,7 +63,7 @@ class DDTracerTest extends DDSpecification {
|
|||
System.setProperty(PREFIX + HEALTH_METRICS_ENABLED, "true")
|
||||
|
||||
when:
|
||||
def tracer = new DDTracer(new Config())
|
||||
def tracer = DDTracer.builder().config(new Config()).build()
|
||||
|
||||
then:
|
||||
tracer.writer.monitor instanceof Monitor.StatsD
|
||||
|
@ -75,7 +75,7 @@ class DDTracerTest extends DDSpecification {
|
|||
setup:
|
||||
System.setProperty(PREFIX + PRIORITY_SAMPLING, "false")
|
||||
when:
|
||||
def tracer = new DDTracer(new Config())
|
||||
def tracer = DDTracer.builder().config(new Config()).build()
|
||||
then:
|
||||
tracer.sampler instanceof AllSampler
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ class DDTracerTest extends DDSpecification {
|
|||
System.setProperty(PREFIX + WRITER_TYPE, "LoggingWriter")
|
||||
|
||||
when:
|
||||
def tracer = new DDTracer(new Config())
|
||||
def tracer = DDTracer.builder().config(new Config()).build()
|
||||
|
||||
then:
|
||||
tracer.writer instanceof LoggingWriter
|
||||
|
@ -98,8 +98,7 @@ class DDTracerTest extends DDSpecification {
|
|||
System.setProperty(PREFIX + HEADER_TAGS, mapString)
|
||||
|
||||
when:
|
||||
def config = new Config()
|
||||
def tracer = new DDTracer(config)
|
||||
def tracer = DDTracer.builder().config(new Config()).build()
|
||||
// Datadog extractor gets placed first
|
||||
def taggedHeaders = tracer.extractor.extractors[0].taggedHeaders
|
||||
|
||||
|
@ -117,7 +116,7 @@ class DDTracerTest extends DDSpecification {
|
|||
def "verify overriding host"() {
|
||||
when:
|
||||
System.setProperty(PREFIX + key, value)
|
||||
def tracer = new DDTracer(new Config())
|
||||
def tracer = DDTracer.builder().config(new Config()).build()
|
||||
|
||||
then:
|
||||
tracer.writer instanceof DDAgentWriter
|
||||
|
@ -132,7 +131,7 @@ class DDTracerTest extends DDSpecification {
|
|||
def "verify overriding port"() {
|
||||
when:
|
||||
System.setProperty(PREFIX + key, value)
|
||||
def tracer = new DDTracer(new Config())
|
||||
def tracer = DDTracer.builder().config(new Config()).build()
|
||||
|
||||
then:
|
||||
tracer.writer instanceof DDAgentWriter
|
||||
|
@ -148,7 +147,7 @@ class DDTracerTest extends DDSpecification {
|
|||
def "Writer is instance of LoggingWriter when property set"() {
|
||||
when:
|
||||
System.setProperty(PREFIX + "writer.type", "LoggingWriter")
|
||||
def tracer = new DDTracer(new Config())
|
||||
def tracer = DDTracer.builder().config(new Config()).build()
|
||||
|
||||
then:
|
||||
tracer.writer instanceof LoggingWriter
|
||||
|
@ -173,7 +172,7 @@ class DDTracerTest extends DDSpecification {
|
|||
def "Shares TraceCount with DDApi with #key = #value"() {
|
||||
setup:
|
||||
System.setProperty(PREFIX + key, value)
|
||||
final DDTracer tracer = new DDTracer(new Config())
|
||||
final DDTracer tracer = DDTracer.builder().build()
|
||||
|
||||
expect:
|
||||
tracer.writer instanceof DDAgentWriter
|
||||
|
@ -187,7 +186,7 @@ class DDTracerTest extends DDSpecification {
|
|||
|
||||
def "root tags are applied only to root spans"() {
|
||||
setup:
|
||||
def tracer = new DDTracer('my_service', new ListWriter(), new AllSampler(), '', ['only_root': 'value'], [:], [:], [:])
|
||||
def tracer = DDTracer.builder().localRootSpanTags(['only_root': 'value']).build()
|
||||
def root = tracer.buildSpan('my_root').start()
|
||||
def child = tracer.buildSpan('my_child').asChildOf(root).start()
|
||||
|
||||
|
@ -204,7 +203,7 @@ class DDTracerTest extends DDSpecification {
|
|||
given:
|
||||
Properties properties = new Properties()
|
||||
properties.setProperty("writer.type", "LoggingWriter")
|
||||
def tracer = new DDTracer(new Config(properties, Config.get()))
|
||||
def tracer = DDTracer.builder().withProperties(properties).build()
|
||||
|
||||
when:
|
||||
def span = tracer.buildSpan("operation").start()
|
||||
|
@ -218,7 +217,7 @@ class DDTracerTest extends DDSpecification {
|
|||
given:
|
||||
Properties properties = new Properties()
|
||||
properties.setProperty("writer.type", "LoggingWriter")
|
||||
def tracer = new DDTracer(new Config(properties, Config.get()))
|
||||
def tracer = DDTracer.builder().withProperties(properties).build()
|
||||
|
||||
when:
|
||||
def root = tracer.buildSpan("operation").start()
|
||||
|
@ -240,7 +239,7 @@ class DDTracerTest extends DDSpecification {
|
|||
given:
|
||||
Properties properties = new Properties()
|
||||
properties.setProperty("writer.type", "LoggingWriter")
|
||||
def tracer = new DDTracer(new Config(properties, Config.get()))
|
||||
def tracer = DDTracer.builder().withProperties(properties).build()
|
||||
def injector = Mock(TextMapInject)
|
||||
|
||||
when:
|
||||
|
@ -261,7 +260,7 @@ class DDTracerTest extends DDSpecification {
|
|||
def "span priority only set after first injection"() {
|
||||
given:
|
||||
def sampler = new ControllableSampler()
|
||||
def tracer = new DDTracer("serviceName", new LoggingWriter(), sampler)
|
||||
def tracer = DDTracer.builder().writer(new LoggingWriter()).sampler(sampler).build()
|
||||
def injector = Mock(TextMapInject)
|
||||
|
||||
when:
|
||||
|
@ -294,7 +293,7 @@ class DDTracerTest extends DDSpecification {
|
|||
def "injection doesn't override set priority"() {
|
||||
given:
|
||||
def sampler = new ControllableSampler()
|
||||
def tracer = new DDTracer("serviceName", new LoggingWriter(), sampler)
|
||||
def tracer = DDTracer.builder().writer(new LoggingWriter()).sampler(sampler).build()
|
||||
def injector = Mock(TextMapInject)
|
||||
|
||||
when:
|
||||
|
|
|
@ -74,7 +74,7 @@ class RateByServiceSamplerTest extends DDSpecification {
|
|||
|
||||
def "sampling priority set when service later"() {
|
||||
def sampler = new RateByServiceSampler()
|
||||
def tracer = new DDTracer("serviceName", new LoggingWriter(), sampler)
|
||||
def tracer = DDTracer.builder().writer(new LoggingWriter()).sampler(sampler).build()
|
||||
|
||||
sampler.onResponse("test", new ObjectMapper()
|
||||
.readTree('{"rate_by_service":{"service:,env:":1.0,"service:spock,env:":0.0}}'))
|
||||
|
@ -103,7 +103,7 @@ class RateByServiceSamplerTest extends DDSpecification {
|
|||
def "setting forced tracing via tag"() {
|
||||
when:
|
||||
def sampler = new RateByServiceSampler()
|
||||
def tracer = new DDTracer("serviceName", new LoggingWriter(), sampler)
|
||||
def tracer = DDTracer.builder().writer(new LoggingWriter()).sampler(sampler).build()
|
||||
def span = tracer.buildSpan("root").start()
|
||||
if (tagName) {
|
||||
span.setTag(tagName, tagValue)
|
||||
|
@ -122,7 +122,7 @@ class RateByServiceSamplerTest extends DDSpecification {
|
|||
def "not setting forced tracing via tag or setting it wrong value not causing exception"() {
|
||||
setup:
|
||||
def sampler = new RateByServiceSampler()
|
||||
def tracer = new DDTracer("serviceName", new LoggingWriter(), sampler)
|
||||
def tracer = DDTracer.builder().writer(new LoggingWriter()).sampler(sampler).build()
|
||||
def span = tracer.buildSpan("root").start()
|
||||
if (tagName) {
|
||||
span.setTag(tagName, tagValue)
|
||||
|
|
|
@ -23,7 +23,7 @@ class DDApiIntegrationTest {
|
|||
@Requires({ "true" == System.getenv("CI") || jvm.java8Compatible })
|
||||
static class DDAgentApiIntegrationV4Test extends DDSpecification {
|
||||
static final WRITER = new ListWriter()
|
||||
static final TRACER = new DDTracer(WRITER)
|
||||
static final TRACER = DDTracer.builder().writer(WRITER).build()
|
||||
static final CONTEXT = new DDSpanContext(
|
||||
1G,
|
||||
1G,
|
||||
|
|
Loading…
Reference in New Issue