Skip to content

Commit f1da84c

Browse files
daniel-mohedanomtoffl01
authored andcommitted
Update capabilities tagging to use versioning (#8540)
1 parent fd8a076 commit f1da84c

File tree

45 files changed

+506
-532
lines changed

Some content is hidden

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

45 files changed

+506
-532
lines changed

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

+33-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package datadog.trace.civisibility.config;
22

33
import com.squareup.moshi.FromJson;
4+
import com.squareup.moshi.Json;
45
import com.squareup.moshi.JsonAdapter;
56
import com.squareup.moshi.Moshi;
67
import com.squareup.moshi.ToJson;
@@ -65,6 +66,7 @@ public class ConfigurationApiImpl implements ConfigurationApi {
6566
private final JsonAdapter<EnvelopeDto<CiVisibilitySettings>> settingsResponseAdapter;
6667
private final JsonAdapter<MultiEnvelopeDto<TestIdentifierJson>> testIdentifiersResponseAdapter;
6768
private final JsonAdapter<EnvelopeDto<KnownTestsDto>> testFullNamesResponseAdapter;
69+
private final JsonAdapter<EnvelopeDto<TestManagementDto>> testManagementRequestAdapter;
6870
private final JsonAdapter<EnvelopeDto<TestManagementTestsDto>> testManagementTestsResponseAdapter;
6971
private final JsonAdapter<EnvelopeDto<ChangedFiles>> changedFilesResponseAdapter;
7072

@@ -108,6 +110,11 @@ public ConfigurationApiImpl(BackendApi backendApi, CiVisibilityMetricCollector m
108110
ConfigurationApiImpl.class, EnvelopeDto.class, KnownTestsDto.class);
109111
testFullNamesResponseAdapter = moshi.adapter(testFullNamesResponseType);
110112

113+
ParameterizedType testManagementRequestType =
114+
Types.newParameterizedTypeWithOwner(
115+
ConfigurationApiImpl.class, EnvelopeDto.class, TestManagementDto.class);
116+
testManagementRequestAdapter = moshi.adapter(testManagementRequestType);
117+
111118
ParameterizedType testManagementTestsResponseType =
112119
Types.newParameterizedTypeWithOwner(
113120
ConfigurationApiImpl.class, EnvelopeDto.class, TestManagementTestsDto.class);
@@ -329,9 +336,16 @@ public Map<TestSetting, Map<String, Collection<TestFQN>>> getTestManagementTests
329336
.build();
330337

331338
String uuid = uuidGenerator.get();
332-
EnvelopeDto<TracerEnvironment> request =
333-
new EnvelopeDto<>(new DataDto<>(uuid, "ci_app_libraries_tests_request", tracerEnvironment));
334-
String json = requestAdapter.toJson(request);
339+
EnvelopeDto<TestManagementDto> request =
340+
new EnvelopeDto<>(
341+
new DataDto<>(
342+
uuid,
343+
"ci_app_libraries_tests_request",
344+
new TestManagementDto(
345+
tracerEnvironment.getRepositoryUrl(),
346+
tracerEnvironment.getCommitMessage(),
347+
tracerEnvironment.getConfigurations().getTestBundle())));
348+
String json = testManagementRequestAdapter.toJson(request);
335349
RequestBody requestBody = RequestBody.create(JSON, json);
336350
TestManagementTestsDto testManagementTestsDto =
337351
backendApi.post(
@@ -520,6 +534,22 @@ private KnownTestsDto(Map<String, Map<String, List<String>>> tests) {
520534
}
521535
}
522536

537+
private static final class TestManagementDto {
538+
@Json(name = "repository_url")
539+
private final String repositoryUrl;
540+
541+
@Json(name = "commit_message")
542+
private final String commitMessage;
543+
544+
private final String module;
545+
546+
private TestManagementDto(String repositoryUrl, String commitMessage, String module) {
547+
this.repositoryUrl = repositoryUrl;
548+
this.commitMessage = commitMessage;
549+
this.module = module;
550+
}
551+
}
552+
523553
private static final class TestManagementTestsDto {
524554
private static final class Properties {
525555
private final Map<String, Boolean> properties;

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

-41
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package datadog.trace.civisibility.config;
22

3-
import datadog.trace.api.Config;
4-
import datadog.trace.api.civisibility.CIConstants;
5-
import datadog.trace.api.civisibility.config.LibraryCapability;
63
import datadog.trace.api.civisibility.config.TestFQN;
74
import datadog.trace.api.civisibility.config.TestIdentifier;
85
import datadog.trace.api.civisibility.config.TestMetadata;
@@ -232,44 +229,6 @@ public Diff getPullRequestDiff() {
232229
return pullRequestDiff;
233230
}
234231

235-
@Nonnull
236-
public Map<LibraryCapability, Boolean> getCapabilitiesStatus(
237-
Collection<LibraryCapability> capabilities) {
238-
Map<LibraryCapability, Boolean> status = new EnumMap<>(LibraryCapability.class);
239-
240-
for (LibraryCapability c : capabilities) {
241-
switch (c) {
242-
case TIA:
243-
status.put(c, isTestSkippingEnabled());
244-
break;
245-
case EFD:
246-
EarlyFlakeDetectionSettings efdSettings = getEarlyFlakeDetectionSettings();
247-
status.put(c, efdSettings.isEnabled());
248-
break;
249-
case ATR:
250-
status.put(c, isFlakyTestRetriesEnabled());
251-
break;
252-
case IMPACTED:
253-
status.put(c, isImpactedTestsDetectionEnabled());
254-
break;
255-
case FAIL_FAST:
256-
String testOrder = Config.get().getCiVisibilityTestOrder();
257-
status.put(c, CIConstants.FAIL_FAST_TEST_ORDER.equalsIgnoreCase(testOrder));
258-
break;
259-
case QUARANTINE:
260-
case DISABLED:
261-
case ATTEMPT_TO_FIX:
262-
TestManagementSettings testManagementSettings = getTestManagementSettings();
263-
status.put(c, testManagementSettings.isEnabled());
264-
break;
265-
default:
266-
break;
267-
}
268-
}
269-
270-
return status;
271-
}
272-
273232
@Override
274233
public boolean equals(Object o) {
275234
if (this == o) {

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

+1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ private TracerEnvironment buildTracerEnvironment(JvmInfo jvmInfo, @Nullable Stri
107107
.repositoryUrl(gitInfo.getRepositoryURL())
108108
.branch(gitInfo.getBranch())
109109
.sha(gitInfo.getCommit().getSha())
110+
.commitMessage(gitInfo.getCommit().getFullMessage())
110111
.osPlatform(wellKnownTags.getOsPlatform().toString())
111112
.osArchitecture(wellKnownTags.getOsArch().toString())
112113
.osVersion(wellKnownTags.getOsVersion().toString())

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

+19
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ public class TracerEnvironment {
1616
private final String branch;
1717
private final String sha;
1818

19+
@Json(name = "commit_message")
20+
private final String commitMessage;
21+
1922
@Json(name = "test_level")
2023
private final String testLevel = "test";
2124

@@ -27,19 +30,25 @@ private TracerEnvironment(
2730
String repositoryUrl,
2831
String branch,
2932
String sha,
33+
String commitMessage,
3034
Configurations configurations) {
3135
this.service = service;
3236
this.env = env;
3337
this.repositoryUrl = repositoryUrl;
3438
this.branch = branch;
3539
this.sha = sha;
40+
this.commitMessage = commitMessage;
3641
this.configurations = configurations;
3742
}
3843

3944
public String getSha() {
4045
return sha;
4146
}
4247

48+
public String getCommitMessage() {
49+
return commitMessage;
50+
}
51+
4352
public String getService() {
4453
return service;
4554
}
@@ -82,6 +91,9 @@ public String toString() {
8291
+ ", sha='"
8392
+ sha
8493
+ '\''
94+
+ ", commitMessage='"
95+
+ commitMessage
96+
+ '\''
8597
+ ", testLevel='"
8698
+ testLevel
8799
+ '\''
@@ -100,6 +112,7 @@ public static final class Builder {
100112
private String repositoryUrl;
101113
private String branch;
102114
private String sha;
115+
private String commitMessage;
103116
private String osPlatform;
104117
private String osArchitecture;
105118
private String osVersion;
@@ -135,6 +148,11 @@ public Builder sha(String sha) {
135148
return this;
136149
}
137150

151+
public Builder commitMessage(String commitMessage) {
152+
this.commitMessage = commitMessage;
153+
return this;
154+
}
155+
138156
public Builder osPlatform(String osPlatform) {
139157
this.osPlatform = osPlatform;
140158
return this;
@@ -187,6 +205,7 @@ public TracerEnvironment build() {
187205
repositoryUrl,
188206
branch,
189207
sha,
208+
commitMessage,
190209
new Configurations(
191210
osPlatform,
192211
osArchitecture,

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestImpl.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import java.lang.reflect.Method;
4646
import java.util.Collection;
4747
import java.util.Collections;
48-
import java.util.Map;
4948
import java.util.function.Consumer;
5049
import javax.annotation.Nonnull;
5150
import javax.annotation.Nullable;
@@ -87,7 +86,7 @@ public TestImpl(
8786
Codeowners codeowners,
8887
CoverageStore.Factory coverageStoreFactory,
8988
ExecutionResults executionResults,
90-
@Nonnull Map<LibraryCapability, Boolean> libraryCapabilities,
89+
@Nonnull Collection<LibraryCapability> capabilities,
9190
Consumer<AgentSpan> onSpanFinish) {
9291
this.instrumentation = instrumentation;
9392
this.metricCollector = metricCollector;
@@ -146,8 +145,8 @@ public TestImpl(
146145
span.setTag(Tags.ITR_CORRELATION_ID, itrCorrelationId);
147146
}
148147

149-
for (Map.Entry<LibraryCapability, Boolean> entry : libraryCapabilities.entrySet()) {
150-
span.setTag(entry.getKey().asTag(), entry.getValue());
148+
for (LibraryCapability capability : capabilities) {
149+
span.setTag(capability.asTag(), capability.getVersion());
151150
}
152151

153152
testDecorator.afterStart(span);

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/TestSuiteImpl.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import datadog.trace.civisibility.utils.SpanUtils;
2727
import java.lang.reflect.Method;
2828
import java.util.Collection;
29-
import java.util.Map;
3029
import java.util.function.Consumer;
3130
import javax.annotation.Nonnull;
3231
import javax.annotation.Nullable;
@@ -54,7 +53,7 @@ public class TestSuiteImpl implements DDTestSuite {
5453
private final CoverageStore.Factory coverageStoreFactory;
5554
private final ExecutionResults executionResults;
5655
private final boolean parallelized;
57-
private final Map<LibraryCapability, Boolean> libraryCapabilities;
56+
private final Collection<LibraryCapability> capabilities;
5857
private final Consumer<AgentSpan> onSpanFinish;
5958

6059
public TestSuiteImpl(
@@ -75,7 +74,7 @@ public TestSuiteImpl(
7574
LinesResolver linesResolver,
7675
CoverageStore.Factory coverageStoreFactory,
7776
ExecutionResults executionResults,
78-
@Nonnull Map<LibraryCapability, Boolean> libraryCapabilities,
77+
@Nonnull Collection<LibraryCapability> capabilities,
7978
Consumer<AgentSpan> onSpanFinish) {
8079
this.moduleSpanContext = moduleSpanContext;
8180
this.moduleName = moduleName;
@@ -92,7 +91,7 @@ public TestSuiteImpl(
9291
this.linesResolver = linesResolver;
9392
this.coverageStoreFactory = coverageStoreFactory;
9493
this.executionResults = executionResults;
95-
this.libraryCapabilities = libraryCapabilities;
94+
this.capabilities = capabilities;
9695
this.onSpanFinish = onSpanFinish;
9796

9897
AgentTracer.SpanBuilder spanBuilder =
@@ -263,7 +262,7 @@ public TestImpl testStart(
263262
codeowners,
264263
coverageStoreFactory,
265264
executionResults,
266-
libraryCapabilities,
265+
capabilities,
267266
SpanUtils.propagateCiVisibilityTagsTo(span));
268267
}
269268
}

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/ProxyTestModule.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import datadog.trace.civisibility.test.ExecutionResults;
3232
import datadog.trace.civisibility.test.ExecutionStrategy;
3333
import java.util.Collection;
34-
import java.util.Map;
3534
import java.util.TreeSet;
3635
import java.util.concurrent.ConcurrentHashMap;
3736
import javax.annotation.Nonnull;
@@ -62,7 +61,7 @@ public class ProxyTestModule implements TestFrameworkModule {
6261
private final LinesResolver linesResolver;
6362
private final CoverageStore.Factory coverageStoreFactory;
6463
private final Collection<TestFramework> testFrameworks = ConcurrentHashMap.newKeySet();
65-
private final Map<LibraryCapability, Boolean> libraryCapabilities;
64+
private final Collection<LibraryCapability> capabilities;
6665

6766
public ProxyTestModule(
6867
AgentSpanContext parentProcessModuleContext,
@@ -77,7 +76,7 @@ public ProxyTestModule(
7776
CoverageStore.Factory coverageStoreFactory,
7877
ChildProcessCoverageReporter childProcessCoverageReporter,
7978
SignalClient.Factory signalClientFactory,
80-
Map<LibraryCapability, Boolean> libraryCapabilities) {
79+
Collection<LibraryCapability> capabilities) {
8180
this.parentProcessModuleContext = parentProcessModuleContext;
8281
this.moduleName = moduleName;
8382
this.executionStrategy = executionStrategy;
@@ -91,7 +90,7 @@ public ProxyTestModule(
9190
this.codeowners = codeowners;
9291
this.linesResolver = linesResolver;
9392
this.coverageStoreFactory = coverageStoreFactory;
94-
this.libraryCapabilities = libraryCapabilities;
93+
this.capabilities = capabilities;
9594
}
9695

9796
@Override
@@ -216,7 +215,7 @@ public TestSuiteImpl testSuiteStart(
216215
linesResolver,
217216
coverageStoreFactory,
218217
executionResults,
219-
libraryCapabilities,
218+
capabilities,
220219
this::propagateTestFrameworkData);
221220
}
222221

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/ProxyTestSession.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import datadog.trace.civisibility.source.SourcePathResolver;
1717
import datadog.trace.civisibility.test.ExecutionStrategy;
1818
import java.util.Collection;
19-
import java.util.Map;
2019
import javax.annotation.Nonnull;
2120
import javax.annotation.Nullable;
2221

@@ -38,7 +37,7 @@ public class ProxyTestSession implements TestFrameworkSession {
3837
private final ChildProcessCoverageReporter childProcessCoverageReporter;
3938
private final SignalClient.Factory signalClientFactory;
4039
private final ExecutionStrategy executionStrategy;
41-
private final Map<LibraryCapability, Boolean> libraryCapabilities;
40+
private final Collection<LibraryCapability> capabilities;
4241

4342
public ProxyTestSession(
4443
AgentSpanContext parentProcessModuleContext,
@@ -64,8 +63,7 @@ public ProxyTestSession(
6463
this.childProcessCoverageReporter = childProcessCoverageReporter;
6564
this.signalClientFactory = signalClientFactory;
6665
this.executionStrategy = executionStrategy;
67-
this.libraryCapabilities =
68-
executionStrategy.getExecutionSettings().getCapabilitiesStatus(capabilities);
66+
this.capabilities = capabilities;
6967
}
7068

7169
@Override
@@ -91,6 +89,6 @@ public TestFrameworkModule testModuleStart(String moduleName, @Nullable Long sta
9189
coverageStoreFactory,
9290
childProcessCoverageReporter,
9391
signalClientFactory,
94-
libraryCapabilities);
92+
capabilities);
9593
}
9694
}

0 commit comments

Comments
 (0)