From 1277a43f8a8c15b47b9e4d5c53bb4e7992507567 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Mon, 30 Jun 2025 10:50:41 +0200 Subject: [PATCH 1/8] increase maven smoke tests' timeout to 180 --- .../src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy index 79a3ad7f715..cd9daa5c6c2 100644 --- a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy +++ b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy @@ -46,7 +46,7 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { private static final String JAVAC_PLUGIN_VERSION = Config.get().ciVisibilityCompilerPluginVersion private static final String JACOCO_PLUGIN_VERSION = Config.get().ciVisibilityJacocoPluginVersion - private static final int PROCESS_TIMEOUT_SECS = 120 + private static final int PROCESS_TIMEOUT_SECS = 180 private static final int DEPENDENCIES_DOWNLOAD_RETRIES = 5 From 200ccc12c1fd072bf966b4cbf3d1aefd300c0427 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Mon, 30 Jun 2025 13:58:29 +0200 Subject: [PATCH 2/8] noop change to trigger ci --- .../src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy index cd9daa5c6c2..b4c4519f503 100644 --- a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy +++ b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy @@ -90,6 +90,7 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { verifyEventsAndCoverages(projectName, "maven", mavenVersion, mockBackend.waitForEvents(expectedEvents), mockBackend.waitForCoverages(expectedCoverages)) verifyTelemetryMetrics(mockBackend.getAllReceivedTelemetryMetrics(), mockBackend.getAllReceivedTelemetryDistributions(), expectedEvents) + // change where: projectName | mavenVersion | expectedEvents | expectedCoverages | expectSuccess | testsSkipping | flakyRetries | jacocoCoverage | commandLineParams | minSupportedJavaVersion From e101270a8751f8db56d5805716deca1984fb7bb3 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Mon, 30 Jun 2025 15:07:30 +0200 Subject: [PATCH 3/8] increase maven timeout to 240s and gradlesmoke suite timeout to 20m --- dd-smoke-tests/gradle/build.gradle | 2 +- .../src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dd-smoke-tests/gradle/build.gradle b/dd-smoke-tests/gradle/build.gradle index 2b1cf1f8527..29bd5c8b847 100644 --- a/dd-smoke-tests/gradle/build.gradle +++ b/dd-smoke-tests/gradle/build.gradle @@ -25,6 +25,6 @@ test { // overriding the default timeout of 9 minutes set in configure_tests.gradle, // as Gradle smoke tests might run for a longer duration - timeout = Duration.of(15, ChronoUnit.MINUTES) + timeout = Duration.of(20, ChronoUnit.MINUTES) } diff --git a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy index b4c4519f503..a5557c7bdc2 100644 --- a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy +++ b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy @@ -46,7 +46,7 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { private static final String JAVAC_PLUGIN_VERSION = Config.get().ciVisibilityCompilerPluginVersion private static final String JACOCO_PLUGIN_VERSION = Config.get().ciVisibilityJacocoPluginVersion - private static final int PROCESS_TIMEOUT_SECS = 180 + private static final int PROCESS_TIMEOUT_SECS = 240 private static final int DEPENDENCIES_DOWNLOAD_RETRIES = 5 From e3af0a823262e79e2dd13431d28d714e0714f603 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Tue, 1 Jul 2025 12:54:13 +0200 Subject: [PATCH 4/8] increase timeout only for dependencies download --- .../groovy/datadog/smoketest/MavenSmokeTest.groovy | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy index a5557c7bdc2..281ce3b3f24 100644 --- a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy +++ b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy @@ -46,7 +46,8 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { private static final String JAVAC_PLUGIN_VERSION = Config.get().ciVisibilityCompilerPluginVersion private static final String JACOCO_PLUGIN_VERSION = Config.get().ciVisibilityJacocoPluginVersion - private static final int PROCESS_TIMEOUT_SECS = 240 + private static final int DEPENDENCIES_DOWNLOAD_TIMEOUT_SECS = 300 + private static final int PROCESS_TIMEOUT_SECS = 120 private static final int DEPENDENCIES_DOWNLOAD_RETRIES = 5 @@ -90,7 +91,6 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { verifyEventsAndCoverages(projectName, "maven", mavenVersion, mockBackend.waitForEvents(expectedEvents), mockBackend.waitForCoverages(expectedCoverages)) verifyTelemetryMetrics(mockBackend.getAllReceivedTelemetryMetrics(), mockBackend.getAllReceivedTelemetryDistributions(), expectedEvents) - // change where: projectName | mavenVersion | expectedEvents | expectedCoverages | expectSuccess | testsSkipping | flakyRetries | jacocoCoverage | commandLineParams | minSupportedJavaVersion @@ -294,7 +294,7 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { private void retryUntilSuccessfulOrNoAttemptsLeft(List mvnCommand, Map additionalEnvVars = [:]) { def processBuilder = createProcessBuilder(mvnCommand, false, false, [], additionalEnvVars) for (int attempt = 0; attempt < DEPENDENCIES_DOWNLOAD_RETRIES; attempt++) { - def exitCode = runProcess(processBuilder.start()) + def exitCode = runProcess(processBuilder.start(), DEPENDENCIES_DOWNLOAD_TIMEOUT_SECS) if (exitCode == 0) { return } @@ -310,15 +310,15 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { return runProcess(processBuilder.start()) } - private static runProcess(Process p) { + private static runProcess(Process p, int timeout_secs = PROCESS_TIMEOUT_SECS) { StreamConsumer errorGobbler = new StreamConsumer(p.getErrorStream(), "ERROR") StreamConsumer outputGobbler = new StreamConsumer(p.getInputStream(), "OUTPUT") outputGobbler.start() errorGobbler.start() - if (!p.waitFor(PROCESS_TIMEOUT_SECS, TimeUnit.SECONDS)) { + if (!p.waitFor(timeout_secs, TimeUnit.SECONDS)) { p.destroyForcibly() - throw new TimeoutException("Instrumented process failed to exit within $PROCESS_TIMEOUT_SECS") + throw new TimeoutException("Instrumented process failed to exit within $timeout_secs seconds") } return p.exitValue() From abb4997a6613b3d2da24e572aa6dabbcb8aa77d4 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Tue, 1 Jul 2025 13:48:13 +0200 Subject: [PATCH 5/8] move dependency downloads to build task --- dd-smoke-tests/maven/build.gradle | 56 ++++++++++++++++++- .../datadog/smoketest/MavenSmokeTest.groovy | 11 +--- 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/dd-smoke-tests/maven/build.gradle b/dd-smoke-tests/maven/build.gradle index 2dedbc6f9b5..054e9bd6a4c 100644 --- a/dd-smoke-tests/maven/build.gradle +++ b/dd-smoke-tests/maven/build.gradle @@ -20,13 +20,67 @@ jar { } } +// Pre-cache Maven dependencies for smoke tests projects during build phase +tasks.register('mvnBuild') { + description = 'Pre-cache Maven dependencies for all test projects' + + inputs.files fileTree("$projectDir/src/test/resources") { + include "**/pom.xml" + include "**/settings.xml" + } + outputs.dir "$projectDir/.gradle/maven-dependencies-cache" + + doLast { + file("$projectDir/.gradle/maven-dependencies-cache").mkdirs() + + def pomFiles = fileTree("$projectDir/src/test/resources") { + include "**/pom.xml" + } + + def processedProjects = [] as Set + + pomFiles.each { pomFile -> + def projectDir = pomFile.parentFile + def projectKey = projectDir.name + + if (!processedProjects.contains(projectKey)) { + processedProjects.add(projectKey) + + logger.info("Pre-caching dependencies for Maven project: ${projectKey}") + + def processBuilder = new ProcessBuilder() + processBuilder.directory(projectDir) + processBuilder.command("$rootDir/mvnw", "dependency:go-offline", "-B") + + // Handle proxy configuration if available + if (project.hasProperty("mavenRepositoryProxy")) { + processBuilder.environment().put("MAVEN_REPOSITORY_PROXY", project.property("mavenRepositoryProxy")) + } + + def process = processBuilder.start() + def exitCode = process.waitFor() + + if (exitCode != 0) { + logger.warn("Failed to cache dependencies for project ${projectKey}, exit code: ${exitCode}") + } else { + logger.info("Successfully cached dependencies for project: ${projectKey}") + } + } + } + } +} + +tasks.named("compileTestGroovy").configure { + dependsOn 'mvnBuild' +} + tasks.withType(Test).configureEach { dependsOn "shadowJar" jvmArgs "-Ddatadog.smoketest.maven.jar.path=${tasks.shadowJar.archiveFile.get()}" // overriding the default timeout set in configure_tests.gradle, as Maven smoke // tests might run for a longer duration - timeout = Duration.of(20, ChronoUnit.MINUTES) + timeout = Duration.of(15, ChronoUnit.MINUTES) if (project.hasProperty("mavenRepositoryProxy")) { // propagate proxy URL to tests, to then propagate it to nested Gradle builds diff --git a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy index 281ce3b3f24..e8ab3c6773e 100644 --- a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy +++ b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy @@ -270,17 +270,10 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { } /** - * Sometimes Maven has problems downloading project dependencies because of intermittent network issues. - * Here, in order to reduce flakiness, we ensure that all of the dependencies are loaded (retrying if necessary), - * before proceeding with running the build + * Dependencies are now pre-cached during the Gradle build phase via the mvnBuild task. + * This method still handles runtime-specific dependencies that are added by the tracer. */ private void givenMavenDependenciesAreLoaded(String projectName, String mavenVersion, Map additionalEnvVars = [:]) { - if (LOADED_DEPENDENCIES.add("$projectName:$mavenVersion")) { - retryUntilSuccessfulOrNoAttemptsLeft(["dependency:go-offline"], additionalEnvVars) - } - // dependencies below are download separately - // because they are not declared in the project, - // but are added at runtime by the tracer if (LOADED_DEPENDENCIES.add("com.datadoghq:dd-javac-plugin:$JAVAC_PLUGIN_VERSION")) { retryUntilSuccessfulOrNoAttemptsLeft(["dependency:get", "-Dartifact=com.datadoghq:dd-javac-plugin:$JAVAC_PLUGIN_VERSION".toString()], additionalEnvVars) } From dcc6e799dcbb2f5a16e9e5f1cd9b53bd174bf512 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Wed, 2 Jul 2025 17:10:45 +0200 Subject: [PATCH 6/8] Revert "move dependency downloads to build task" This reverts commit abb4997a6613b3d2da24e572aa6dabbcb8aa77d4. --- dd-smoke-tests/maven/build.gradle | 56 +------------------ .../datadog/smoketest/MavenSmokeTest.groovy | 11 +++- 2 files changed, 10 insertions(+), 57 deletions(-) diff --git a/dd-smoke-tests/maven/build.gradle b/dd-smoke-tests/maven/build.gradle index 054e9bd6a4c..2dedbc6f9b5 100644 --- a/dd-smoke-tests/maven/build.gradle +++ b/dd-smoke-tests/maven/build.gradle @@ -20,67 +20,13 @@ jar { } } -// Pre-cache Maven dependencies for smoke tests projects during build phase -tasks.register('mvnBuild') { - description = 'Pre-cache Maven dependencies for all test projects' - - inputs.files fileTree("$projectDir/src/test/resources") { - include "**/pom.xml" - include "**/settings.xml" - } - outputs.dir "$projectDir/.gradle/maven-dependencies-cache" - - doLast { - file("$projectDir/.gradle/maven-dependencies-cache").mkdirs() - - def pomFiles = fileTree("$projectDir/src/test/resources") { - include "**/pom.xml" - } - - def processedProjects = [] as Set - - pomFiles.each { pomFile -> - def projectDir = pomFile.parentFile - def projectKey = projectDir.name - - if (!processedProjects.contains(projectKey)) { - processedProjects.add(projectKey) - - logger.info("Pre-caching dependencies for Maven project: ${projectKey}") - - def processBuilder = new ProcessBuilder() - processBuilder.directory(projectDir) - processBuilder.command("$rootDir/mvnw", "dependency:go-offline", "-B") - - // Handle proxy configuration if available - if (project.hasProperty("mavenRepositoryProxy")) { - processBuilder.environment().put("MAVEN_REPOSITORY_PROXY", project.property("mavenRepositoryProxy")) - } - - def process = processBuilder.start() - def exitCode = process.waitFor() - - if (exitCode != 0) { - logger.warn("Failed to cache dependencies for project ${projectKey}, exit code: ${exitCode}") - } else { - logger.info("Successfully cached dependencies for project: ${projectKey}") - } - } - } - } -} - -tasks.named("compileTestGroovy").configure { - dependsOn 'mvnBuild' -} - tasks.withType(Test).configureEach { dependsOn "shadowJar" jvmArgs "-Ddatadog.smoketest.maven.jar.path=${tasks.shadowJar.archiveFile.get()}" // overriding the default timeout set in configure_tests.gradle, as Maven smoke // tests might run for a longer duration - timeout = Duration.of(15, ChronoUnit.MINUTES) + timeout = Duration.of(20, ChronoUnit.MINUTES) if (project.hasProperty("mavenRepositoryProxy")) { // propagate proxy URL to tests, to then propagate it to nested Gradle builds diff --git a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy index e8ab3c6773e..281ce3b3f24 100644 --- a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy +++ b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy @@ -270,10 +270,17 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { } /** - * Dependencies are now pre-cached during the Gradle build phase via the mvnBuild task. - * This method still handles runtime-specific dependencies that are added by the tracer. + * Sometimes Maven has problems downloading project dependencies because of intermittent network issues. + * Here, in order to reduce flakiness, we ensure that all of the dependencies are loaded (retrying if necessary), + * before proceeding with running the build */ private void givenMavenDependenciesAreLoaded(String projectName, String mavenVersion, Map additionalEnvVars = [:]) { + if (LOADED_DEPENDENCIES.add("$projectName:$mavenVersion")) { + retryUntilSuccessfulOrNoAttemptsLeft(["dependency:go-offline"], additionalEnvVars) + } + // dependencies below are download separately + // because they are not declared in the project, + // but are added at runtime by the tracer if (LOADED_DEPENDENCIES.add("com.datadoghq:dd-javac-plugin:$JAVAC_PLUGIN_VERSION")) { retryUntilSuccessfulOrNoAttemptsLeft(["dependency:get", "-Dartifact=com.datadoghq:dd-javac-plugin:$JAVAC_PLUGIN_VERSION".toString()], additionalEnvVars) } From d29a87fc0125476ce9fd59f50e41e9c3aac88939 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Wed, 2 Jul 2025 17:13:28 +0200 Subject: [PATCH 7/8] increase dependencies timeout to 400 --- .../src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy index 281ce3b3f24..2ead886918b 100644 --- a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy +++ b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy @@ -46,7 +46,7 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { private static final String JAVAC_PLUGIN_VERSION = Config.get().ciVisibilityCompilerPluginVersion private static final String JACOCO_PLUGIN_VERSION = Config.get().ciVisibilityJacocoPluginVersion - private static final int DEPENDENCIES_DOWNLOAD_TIMEOUT_SECS = 300 + private static final int DEPENDENCIES_DOWNLOAD_TIMEOUT_SECS = 400 private static final int PROCESS_TIMEOUT_SECS = 120 private static final int DEPENDENCIES_DOWNLOAD_RETRIES = 5 From 99a5b11ce87a4173f5f6a232cf8a1dd7aa3d090c Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Thu, 3 Jul 2025 15:57:10 +0200 Subject: [PATCH 8/8] increase maven smoke test gradle task timeout --- dd-smoke-tests/maven/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-smoke-tests/maven/build.gradle b/dd-smoke-tests/maven/build.gradle index 2dedbc6f9b5..e201c265832 100644 --- a/dd-smoke-tests/maven/build.gradle +++ b/dd-smoke-tests/maven/build.gradle @@ -26,7 +26,7 @@ tasks.withType(Test).configureEach { // overriding the default timeout set in configure_tests.gradle, as Maven smoke // tests might run for a longer duration - timeout = Duration.of(20, ChronoUnit.MINUTES) + timeout = Duration.of(25, ChronoUnit.MINUTES) if (project.hasProperty("mavenRepositoryProxy")) { // propagate proxy URL to tests, to then propagate it to nested Gradle builds