Skip to content

Commit 35225f3

Browse files
committed
Migrate dd-trace-core groovy files to java part 2
migrate DDSpecification and DDCoreSpecification that are used by most of the test in this module. we are keeping the groovy version to be able to incrementally migrate tests. a first small test (DDSpanLinkTest )is migrated to prove the viability of the strategy.
1 parent 4fa94c4 commit 35225f3

File tree

6 files changed

+801
-198
lines changed

6 files changed

+801
-198
lines changed

dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanLinkTest.groovy

Lines changed: 0 additions & 197 deletions
This file was deleted.
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package datadog.trace.core;
2+
3+
import datadog.metrics.api.statsd.StatsDClient;
4+
import datadog.trace.api.DDSpanId;
5+
import datadog.trace.api.DDTraceId;
6+
import datadog.trace.api.datastreams.NoopPathwayContext;
7+
import datadog.trace.api.sampling.PrioritySampling;
8+
import datadog.trace.bootstrap.instrumentation.api.Baggage;
9+
import datadog.trace.bootstrap.instrumentation.api.ProfilingContextIntegration;
10+
import datadog.trace.common.writer.ListWriter;
11+
import datadog.trace.core.CoreTracer.CoreTracerBuilder;
12+
import datadog.trace.core.propagation.PropagationTags;
13+
import datadog.trace.core.tagprocessor.TagsPostProcessorFactory;
14+
import datadog.trace.test.util.DDJavaSpecification;
15+
import datadog.trace.util.AgentTaskScheduler;
16+
import java.util.ArrayList;
17+
import java.util.Collections;
18+
import java.util.HashMap;
19+
import java.util.List;
20+
import java.util.Map;
21+
import java.util.concurrent.TimeUnit;
22+
import org.junit.jupiter.api.AfterAll;
23+
import org.junit.jupiter.api.AfterEach;
24+
import org.junit.jupiter.api.BeforeAll;
25+
26+
public abstract class DDCoreJavaSpecification extends DDJavaSpecification {
27+
28+
protected static List<CoreTracer> unclosedTracers = new ArrayList<>();
29+
30+
protected static class AutoCloseableCoreTracerBuilder extends CoreTracerBuilder {
31+
@Override
32+
public CoreTracer build() {
33+
CoreTracer tracer = super.build();
34+
unclosedTracers.add(tracer);
35+
return tracer;
36+
}
37+
}
38+
39+
protected boolean useNoopStatsDClient() {
40+
return true;
41+
}
42+
43+
protected boolean useStrictTraceWrites() {
44+
return true;
45+
}
46+
47+
@BeforeAll
48+
void setupCoreSpec() {
49+
TagsPostProcessorFactory.withAddInternalTags(false);
50+
TagsPostProcessorFactory.withAddRemoteHostname(false);
51+
}
52+
53+
@AfterAll
54+
void cleanupCoreSpec() {
55+
TagsPostProcessorFactory.reset();
56+
}
57+
58+
@AfterEach
59+
void cleanupCore() throws Exception {
60+
for (CoreTracer tracer : unclosedTracers) {
61+
try {
62+
tracer.close();
63+
} catch (Throwable ignored) {
64+
}
65+
}
66+
unclosedTracers.clear();
67+
AgentTaskScheduler.shutdownAndReset(10, TimeUnit.SECONDS);
68+
}
69+
70+
protected CoreTracerBuilder tracerBuilder() {
71+
CoreTracerBuilder builder = new AutoCloseableCoreTracerBuilder();
72+
if (useNoopStatsDClient()) {
73+
builder = builder.statsDClient(StatsDClient.NO_OP);
74+
}
75+
return builder.strictTraceWrites(useStrictTraceWrites());
76+
}
77+
78+
protected DDSpan buildSpan(long timestamp, CharSequence spanType, Map<String, Object> tags) {
79+
return buildSpan(
80+
timestamp,
81+
spanType,
82+
PropagationTags.factory().empty(),
83+
tags,
84+
PrioritySampling.SAMPLER_KEEP,
85+
null);
86+
}
87+
88+
protected DDSpan buildSpan(
89+
long timestamp, String tag, String value, PropagationTags propagationTags) {
90+
Map<String, Object> tags = new HashMap<>();
91+
tags.put(tag, value);
92+
return buildSpan(timestamp, "fakeType", propagationTags, tags, PrioritySampling.UNSET, null);
93+
}
94+
95+
protected DDSpan buildSpan(
96+
long timestamp,
97+
CharSequence spanType,
98+
PropagationTags propagationTags,
99+
Map<String, Object> tags,
100+
byte prioritySampling,
101+
Object ciVisibilityContextData) {
102+
CoreTracer tracer = tracerBuilder().writer(new ListWriter()).build();
103+
DDSpanContext context =
104+
new DDSpanContext(
105+
DDTraceId.ONE,
106+
1L,
107+
DDSpanId.ZERO,
108+
null,
109+
null,
110+
"fakeService",
111+
"fakeOperation",
112+
"fakeResource",
113+
prioritySampling,
114+
null,
115+
Collections.emptyMap(),
116+
(Baggage) null,
117+
false,
118+
spanType,
119+
0,
120+
tracer.createTraceCollector(DDTraceId.ONE),
121+
null,
122+
null,
123+
ciVisibilityContextData,
124+
NoopPathwayContext.INSTANCE,
125+
false,
126+
propagationTags,
127+
ProfilingContextIntegration.NoOp.INSTANCE,
128+
true);
129+
130+
DDSpan span = DDSpan.create("test", timestamp, context, null);
131+
for (Map.Entry<String, Object> entry : tags.entrySet()) {
132+
span.setTag(entry.getKey(), entry.getValue());
133+
}
134+
135+
tracer.close();
136+
return span;
137+
}
138+
}

0 commit comments

Comments
 (0)