Skip to content

Commit f34e5f4

Browse files
Add a smoke test for quarantine feature (#8367)
1 parent cb0dcc4 commit f34e5f4

File tree

10 files changed

+490
-5
lines changed

10 files changed

+490
-5
lines changed

dd-smoke-tests/backend-mock/src/main/groovy/datadog/smoketest/MockBackend.groovy

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,15 @@ class MockBackend implements AutoCloseable {
3131

3232
private final Collection<Map<String, Object>> skippableTests = new CopyOnWriteArrayList<>()
3333
private final Collection<Map<String, Object>> flakyTests = new CopyOnWriteArrayList<>()
34+
private final Collection<Map<String, Object>> testManagement = new CopyOnWriteArrayList<>()
3435
private final Collection<String> changedFiles = new CopyOnWriteArrayList<>()
3536

3637
private boolean itrEnabled = true
3738
private boolean codeCoverageEnabled = true
38-
3939
private boolean testsSkippingEnabled = true
40-
4140
private boolean flakyRetriesEnabled = false
42-
4341
private boolean impactedTestsDetectionEnabled = false
42+
private boolean testManagementEnabled = false
4443

4544
void reset() {
4645
receivedTraces.clear()
@@ -83,6 +82,19 @@ class MockBackend implements AutoCloseable {
8382
changedFiles.add(relativePath)
8483
}
8584

85+
void givenTestManagement(boolean testManagementEnabled) {
86+
this.testManagementEnabled = testManagementEnabled
87+
}
88+
89+
void givenQuarantinedTests(String module, String suite, String name) {
90+
testManagement.add([
91+
"module": module,
92+
"suite": suite,
93+
"name": name,
94+
"properties": ["quarantined": true]
95+
])
96+
}
97+
8698
String getIntakeUrl() {
8799
return intakeServer.address.toString()
88100
}
@@ -127,7 +139,10 @@ class MockBackend implements AutoCloseable {
127139
"code_coverage": $codeCoverageEnabled,
128140
"tests_skipping": $testsSkippingEnabled,
129141
"flaky_test_retries_enabled": $flakyRetriesEnabled,
130-
"impacted_tests_enabled": $impactedTestsDetectionEnabled
142+
"impacted_tests_enabled": $impactedTestsDetectionEnabled,
143+
"test_management": {
144+
"enabled": $testManagementEnabled
145+
}
131146
}
132147
}
133148
}""").bytes)
@@ -225,6 +240,20 @@ class MockBackend implements AutoCloseable {
225240
.send(MockBackend.compress((""" { "data": $flakyTestsResponse } """).bytes))
226241
}
227242

243+
prefix("/api/v2/test/libraries/test-management/tests") {
244+
Map<String, Map> modules = [:]
245+
for (Map<String, Object> test : testManagement) {
246+
Map<String, Map> suites = modules.computeIfAbsent("${test.module}", k -> [:]).computeIfAbsent("suites", k -> [:])
247+
Map<String, Map> tests = suites.computeIfAbsent("${test.suite}", k -> [:]).computeIfAbsent("tests", k -> [:])
248+
tests.computeIfAbsent("${test.name}", k -> [:]).put("properties", test.properties)
249+
}
250+
251+
String testManagementResponse = """{ "modules": ${JSON_MAPPER.writeValueAsString(modules)} }"""
252+
response.status(200)
253+
.addHeader("Content-Encoding", "gzip")
254+
.send(MockBackend.compress(("""{ "data": { "attributes": $testManagementResponse } } """).bytes))
255+
}
256+
228257
prefix("/api/v2/apmtelemetry") {
229258
def telemetryRequest = JSON_MAPPER.readerFor(Map.class).readValue(request.body)
230259
def requestType = telemetryRequest["request_type"]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<configuration>
2+
<logger name="org.eclipse.jetty" level="INFO"/>
3+
</configuration>

dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package datadog.smoketest
22

33
import datadog.trace.api.Config
4+
import datadog.trace.api.civisibility.config.TestFQN
45
import datadog.trace.api.config.CiVisibilityConfig
56
import datadog.trace.api.config.GeneralConfig
67
import datadog.trace.civisibility.CiVisibilitySmokeTest
@@ -127,6 +128,24 @@ class MavenSmokeTest extends CiVisibilitySmokeTest {
127128
"test_successful_maven_run_impacted_tests" | "3.9.9"
128129
}
129130

131+
def "test quarantine"() {
132+
givenWrapperPropertiesFile(mavenVersion)
133+
givenMavenProjectFiles(projectName)
134+
givenMavenDependenciesAreLoaded(projectName, mavenVersion)
135+
136+
mockBackend.givenTestManagement(true)
137+
mockBackend.givenQuarantinedTests("Maven Smoke Tests Project maven-surefire-plugin default-test", "datadog.smoke.TestFailed", "test_failed")
138+
139+
def exitCode = whenRunningMavenBuild([], [])
140+
assert exitCode == 0
141+
142+
verifyEventsAndCoverages(projectName, "maven", mavenVersion, mockBackend.waitForEvents(8), mockBackend.waitForCoverages(1))
143+
144+
where:
145+
projectName | mavenVersion
146+
"test_successful_maven_run_quarantined_tests" | "3.9.9"
147+
}
148+
130149
private void givenWrapperPropertiesFile(String mavenVersion) {
131150
def distributionUrl = "https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${mavenVersion}/apache-maven-${mavenVersion}-bin.zip"
132151

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<configuration>
2+
<logger name="org.eclipse.jetty" level="INFO"/>
3+
</configuration>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[ {
2+
"files" : [ {
3+
"filename" : "src/main/java/datadog/smoke/Calculator.java"
4+
}, {
5+
"filename" : "src/test/java/datadog/smoke/TestFailed.java"
6+
} ],
7+
"span_id" : ${content_span_id_5},
8+
"test_session_id" : ${content_test_session_id},
9+
"test_suite_id" : ${content_test_suite_id}
10+
} ]

0 commit comments

Comments
 (0)