Skip to content

Commit f5c4b8f

Browse files
Fix TestNG retry listener ordering problem
1 parent 9ec150b commit f5c4b8f

File tree

16 files changed

+45
-22
lines changed

16 files changed

+45
-22
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ public void onTestStart(
5858
@Nullable String testParameters,
5959
@Nullable Collection<String> categories,
6060
@Nonnull TestSourceData testSourceData,
61-
@Nullable Long startTime) {
61+
@Nullable Long startTime,
62+
@Nullable TestExecutionHistory testExecutionHistory) {
6263
// do nothing
6364
}
6465

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

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,8 @@ public void onTestStart(
140140
final @Nullable String testParameters,
141141
final @Nullable Collection<String> categories,
142142
final @Nonnull TestSourceData testSourceData,
143-
final @Nullable Long startTime) {
143+
final @Nullable Long startTime,
144+
final @Nullable TestExecutionHistory testExecutionHistory) {
144145
if (skipTrace(testSourceData.getTestClass())) {
145146
return;
146147
}
@@ -170,6 +171,14 @@ public void onTestStart(
170171
test.setTag(Tags.TEST_MANAGEMENT_IS_QUARANTINED, true);
171172
}
172173

174+
if (testExecutionHistory != null) {
175+
RetryReason retryReason = testExecutionHistory.currentExecutionRetryReason();
176+
if (retryReason != null) {
177+
test.setTag(Tags.TEST_IS_RETRY, true);
178+
test.setTag(Tags.TEST_RETRY_REASON, retryReason);
179+
}
180+
}
181+
173182
if (testFramework != null) {
174183
test.setTag(Tags.TEST_FRAMEWORK, testFramework);
175184
if (testFrameworkVersion != null) {
@@ -237,12 +246,6 @@ public void onTestFinish(
237246
}
238247

239248
if (testExecutionHistory != null) {
240-
RetryReason retryReason = testExecutionHistory.currentExecutionRetryReason();
241-
if (retryReason != null) {
242-
test.setTag(Tags.TEST_IS_RETRY, true);
243-
test.setTag(Tags.TEST_RETRY_REASON, retryReason);
244-
}
245-
246249
if (test.hasFailed() && testExecutionHistory.hasFailedAllRetries()) {
247250
test.setTag(Tags.TEST_HAS_FAILED_ALL_RETRIES, true);
248251
}
@@ -271,6 +274,7 @@ public void onTestIgnore(
271274
testParameters,
272275
categories,
273276
testSourceData,
277+
null,
274278
null);
275279
onTestSkip(testDescriptor, reason);
276280
onTestFinish(testDescriptor, null, null);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ public void testStarted(final Description description) {
8080
null,
8181
categories,
8282
TestSourceData.UNKNOWN,
83-
null);
83+
null,
84+
executionHistories.get(description));
8485

8586
recordFeatureFileCodeCoverage(description);
8687
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ public void testStarted(final Description description) {
8585
null,
8686
categories,
8787
JUnit4Utils.toTestSourceData(description),
88-
null);
88+
null,
89+
executionHistories.get(description));
8990
}
9091

9192
@Override
@@ -160,6 +161,7 @@ public void testIgnored(final Description description) {
160161
null,
161162
categories,
162163
JUnit4Utils.toTestSourceData(description),
164+
null,
163165
null);
164166
}
165167
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSkip(testDescriptor, null);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@ public void testStarted(final Description description) {
8484
testParameters,
8585
categories,
8686
testSourceData,
87-
null);
87+
null,
88+
executionHistories.get(description));
8889
}
8990

9091
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,8 @@ private void testResourceExecutionStarted(
124124
null,
125125
tags,
126126
TestSourceData.UNKNOWN,
127-
null);
127+
null,
128+
TestEventsHandlerHolder.getExecutionHistory(testDescriptor));
128129

129130
CoveragePerTestBridge.recordCoverage(classpathResourceName);
130131
}

dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/SpockTracingListener.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ private void testMethodExecutionStarted(TestDescriptor testDescriptor, MethodSou
125125
testParameters,
126126
tags,
127127
testSourceData,
128-
null);
128+
null,
129+
TestEventsHandlerHolder.getExecutionHistory(testDescriptor));
129130
}
130131

131132
private void testCaseExecutionFinished(

dd-java-agent/instrumentation/junit-5.3/src/main/java/datadog/trace/instrumentation/junit5/TracingListener.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ private void testMethodExecutionStarted(TestDescriptor testDescriptor, MethodSou
125125
testParameters,
126126
tags,
127127
testSourceData,
128-
null);
128+
null,
129+
TestEventsHandlerHolder.getExecutionHistory(testDescriptor));
129130
}
130131

131132
private void testCaseExecutionFinished(

dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateExecutionInstrumentation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public static void afterExecute(@Advice.This ScenarioRuntime scenarioRuntime) {
104104
while (executionPolicy.retry(!context.getAndResetFailed(), duration)) {
105105
ScenarioRuntime retry =
106106
new ScenarioRuntime(scenarioRuntime.featureRuntime, scenarioRuntime.scenario);
107-
retry.magicVariables.put(KarateUtils.EXECUTION_HISTORY_MAGIC_VARIABLE, executionPolicy);
107+
retry.magicVariables.put(KarateUtils.EXECUTION_HISTORY_MAGICVARIABLE, executionPolicy);
108108
retry.run();
109109
retry.featureRuntime.result.addResult(retry.result);
110110
finalResult = retry.result;

dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ public boolean beforeScenario(ScenarioRuntime sr) {
144144
parameters,
145145
categories,
146146
TestSourceData.UNKNOWN,
147-
null);
147+
null,
148+
(TestExecutionHistory) sr.magicVariables.get(KarateUtils.EXECUTION_HISTORY_MAGICVARIABLE));
148149
return true;
149150
}
150151

@@ -163,7 +164,7 @@ public void afterScenario(ScenarioRuntime sr) {
163164
}
164165

165166
TestExecutionHistory executionHistory =
166-
(TestExecutionHistory) sr.magicVariables.get(KarateUtils.EXECUTION_HISTORY_MAGIC_VARIABLE);
167+
(TestExecutionHistory) sr.magicVariables.get(KarateUtils.EXECUTION_HISTORY_MAGICVARIABLE);
167168
TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(
168169
testDescriptor, null, executionHistory);
169170

0 commit comments

Comments
 (0)