Skip to content

Commit 89d950f

Browse files
committed
More tabletest and converters
1 parent 65a82f5 commit 89d950f

4 files changed

Lines changed: 36 additions & 40 deletions

File tree

.claude/skills/migrate-groovy-to-java/SKILL.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ When converting Groovy code to Java code, make sure that:
3131
- Ensure variables are human-readable; avoid single-letter names and pre-define variables that are referenced multiple times
3232
- When translating Spock `Mock(...)` usage, use `libs.bundles.mockito` instead of writing manual recording/stub implementations
3333
- Replace `injectSysConfig(key, value)` calls with `@WithConfig` when the key and value are static literals. Put it on the test method for per-test config, or on the class when every test needs it. The `dd.` prefix is added automatically — use the bare key (e.g. `"trace.scope.strict.mode"`, not `"dd.trace.scope.strict.mode"`). For dynamic or parameterized values, keep the imperative `WithConfigExtension.injectSysConfig(key, value)` call.
34+
- When `@BeforeEach` registers a mock with a production object (e.g. `tracer.addTraceInterceptor(mockInterceptor)`), that call may invoke methods on the mock. End `@BeforeEach` with `clearInvocations(mock1, mock2)` so those incidental calls don't bleed into per-test `verify()` checks. Spock's `N * mock.method()` pattern only counts interactions inside the `when:` block, so the original test never saw the problem.
3435
- Keep inline comments
3536
- Migrate the named Spock clauses if they exist as inline comments in the Java unit test
3637

dd-trace-ot/build.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,12 @@ dependencies {
6666
implementation(project(":dd-trace-ot:correlation-id-injection"))
6767

6868
testImplementation(project(":dd-java-agent:testing"))
69+
testImplementation(project(":utils:junit-utils"))
6970
testImplementation(libs.bundles.mockito)
7071

72+
add("ot31CompatibilityTestImplementation", project(":utils:junit-utils"))
73+
add("ot33CompatibilityTestImplementation", project(":utils:junit-utils"))
74+
7175
// Kotlin accessors not generated if not coming from plugin
7276
add("ot33CompatibilityTestImplementation", "io.opentracing:opentracing-api") {
7377
version {

dd-trace-ot/src/ot31CompatibilityTest/java/datadog/opentracing/OT31ApiTest.java

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
11
package datadog.opentracing;
22

3-
import static datadog.trace.api.sampling.PrioritySampling.SAMPLER_DROP;
4-
import static datadog.trace.api.sampling.PrioritySampling.SAMPLER_KEEP;
53
import static datadog.trace.api.sampling.PrioritySampling.UNSET;
6-
import static datadog.trace.api.sampling.PrioritySampling.USER_DROP;
7-
import static datadog.trace.api.sampling.PrioritySampling.USER_KEEP;
84
import static datadog.trace.api.sampling.SamplingMechanism.AGENT_RATE;
9-
import static datadog.trace.api.sampling.SamplingMechanism.DEFAULT;
10-
import static datadog.trace.api.sampling.SamplingMechanism.MANUAL;
115
import static org.junit.jupiter.api.Assertions.assertEquals;
126
import static org.junit.jupiter.api.Assertions.assertNotNull;
137
import static org.junit.jupiter.api.Assertions.assertTrue;
14-
import static org.junit.jupiter.params.provider.Arguments.arguments;
158

169
import datadog.trace.api.DDSpanId;
1710
import datadog.trace.api.DDTraceId;
1811
import datadog.trace.api.internal.util.LongStringUtils;
1912
import datadog.trace.common.writer.ListWriter;
2013
import datadog.trace.core.DDSpan;
2114
import datadog.trace.core.DDSpanContext;
15+
import datadog.trace.junit.utils.tabletest.PrioritySamplingConverter;
16+
import datadog.trace.junit.utils.tabletest.SamplingMechanismConverter;
2217
import datadog.trace.test.util.DDJavaSpecification;
2318
import io.opentracing.Scope;
2419
import io.opentracing.Tracer;
@@ -28,11 +23,10 @@
2823
import java.util.HashMap;
2924
import java.util.Iterator;
3025
import java.util.Map;
31-
import java.util.stream.Stream;
3226
import org.junit.jupiter.api.AfterEach;
3327
import org.junit.jupiter.api.Test;
3428
import org.junit.jupiter.params.ParameterizedTest;
35-
import org.junit.jupiter.params.provider.MethodSource;
29+
import org.junit.jupiter.params.converter.ConvertWith;
3630
import org.tabletest.junit.TableTest;
3731

3832
// This test focuses on things that are different between OpenTracing API 0.31.0 and 0.32.0
@@ -91,19 +85,20 @@ void testScopeManager(String scenario, boolean finishSpan) {
9185
assertEquals(finishSpan, ((DDSpan) ((OTSpan) span).getDelegate()).isFinished());
9286
}
9387

94-
static Stream<org.junit.jupiter.params.provider.Arguments> testInjectExtractArguments() {
95-
return Stream.of(
96-
arguments("sampler drop", SAMPLER_DROP, DEFAULT, SAMPLER_DROP),
97-
arguments("sampler keep", SAMPLER_KEEP, DEFAULT, SAMPLER_KEEP),
98-
arguments("unset", UNSET, DEFAULT, SAMPLER_KEEP),
99-
arguments("user keep", USER_KEEP, MANUAL, USER_KEEP),
100-
arguments("user drop", USER_DROP, MANUAL, USER_DROP));
101-
}
102-
10388
@ParameterizedTest
104-
@MethodSource("testInjectExtractArguments")
89+
@TableTest({
90+
"scenario | contextPriority | samplingMechanism | propagatedPriority ",
91+
"sampler drop | PrioritySampling.SAMPLER_DROP | SamplingMechanism.DEFAULT | PrioritySampling.SAMPLER_DROP",
92+
"sampler keep | PrioritySampling.SAMPLER_KEEP | SamplingMechanism.DEFAULT | PrioritySampling.SAMPLER_KEEP",
93+
"unset | PrioritySampling.UNSET | SamplingMechanism.DEFAULT | PrioritySampling.SAMPLER_KEEP",
94+
"user keep | PrioritySampling.USER_KEEP | SamplingMechanism.MANUAL | PrioritySampling.USER_KEEP ",
95+
"user drop | PrioritySampling.USER_DROP | SamplingMechanism.MANUAL | PrioritySampling.USER_DROP "
96+
})
10597
void testInjectExtract(
106-
String scenario, int contextPriority, int samplingMechanism, int propagatedPriority)
98+
String scenario,
99+
@ConvertWith(PrioritySamplingConverter.class) int contextPriority,
100+
@ConvertWith(SamplingMechanismConverter.class) int samplingMechanism,
101+
@ConvertWith(PrioritySamplingConverter.class) int propagatedPriority)
107102
throws Exception {
108103
io.opentracing.Span span = tracer.buildSpan("some name").start();
109104
io.opentracing.SpanContext context = span.context();

dd-trace-ot/src/ot33CompatibilityTest/java/datadog/opentracing/OT33ApiTest.java

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
11
package datadog.opentracing;
22

3-
import static datadog.trace.api.sampling.PrioritySampling.SAMPLER_DROP;
4-
import static datadog.trace.api.sampling.PrioritySampling.SAMPLER_KEEP;
53
import static datadog.trace.api.sampling.PrioritySampling.UNSET;
6-
import static datadog.trace.api.sampling.PrioritySampling.USER_DROP;
7-
import static datadog.trace.api.sampling.PrioritySampling.USER_KEEP;
84
import static datadog.trace.api.sampling.SamplingMechanism.AGENT_RATE;
9-
import static datadog.trace.api.sampling.SamplingMechanism.DEFAULT;
10-
import static datadog.trace.api.sampling.SamplingMechanism.MANUAL;
115
import static org.junit.jupiter.api.Assertions.assertEquals;
126
import static org.junit.jupiter.api.Assertions.assertFalse;
13-
import static org.junit.jupiter.params.provider.Arguments.arguments;
147

158
import datadog.trace.api.DDSpanId;
169
import datadog.trace.api.DDTraceId;
1710
import datadog.trace.api.internal.util.LongStringUtils;
1811
import datadog.trace.common.writer.ListWriter;
1912
import datadog.trace.core.DDSpanContext;
13+
import datadog.trace.junit.utils.tabletest.PrioritySamplingConverter;
14+
import datadog.trace.junit.utils.tabletest.SamplingMechanismConverter;
2015
import datadog.trace.test.util.DDJavaSpecification;
2116
import io.opentracing.Scope;
2217
import io.opentracing.Tracer;
@@ -26,11 +21,11 @@
2621
import java.util.HashMap;
2722
import java.util.Iterator;
2823
import java.util.Map;
29-
import java.util.stream.Stream;
3024
import org.junit.jupiter.api.AfterEach;
3125
import org.junit.jupiter.api.Test;
3226
import org.junit.jupiter.params.ParameterizedTest;
33-
import org.junit.jupiter.params.provider.MethodSource;
27+
import org.junit.jupiter.params.converter.ConvertWith;
28+
import org.tabletest.junit.TableTest;
3429

3530
// This test focuses on things that are different between OpenTracing API 0.32.0 and 0.33.0
3631
class OT33ApiTest extends DDJavaSpecification {
@@ -76,19 +71,20 @@ void testScopeManager() {
7671
span.finish();
7772
}
7873

79-
static Stream<org.junit.jupiter.params.provider.Arguments> testInjectExtractArguments() {
80-
return Stream.of(
81-
arguments("sampler drop", SAMPLER_DROP, DEFAULT, SAMPLER_DROP),
82-
arguments("sampler keep", SAMPLER_KEEP, DEFAULT, SAMPLER_KEEP),
83-
arguments("unset", UNSET, DEFAULT, SAMPLER_KEEP),
84-
arguments("user keep", USER_KEEP, MANUAL, USER_KEEP),
85-
arguments("user drop", USER_DROP, MANUAL, USER_DROP));
86-
}
87-
8874
@ParameterizedTest
89-
@MethodSource("testInjectExtractArguments")
75+
@TableTest({
76+
"scenario | contextPriority | samplingMechanism | propagatedPriority ",
77+
"sampler drop | PrioritySampling.SAMPLER_DROP | SamplingMechanism.DEFAULT | PrioritySampling.SAMPLER_DROP",
78+
"sampler keep | PrioritySampling.SAMPLER_KEEP | SamplingMechanism.DEFAULT | PrioritySampling.SAMPLER_KEEP",
79+
"unset | PrioritySampling.UNSET | SamplingMechanism.DEFAULT | PrioritySampling.SAMPLER_KEEP",
80+
"user keep | PrioritySampling.USER_KEEP | SamplingMechanism.MANUAL | PrioritySampling.USER_KEEP ",
81+
"user drop | PrioritySampling.USER_DROP | SamplingMechanism.MANUAL | PrioritySampling.USER_DROP "
82+
})
9083
void testInjectExtract(
91-
String scenario, int contextPriority, int samplingMechanism, int propagatedPriority)
84+
String scenario,
85+
@ConvertWith(PrioritySamplingConverter.class) int contextPriority,
86+
@ConvertWith(SamplingMechanismConverter.class) int samplingMechanism,
87+
@ConvertWith(PrioritySamplingConverter.class) int propagatedPriority)
9288
throws Exception {
9389
io.opentracing.Span span = tracer.buildSpan("some name").start();
9490
io.opentracing.SpanContext context = span.context();

0 commit comments

Comments
 (0)