Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,15 @@ class MockBackend implements AutoCloseable {

private final Collection<Map<String, Object>> skippableTests = new CopyOnWriteArrayList<>()
private final Collection<Map<String, Object>> flakyTests = new CopyOnWriteArrayList<>()
private final Collection<Map<String, Object>> testManagement = new CopyOnWriteArrayList<>()
private final Collection<String> changedFiles = new CopyOnWriteArrayList<>()

private boolean itrEnabled = true
private boolean codeCoverageEnabled = true

private boolean testsSkippingEnabled = true

private boolean flakyRetriesEnabled = false

private boolean impactedTestsDetectionEnabled = false
private boolean testManagementEnabled = false

void reset() {
receivedTraces.clear()
Expand Down Expand Up @@ -83,6 +82,19 @@ class MockBackend implements AutoCloseable {
changedFiles.add(relativePath)
}

void givenTestManagement(boolean testManagementEnabled) {
this.testManagementEnabled = testManagementEnabled
}

void givenQuarantinedTests(String module, String suite, String name) {
testManagement.add([
"module": module,
"suite": suite,
"name": name,
"properties": ["quarantined": true]
])
}

String getIntakeUrl() {
return intakeServer.address.toString()
}
Expand Down Expand Up @@ -127,7 +139,10 @@ class MockBackend implements AutoCloseable {
"code_coverage": $codeCoverageEnabled,
"tests_skipping": $testsSkippingEnabled,
"flaky_test_retries_enabled": $flakyRetriesEnabled,
"impacted_tests_enabled": $impactedTestsDetectionEnabled
"impacted_tests_enabled": $impactedTestsDetectionEnabled,
"test_management": {
"enabled": $testManagementEnabled
}
}
}
}""").bytes)
Expand Down Expand Up @@ -225,6 +240,20 @@ class MockBackend implements AutoCloseable {
.send(MockBackend.compress((""" { "data": $flakyTestsResponse } """).bytes))
}

prefix("/api/v2/test/libraries/test-management/tests") {
Map<String, Map> modules = [:]
for (Map<String, Object> test : testManagement) {
Map<String, Map> suites = modules.computeIfAbsent("${test.module}", k -> [:]).computeIfAbsent("suites", k -> [:])
Map<String, Map> tests = suites.computeIfAbsent("${test.suite}", k -> [:]).computeIfAbsent("tests", k -> [:])
tests.computeIfAbsent("${test.name}", k -> [:]).put("properties", test.properties)
}

String testManagementResponse = """{ "modules": ${JSON_MAPPER.writeValueAsString(modules)} }"""
response.status(200)
.addHeader("Content-Encoding", "gzip")
.send(MockBackend.compress(("""{ "data": { "attributes": $testManagementResponse } } """).bytes))
}

prefix("/api/v2/apmtelemetry") {
def telemetryRequest = JSON_MAPPER.readerFor(Map.class).readValue(request.body)
def requestType = telemetryRequest["request_type"]
Expand Down
3 changes: 3 additions & 0 deletions dd-smoke-tests/gradle/src/test/resources/logback.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<configuration>
<logger name="org.eclipse.jetty" level="INFO"/>
</configuration>
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package datadog.smoketest

import datadog.trace.api.Config
import datadog.trace.api.civisibility.config.TestFQN
import datadog.trace.api.config.CiVisibilityConfig
import datadog.trace.api.config.GeneralConfig
import datadog.trace.civisibility.CiVisibilitySmokeTest
Expand Down Expand Up @@ -127,6 +128,24 @@ class MavenSmokeTest extends CiVisibilitySmokeTest {
"test_successful_maven_run_impacted_tests" | "3.9.9"
}

def "test quarantine"() {
givenWrapperPropertiesFile(mavenVersion)
givenMavenProjectFiles(projectName)
givenMavenDependenciesAreLoaded(projectName, mavenVersion)

mockBackend.givenTestManagement(true)
mockBackend.givenQuarantinedTests("Maven Smoke Tests Project maven-surefire-plugin default-test", "datadog.smoke.TestFailed", "test_failed")

def exitCode = whenRunningMavenBuild([], [])
assert exitCode == 0

verifyEventsAndCoverages(projectName, "maven", mavenVersion, mockBackend.waitForEvents(8), mockBackend.waitForCoverages(1))

where:
projectName | mavenVersion
"test_successful_maven_run_quarantined_tests" | "3.9.9"
}

private void givenWrapperPropertiesFile(String mavenVersion) {
def distributionUrl = "https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${mavenVersion}/apache-maven-${mavenVersion}-bin.zip"

Expand Down
3 changes: 3 additions & 0 deletions dd-smoke-tests/maven/src/test/resources/logback.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<configuration>
<logger name="org.eclipse.jetty" level="INFO"/>
</configuration>
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[ {
"files" : [ {
"filename" : "src/main/java/datadog/smoke/Calculator.java"
}, {
"filename" : "src/test/java/datadog/smoke/TestFailed.java"
} ],
"span_id" : ${content_span_id_5},
"test_session_id" : ${content_test_session_id},
"test_suite_id" : ${content_test_suite_id}
} ]
Loading
Loading