Skip to content

Commit 441582a

Browse files
Add basic Scala Weaver sbt support (#8189)
1 parent 053241c commit 441582a

File tree

50 files changed

+2304
-79
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2304
-79
lines changed

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/events/NoOpTestEventsHandler.java

+7-5
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import datadog.trace.civisibility.retry.NeverRetry;
1111
import java.lang.reflect.Method;
1212
import java.util.Collection;
13+
import javax.annotation.Nullable;
1314
import org.jetbrains.annotations.NotNull;
14-
import org.jetbrains.annotations.Nullable;
1515

1616
public class NoOpTestEventsHandler<SuiteKey, TestKey>
1717
implements TestEventsHandler<SuiteKey, TestKey> {
@@ -25,7 +25,8 @@ public void onTestSuiteStart(
2525
@Nullable Class<?> testClass,
2626
@Nullable Collection<String> categories,
2727
boolean parallelized,
28-
TestFrameworkInstrumentation instrumentation) {
28+
TestFrameworkInstrumentation instrumentation,
29+
@Nullable Long startTime) {
2930
// do nothing
3031
}
3132

@@ -40,7 +41,7 @@ public void onTestSuiteFailure(SuiteKey descriptor, @Nullable Throwable throwabl
4041
}
4142

4243
@Override
43-
public void onTestSuiteFinish(SuiteKey descriptor) {
44+
public void onTestSuiteFinish(SuiteKey descriptor, @Nullable Long endTime) {
4445
// do nothing
4546
}
4647

@@ -57,7 +58,8 @@ public void onTestStart(
5758
@Nullable Class<?> testClass,
5859
@Nullable String testMethodName,
5960
@Nullable Method testMethod,
60-
boolean isRetry) {
61+
boolean isRetry,
62+
@Nullable Long startTime) {
6163
// do nothing
6264
}
6365

@@ -72,7 +74,7 @@ public void onTestFailure(TestKey descriptor, @Nullable Throwable throwable) {
7274
}
7375

7476
@Override
75-
public void onTestFinish(TestKey descriptor) {
77+
public void onTestFinish(TestKey descriptor, @Nullable Long endTime) {
7678
// do nothing
7779
}
7880

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/events/TestEventsHandlerImpl.java

+18-14
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ public TestEventsHandlerImpl(
5050
this.inProgressTests = (ContextStore) testStore;
5151
}
5252

53+
private static boolean skipTrace(final Class<?> testClass) {
54+
return testClass != null && testClass.getAnnotation(DisableTestTrace.class) != null;
55+
}
56+
5357
@Override
5458
public void onTestSuiteStart(
5559
final SuiteKey descriptor,
@@ -59,13 +63,15 @@ public void onTestSuiteStart(
5963
final @Nullable Class<?> testClass,
6064
final @Nullable Collection<String> categories,
6165
boolean parallelized,
62-
TestFrameworkInstrumentation instrumentation) {
66+
TestFrameworkInstrumentation instrumentation,
67+
@Nullable Long startTime) {
6368
if (skipTrace(testClass)) {
6469
return;
6570
}
6671

6772
TestSuiteImpl testSuite =
68-
testModule.testSuiteStart(testSuiteName, testClass, null, parallelized, instrumentation);
73+
testModule.testSuiteStart(
74+
testSuiteName, testClass, startTime, parallelized, instrumentation);
6975

7076
if (testFramework != null) {
7177
testSuite.setTag(Tags.TEST_FRAMEWORK, testFramework);
@@ -92,13 +98,13 @@ private String getTestTraits(Collection<String> categories) {
9298
}
9399

94100
@Override
95-
public void onTestSuiteFinish(SuiteKey descriptor) {
101+
public void onTestSuiteFinish(SuiteKey descriptor, @Nullable Long endTime) {
96102
if (skipTrace(descriptor.getClass())) {
97103
return;
98104
}
99105

100106
TestSuiteImpl testSuite = inProgressTestSuites.remove(descriptor);
101-
testSuite.end(null);
107+
testSuite.end(endTime);
102108
}
103109

104110
@Override
@@ -134,7 +140,8 @@ public void onTestStart(
134140
final @Nullable Class<?> testClass,
135141
final @Nullable String testMethodName,
136142
final @Nullable Method testMethod,
137-
final boolean isRetry) {
143+
final boolean isRetry,
144+
@Nullable Long startTime) {
138145
if (skipTrace(testClass)) {
139146
return;
140147
}
@@ -148,7 +155,7 @@ public void onTestStart(
148155
+ descriptor);
149156
}
150157

151-
TestImpl test = testSuite.testStart(testName, testParameters, testMethod, null);
158+
TestImpl test = testSuite.testStart(testName, testParameters, testMethod, startTime);
152159

153160
TestIdentifier thisTest = new TestIdentifier(testSuiteName, testName, testParameters);
154161
if (testModule.isNew(thisTest)) {
@@ -212,13 +219,13 @@ public void onTestFailure(TestKey descriptor, @Nullable Throwable throwable) {
212219
}
213220

214221
@Override
215-
public void onTestFinish(TestKey descriptor) {
222+
public void onTestFinish(TestKey descriptor, @Nullable Long endTime) {
216223
TestImpl test = inProgressTests.remove(descriptor);
217224
if (test == null) {
218225
log.debug("Ignoring finish event, could not find test {}", descriptor);
219226
return;
220227
}
221-
test.end(null);
228+
test.end(endTime);
222229
}
223230

224231
@Override
@@ -247,13 +254,10 @@ public void onTestIgnore(
247254
testClass,
248255
testMethodName,
249256
testMethod,
250-
false);
257+
false,
258+
null);
251259
onTestSkip(testDescriptor, reason);
252-
onTestFinish(testDescriptor);
253-
}
254-
255-
private static boolean skipTrace(final Class<?> testClass) {
256-
return testClass != null && testClass.getAnnotation(DisableTestTrace.class) != null;
260+
onTestFinish(testDescriptor, null);
257261
}
258262

259263
@Override

dd-java-agent/instrumentation/junit-4.10/cucumber-junit-4/src/main/java/datadog/trace/instrumentation/junit4/CucumberTracingListener.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,16 @@ public void testSuiteStarted(final Description description) {
5151
null,
5252
Collections.emptyList(),
5353
false,
54-
TestFrameworkInstrumentation.CUCUMBER);
54+
TestFrameworkInstrumentation.CUCUMBER,
55+
null);
5556
}
5657
}
5758

5859
@Override
5960
public void testSuiteFinished(final Description description) {
6061
if (isFeature(description)) {
6162
TestSuiteDescriptor suiteDescriptor = CucumberUtils.toSuiteDescriptor(description);
62-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor);
63+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor, null);
6364
}
6465
}
6566

@@ -82,7 +83,8 @@ public void testStarted(final Description description) {
8283
null,
8384
null,
8485
null,
85-
retryPolicy != null && retryPolicy.currentExecutionIsRetry());
86+
retryPolicy != null && retryPolicy.currentExecutionIsRetry(),
87+
null);
8688

8789
recordFeatureFileCodeCoverage(description);
8890
}
@@ -100,7 +102,7 @@ private static void recordFeatureFileCodeCoverage(Description scenarioDescriptio
100102
@Override
101103
public void testFinished(final Description description) {
102104
TestDescriptor testDescriptor = CucumberUtils.toTestDescriptor(description);
103-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor);
105+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor, null);
104106
}
105107

106108
// same callback is executed both for test cases and test suites (for setup/teardown errors)
@@ -154,9 +156,10 @@ public void testIgnored(final Description description) {
154156
null,
155157
Collections.emptyList(),
156158
false,
157-
TestFrameworkInstrumentation.CUCUMBER);
159+
TestFrameworkInstrumentation.CUCUMBER,
160+
null);
158161
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteSkip(suiteDescriptor, reason);
159-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor);
162+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor, null);
160163
} else {
161164
String testSuiteName = CucumberUtils.getTestSuiteNameForScenario(description);
162165
String testName = CucumberUtils.getTestNameForScenario(description);

dd-java-agent/instrumentation/junit-4.10/munit-junit-4/src/main/java/datadog/trace/instrumentation/junit4/MUnitTracingListener.java

+12-8
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public void testSuiteStarted(final Description description) {
5454
testClass,
5555
categories,
5656
false,
57-
TestFrameworkInstrumentation.MUNIT);
57+
TestFrameworkInstrumentation.MUNIT,
58+
null);
5859
}
5960

6061
public void testSuiteFinished(final Description description) {
@@ -66,7 +67,7 @@ public void testSuiteFinished(final Description description) {
6667
}
6768

6869
TestSuiteDescriptor suiteDescriptor = MUnitUtils.toSuiteDescriptor(description);
69-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor);
70+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor, null);
7071
}
7172

7273
@Override
@@ -90,13 +91,14 @@ public void testStarted(final Description description) {
9091
testClass,
9192
null,
9293
null,
93-
retryPolicy != null && retryPolicy.currentExecutionIsRetry());
94+
retryPolicy != null && retryPolicy.currentExecutionIsRetry(),
95+
null);
9496
}
9597

9698
@Override
9799
public void testFinished(final Description description) {
98100
TestDescriptor testDescriptor = MUnitUtils.toTestDescriptor(description);
99-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor);
101+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor, null);
100102
}
101103

102104
// same callback is executed both for test cases and test suites (for setup/teardown errors)
@@ -167,10 +169,11 @@ public void testIgnored(final Description description) {
167169
testClass,
168170
null,
169171
null,
170-
false);
172+
false,
173+
null);
171174
}
172175
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSkip(testDescriptor, null);
173-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor);
176+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor, null);
174177

175178
} else if (testClass != null) {
176179
TestSuiteDescriptor suiteDescriptor = MUnitUtils.toSuiteDescriptor(description);
@@ -187,7 +190,8 @@ public void testIgnored(final Description description) {
187190
testClass,
188191
categories,
189192
false,
190-
TestFrameworkInstrumentation.MUNIT);
193+
TestFrameworkInstrumentation.MUNIT,
194+
null);
191195
}
192196

193197
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteSkip(suiteDescriptor, null);
@@ -196,7 +200,7 @@ public void testIgnored(final Description description) {
196200
}
197201

198202
if (!suiteStarted) {
199-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor);
203+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor, null);
200204
}
201205
}
202206
}

dd-java-agent/instrumentation/junit-4.10/src/main/java/datadog/trace/instrumentation/junit4/JUnit4TracingListener.java

+9-6
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ public void testSuiteStarted(final Description description) {
4343
testClass,
4444
categories,
4545
false,
46-
TestFrameworkInstrumentation.JUNIT4);
46+
TestFrameworkInstrumentation.JUNIT4,
47+
null);
4748
}
4849

4950
public void testSuiteFinished(final Description description) {
@@ -55,7 +56,7 @@ public void testSuiteFinished(final Description description) {
5556
}
5657

5758
TestSuiteDescriptor suiteDescriptor = JUnit4Utils.toSuiteDescriptor(description);
58-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor);
59+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor, null);
5960
}
6061

6162
@Override
@@ -86,7 +87,8 @@ public void testStarted(final Description description) {
8687
testClass,
8788
testMethodName,
8889
testMethod,
89-
retryPolicy != null && retryPolicy.currentExecutionIsRetry());
90+
retryPolicy != null && retryPolicy.currentExecutionIsRetry(),
91+
null);
9092
}
9193

9294
@Override
@@ -96,7 +98,7 @@ public void testFinished(final Description description) {
9698
}
9799

98100
TestDescriptor testDescriptor = JUnit4Utils.toTestDescriptor(description);
99-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor);
101+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor, null);
100102
}
101103

102104
// same callback is executed both for test cases and test suites (for setup/teardown errors)
@@ -175,15 +177,16 @@ public void testIgnored(final Description description) {
175177
testClass,
176178
categories,
177179
false,
178-
TestFrameworkInstrumentation.JUNIT4);
180+
TestFrameworkInstrumentation.JUNIT4,
181+
null);
179182
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteSkip(suiteDescriptor, reason);
180183

181184
List<Method> testMethods = JUnit4Utils.getTestMethods(testClass);
182185
for (Method testMethod : testMethods) {
183186
testIgnored(description, testMethod, reason);
184187
}
185188

186-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor);
189+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor, null);
187190
}
188191
}
189192

dd-java-agent/instrumentation/junit-5.3/cucumber-junit-5/src/main/java/datadog/trace/instrumentation/junit5/CucumberTracingListener.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ private void containerExecutionStarted(final TestDescriptor suiteDescriptor) {
7171
null,
7272
tags,
7373
false,
74-
TestFrameworkInstrumentation.CUCUMBER);
74+
TestFrameworkInstrumentation.CUCUMBER,
75+
null);
7576
}
7677

7778
private void containerExecutionFinished(
@@ -93,7 +94,7 @@ private void containerExecutionFinished(
9394
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFailure(suiteDescriptor, throwable);
9495
}
9596
}
96-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor);
97+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor, null);
9798
}
9899

99100
private void testCaseExecutionStarted(final TestDescriptor testDescriptor) {
@@ -125,7 +126,8 @@ private void testResourceExecutionStarted(
125126
null,
126127
null,
127128
null,
128-
JUnitPlatformUtils.isRetry(testDescriptor));
129+
JUnitPlatformUtils.isRetry(testDescriptor),
130+
null);
129131

130132
CoveragePerTestBridge.recordCoverage(classpathResourceName);
131133
}
@@ -149,7 +151,7 @@ private void testResourceExecutionFinished(
149151
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFailure(testDescriptor, throwable);
150152
}
151153
}
152-
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor);
154+
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor, null);
153155
}
154156

155157
@Override

0 commit comments

Comments
 (0)