Skip to content

Commit d20159e

Browse files
add FTR to execution settings
1 parent a911ae0 commit d20159e

File tree

5 files changed

+41
-5
lines changed

5 files changed

+41
-5
lines changed

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ExecutionSettings.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class ExecutionSettings {
2626
false,
2727
false,
2828
false,
29+
false,
2930
EarlyFlakeDetectionSettings.DEFAULT,
3031
TestManagementSettings.DEFAULT,
3132
null,
@@ -43,6 +44,7 @@ public class ExecutionSettings {
4344
private final boolean testSkippingEnabled;
4445
private final boolean flakyTestRetriesEnabled;
4546
private final boolean impactedTestsDetectionEnabled;
47+
private final boolean failedTestReplayEnabled;
4648
@Nonnull private final EarlyFlakeDetectionSettings earlyFlakeDetectionSettings;
4749
@Nonnull private final TestManagementSettings testManagementSettings;
4850
@Nullable private final String itrCorrelationId;
@@ -58,6 +60,7 @@ public ExecutionSettings(
5860
boolean testSkippingEnabled,
5961
boolean flakyTestRetriesEnabled,
6062
boolean impactedTestsDetectionEnabled,
63+
boolean failedTestReplayEnabled,
6164
@Nonnull EarlyFlakeDetectionSettings earlyFlakeDetectionSettings,
6265
@Nonnull TestManagementSettings testManagementSettings,
6366
@Nullable String itrCorrelationId,
@@ -74,6 +77,7 @@ public ExecutionSettings(
7477
this.testSkippingEnabled = testSkippingEnabled;
7578
this.flakyTestRetriesEnabled = flakyTestRetriesEnabled;
7679
this.impactedTestsDetectionEnabled = impactedTestsDetectionEnabled;
80+
this.failedTestReplayEnabled = failedTestReplayEnabled;
7781
this.earlyFlakeDetectionSettings = earlyFlakeDetectionSettings;
7882
this.testManagementSettings = testManagementSettings;
7983
this.itrCorrelationId = itrCorrelationId;
@@ -110,6 +114,7 @@ private ExecutionSettings(
110114
boolean testSkippingEnabled,
111115
boolean flakyTestRetriesEnabled,
112116
boolean impactedTestsDetectionEnabled,
117+
boolean failedTestReplayEnabled,
113118
@Nonnull EarlyFlakeDetectionSettings earlyFlakeDetectionSettings,
114119
@Nonnull TestManagementSettings testManagementSettings,
115120
@Nullable String itrCorrelationId,
@@ -123,6 +128,7 @@ private ExecutionSettings(
123128
this.testSkippingEnabled = testSkippingEnabled;
124129
this.flakyTestRetriesEnabled = flakyTestRetriesEnabled;
125130
this.impactedTestsDetectionEnabled = impactedTestsDetectionEnabled;
131+
this.failedTestReplayEnabled = failedTestReplayEnabled;
126132
this.earlyFlakeDetectionSettings = earlyFlakeDetectionSettings;
127133
this.testManagementSettings = testManagementSettings;
128134
this.itrCorrelationId = itrCorrelationId;
@@ -157,6 +163,10 @@ public boolean isImpactedTestsDetectionEnabled() {
157163
return impactedTestsDetectionEnabled;
158164
}
159165

166+
public boolean isFailedTestReplayEnabled() {
167+
return failedTestReplayEnabled;
168+
}
169+
160170
@Nonnull
161171
public EarlyFlakeDetectionSettings getEarlyFlakeDetectionSettings() {
162172
return earlyFlakeDetectionSettings;
@@ -243,6 +253,7 @@ public boolean equals(Object o) {
243253
&& testSkippingEnabled == that.testSkippingEnabled
244254
&& flakyTestRetriesEnabled == that.flakyTestRetriesEnabled
245255
&& impactedTestsDetectionEnabled == that.impactedTestsDetectionEnabled
256+
&& failedTestReplayEnabled == that.failedTestReplayEnabled
246257
&& Objects.equals(earlyFlakeDetectionSettings, that.earlyFlakeDetectionSettings)
247258
&& Objects.equals(testManagementSettings, that.testManagementSettings)
248259
&& Objects.equals(itrCorrelationId, that.itrCorrelationId)
@@ -261,6 +272,7 @@ public int hashCode() {
261272
testSkippingEnabled,
262273
flakyTestRetriesEnabled,
263274
impactedTestsDetectionEnabled,
275+
failedTestReplayEnabled,
264276
earlyFlakeDetectionSettings,
265277
testManagementSettings,
266278
itrCorrelationId,
@@ -278,6 +290,7 @@ public static class Serializer {
278290
private static final int TEST_SKIPPING_ENABLED_FLAG = 4;
279291
private static final int FLAKY_TEST_RETRIES_ENABLED_FLAG = 8;
280292
private static final int IMPACTED_TESTS_DETECTION_ENABLED_FLAG = 16;
293+
private static final int FAILED_TEST_REPLAY_ENABLED_FLAG = 32;
281294

282295
public static ByteBuffer serialize(ExecutionSettings settings) {
283296
datadog.trace.civisibility.ipc.serialization.Serializer s =
@@ -291,7 +304,8 @@ public static ByteBuffer serialize(ExecutionSettings settings) {
291304
| (settings.flakyTestRetriesEnabled ? FLAKY_TEST_RETRIES_ENABLED_FLAG : 0)
292305
| (settings.impactedTestsDetectionEnabled
293306
? IMPACTED_TESTS_DETECTION_ENABLED_FLAG
294-
: 0));
307+
: 0)
308+
| (settings.failedTestReplayEnabled ? FAILED_TEST_REPLAY_ENABLED_FLAG : 0));
295309
s.write(flags);
296310

297311
EarlyFlakeDetectionSettings.Serializer.serialize(s, settings.earlyFlakeDetectionSettings);
@@ -330,6 +344,7 @@ public static ExecutionSettings deserialize(ByteBuffer buffer) {
330344
boolean testSkippingEnabled = (flags & TEST_SKIPPING_ENABLED_FLAG) != 0;
331345
boolean flakyTestRetriesEnabled = (flags & FLAKY_TEST_RETRIES_ENABLED_FLAG) != 0;
332346
boolean impactedTestsDetectionEnabled = (flags & IMPACTED_TESTS_DETECTION_ENABLED_FLAG) != 0;
347+
boolean failedTestReplayEnabled = (flags & FAILED_TEST_REPLAY_ENABLED_FLAG) != 0;
333348

334349
EarlyFlakeDetectionSettings earlyFlakeDetectionSettings =
335350
EarlyFlakeDetectionSettings.Serializer.deserialize(buffer);
@@ -372,6 +387,7 @@ public static ExecutionSettings deserialize(ByteBuffer buffer) {
372387
testSkippingEnabled,
373388
flakyTestRetriesEnabled,
374389
impactedTestsDetectionEnabled,
390+
failedTestReplayEnabled,
375391
earlyFlakeDetectionSettings,
376392
testManagementSettings,
377393
itrCorrelationId,

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ExecutionSettingsFactoryImpl.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,11 @@ private Map<String, ExecutionSettings> doCreate(
176176
settings,
177177
CiVisibilitySettings::isKnownTestsEnabled,
178178
Config::isCiVisibilityKnownTestsRequestEnabled);
179+
boolean failedTestReplayEnabled =
180+
isFeatureEnabled(
181+
settings,
182+
CiVisibilitySettings::isFailedTestReplayEnabled,
183+
Config::isCiVisibilityFailedTestReplayEnabled);
179184

180185
TestManagementSettings testManagementSettings = getTestManagementSettings(settings);
181186

@@ -188,7 +193,8 @@ private Map<String, ExecutionSettings> doCreate(
188193
+ "Impacted tests detection - {},\n"
189194
+ "Known tests marking - {},\n"
190195
+ "Auto test retries - {},\n"
191-
+ "Test Management - {}",
196+
+ "Test Management - {},\n"
197+
+ "Failed Test Replay - {}",
192198
repositoryRoot,
193199
tracerEnvironment.getConfigurations().getRuntimeName(),
194200
tracerEnvironment.getConfigurations().getRuntimeVersion(),
@@ -200,7 +206,8 @@ private Map<String, ExecutionSettings> doCreate(
200206
impactedTestsEnabled,
201207
knownTestsRequest,
202208
flakyTestRetriesEnabled,
203-
testManagementSettings.isEnabled());
209+
testManagementSettings.isEnabled(),
210+
failedTestReplayEnabled);
204211

205212
Future<SkippableTests> skippableTestsFuture =
206213
executor.submit(() -> getSkippableTests(tracerEnvironment, itrEnabled));
@@ -252,6 +259,7 @@ private Map<String, ExecutionSettings> doCreate(
252259
testSkippingEnabled,
253260
flakyTestRetriesEnabled,
254261
impactedTestsEnabled,
262+
failedTestReplayEnabled,
255263
earlyFlakeDetectionEnabled
256264
? settings.getEarlyFlakeDetectionSettings()
257265
: EarlyFlakeDetectionSettings.DEFAULT,

dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/config/ExecutionSettingsTest.groovy

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package datadog.trace.civisibility.config
22

33
import datadog.trace.api.civisibility.CIConstants
4-
import datadog.trace.api.civisibility.config.LibraryCapability
54
import datadog.trace.api.civisibility.config.TestFQN
65
import datadog.trace.api.civisibility.config.TestIdentifier
76
import datadog.trace.api.civisibility.config.TestMetadata
87
import datadog.trace.api.config.CiVisibilityConfig
98
import datadog.trace.civisibility.diff.LineDiff
109
import datadog.trace.test.util.DDSpecification
1110

12-
import java.util.stream.Collectors
1311

1412
import static datadog.trace.civisibility.TestUtils.lines
1513

@@ -31,6 +29,7 @@ class ExecutionSettingsTest extends DDSpecification {
3129
false,
3230
false,
3331
false,
32+
false,
3433
EarlyFlakeDetectionSettings.DEFAULT,
3534
TestManagementSettings.DEFAULT,
3635
null,
@@ -49,6 +48,7 @@ class ExecutionSettingsTest extends DDSpecification {
4948
false,
5049
true,
5150
true,
51+
true,
5252
new EarlyFlakeDetectionSettings(true, [], 10),
5353
new TestManagementSettings(true, 20),
5454
"",
@@ -68,6 +68,7 @@ class ExecutionSettingsTest extends DDSpecification {
6868
true,
6969
false,
7070
true,
71+
false,
7172
new EarlyFlakeDetectionSettings(true, [new ExecutionsByDuration(10, 20)], 10),
7273
new TestManagementSettings(true, 20),
7374
"itrCorrelationId",
@@ -91,6 +92,7 @@ class ExecutionSettingsTest extends DDSpecification {
9192
true,
9293
true,
9394
true,
95+
true,
9496
new EarlyFlakeDetectionSettings(true, [new ExecutionsByDuration(10, 20), new ExecutionsByDuration(30, 40)], 10),
9597
new TestManagementSettings(true, 20),
9698
"itrCorrelationId",
@@ -127,6 +129,7 @@ class ExecutionSettingsTest extends DDSpecification {
127129
settingsEnabled,
128130
settingsEnabled,
129131
settingsEnabled,
132+
settingsEnabled,
130133
earlyFlakeDetectionSettings,
131134
testManagementSettings,
132135
null,

dd-trace-api/src/main/java/datadog/trace/api/config/CiVisibilityConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ public final class CiVisibilityConfig {
8282
public static final String TEST_MANAGEMENT_ENABLED = "test.management.enabled";
8383
public static final String TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES =
8484
"test.management.attempt.to.fix.retries";
85+
public static final String TEST_FAILED_TEST_REPLAY_ENABLED = "test.failed.test.replay.enabled";
8586

8687
/* Git PR info */
8788
public static final String GIT_PULL_REQUEST_BASE_BRANCH = "git.pull.request.base.branch";

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@
266266
import static datadog.trace.api.config.CiVisibilityConfig.GIT_COMMIT_HEAD_SHA;
267267
import static datadog.trace.api.config.CiVisibilityConfig.GIT_PULL_REQUEST_BASE_BRANCH;
268268
import static datadog.trace.api.config.CiVisibilityConfig.GIT_PULL_REQUEST_BASE_BRANCH_SHA;
269+
import static datadog.trace.api.config.CiVisibilityConfig.TEST_FAILED_TEST_REPLAY_ENABLED;
269270
import static datadog.trace.api.config.CiVisibilityConfig.TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES;
270271
import static datadog.trace.api.config.CiVisibilityConfig.TEST_MANAGEMENT_ENABLED;
271272
import static datadog.trace.api.config.CiVisibilityConfig.TEST_SESSION_NAME;
@@ -1002,6 +1003,7 @@ public static String getHostName() {
10021003
private final String gitPullRequestBaseBranch;
10031004
private final String gitPullRequestBaseBranchSha;
10041005
private final String gitCommitHeadSha;
1006+
private final boolean ciVisibilityFailedTestReplayEnabled;
10051007

10061008
private final boolean remoteConfigEnabled;
10071009
private final boolean remoteConfigIntegrityCheckEnabled;
@@ -2248,6 +2250,8 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment())
22482250
gitPullRequestBaseBranch = configProvider.getString(GIT_PULL_REQUEST_BASE_BRANCH);
22492251
gitPullRequestBaseBranchSha = configProvider.getString(GIT_PULL_REQUEST_BASE_BRANCH_SHA);
22502252
gitCommitHeadSha = configProvider.getString(GIT_COMMIT_HEAD_SHA);
2253+
ciVisibilityFailedTestReplayEnabled =
2254+
configProvider.getBoolean(TEST_FAILED_TEST_REPLAY_ENABLED, true);
22512255

22522256
remoteConfigEnabled =
22532257
configProvider.getBoolean(
@@ -3832,6 +3836,10 @@ public Integer getCiVisibilityTestManagementAttemptToFixRetries() {
38323836
return ciVisibilityTestManagementAttemptToFixRetries;
38333837
}
38343838

3839+
public boolean isCiVisibilityFailedTestReplayEnabled() {
3840+
return ciVisibilityFailedTestReplayEnabled;
3841+
}
3842+
38353843
public String getGitPullRequestBaseBranch() {
38363844
return gitPullRequestBaseBranch;
38373845
}

0 commit comments

Comments
 (0)