From 4d56262ba8d2e1ff21035eb4684878912b9ddb7d Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Wed, 9 Jul 2025 17:15:53 -0400 Subject: [PATCH 1/8] Add 25 to test matrices --- .gitlab-ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7368f16e3ac..2ab7d2fda6c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,7 +30,7 @@ variables: GRADLE_PLUGIN_PROXY: "http://artifactual.artifactual.all-clusters.local-dc.fabric.dog:8081/repository/gradle-plugin-portal-proxy/" BUILDER_IMAGE_VERSION_PREFIX: "v25.07-" # use either an empty string (e.g. "") for latest images or a version followed by a hyphen (e.g. "v25.05-") REPO_NOTIFICATION_CHANNEL: "#apm-java-escalations" - DEFAULT_TEST_JVMS: /^(8|11|17|21|stable)$/ + DEFAULT_TEST_JVMS: /^(8|11|17|21|25|stable)$/ PROFILE_TESTS: description: "Enable profiling of tests" value: "false" @@ -60,6 +60,7 @@ workflow: - "11" - "17" - "21" + - "25" - "stable" - "semeru11" - "oracle8" @@ -603,7 +604,7 @@ test_inst_latest: CACHE_TYPE: "latestDep" parallel: matrix: - - testJvm: ["8", "17", "21", "stable"] + - testJvm: ["8", "17", "21", "25", "stable"] # Gitlab doesn't support "parallel" and "parallel:matrix" at the same time # This emulates "parallel" by including it in the matrix CI_SPLIT: [ "1/6", "2/6", "3/6", "4/6", "5/6", "6/6"] @@ -655,7 +656,7 @@ test_debugger: variables: GRADLE_TARGET: ":debuggerTest" CACHE_TYPE: "base" - DEFAULT_TEST_JVMS: /^(8|11|17|21|stable|semeru8)$/ + DEFAULT_TEST_JVMS: /^(8|11|17|21|25|stable|semeru8)$/ parallel: matrix: *test_matrix From 5d0fa98697dd2dd1e0591c9558412c752ba5f3b8 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 14 Jul 2025 13:41:08 -0400 Subject: [PATCH 2/8] Skip gradle related test failures --- .../test/groovy/datadog/smoketest/AbstractGradleTest.groovy | 1 + .../groovy/datadog/smoketest/GradleDaemonSmokeTest.groovy | 3 +++ dd-smoke-tests/log-injection/build.gradle | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/AbstractGradleTest.groovy b/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/AbstractGradleTest.groovy index 68c3864efa1..3dc0b365c9a 100644 --- a/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/AbstractGradleTest.groovy +++ b/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/AbstractGradleTest.groovy @@ -91,6 +91,7 @@ class AbstractGradleTest extends CiVisibilitySmokeTest { private static boolean isSupported(ComparableVersion gradleVersion) { // https://docs.gradle.org/current/userguide/compatibility.html + // TODO: Fix for Java 25. Add a new condition for Java 25 when it is supported by Gradle. if (Jvm.current.isJavaVersionCompatible(24)) { return gradleVersion.compareTo(new ComparableVersion("8.14")) >= 0 } else if (Jvm.current.java21Compatible) { diff --git a/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleDaemonSmokeTest.groovy b/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleDaemonSmokeTest.groovy index 0a3d397ef95..57b4d4e5a02 100644 --- a/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleDaemonSmokeTest.groovy +++ b/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleDaemonSmokeTest.groovy @@ -23,6 +23,9 @@ import spock.lang.TempDir import java.nio.file.Files import java.nio.file.Path +@IgnoreIf(reason = "TODO: Fix for Java 25. Gradle does not support Java 25 yet: https://docs.gradle.org/current/userguide/compatibility.html#java_runtime", value = { + JavaVirtualMachine.isJavaVersionAtLeast(25) +}) class GradleDaemonSmokeTest extends AbstractGradleTest { private static final String TEST_SERVICE_NAME = "test-gradle-service" diff --git a/dd-smoke-tests/log-injection/build.gradle b/dd-smoke-tests/log-injection/build.gradle index 5c145372b46..6a055a5e344 100644 --- a/dd-smoke-tests/log-injection/build.gradle +++ b/dd-smoke-tests/log-injection/build.gradle @@ -4,6 +4,11 @@ plugins { id 'com.gradleup.shadow' } +ext { + // TODO: Fix for Java 25. Gradle Test Executor failed. Update givenGradleVersionIsCompatibleWithCurrentJvm() when Gradle releases Java 25 support: https://docs.gradle.org/current/userguide/compatibility.html#java_runtime + maxJavaVersionForTests = JavaVersion.VERSION_24 +} + apply from: "$rootDir/gradle/java.gradle" description = 'Log injection Smoke Tests.' From 33dc1bbd5163f0b230a92cc0fb2045e7676bf6c8 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 14 Jul 2025 13:44:27 -0400 Subject: [PATCH 3/8] Skip maven test failure --- .../src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy | 6 ++++++ 1 file changed, 6 insertions(+) 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 e604c6f9784..cafb15e810d 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 @@ -1,11 +1,14 @@ package datadog.smoketest +import datadog.environment.JavaVirtualMachine import datadog.trace.api.Config import datadog.trace.api.civisibility.CIConstants import datadog.trace.api.config.CiVisibilityConfig import datadog.trace.api.config.GeneralConfig import datadog.trace.civisibility.CiVisibilitySmokeTest import datadog.trace.util.Strings +import spock.lang.IgnoreIf + import java.nio.file.FileVisitResult import java.nio.file.Files import java.nio.file.Path @@ -57,6 +60,9 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { mockBackend.reset() } + @IgnoreIf(reason = "TODO: Fix for Java 25. test_successful_maven_run_junit_platform_runner jacoco coverage is failing, possibly due to lack of jacoco support for Java 25. Recommended fix is to update DEFAULT_CIVISIBILITY_JACOCO_PLUGIN_VERSION when support is added: https://github.com/jacoco/jacoco/releases", value = { + JavaVirtualMachine.isJavaVersionAtLeast(25) + }) def "test #projectName, v#mavenVersion"() { println "Starting: ${projectName} ${mavenVersion}" Assumptions.assumeTrue(Jvm.current.isJavaVersionCompatible(minSupportedJavaVersion), From 06e3d0088241372b4de8ba97d85e4e0fe29f528a Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 14 Jul 2025 15:47:09 -0400 Subject: [PATCH 4/8] Test java-concurrent-21 on Java 21-24 only --- .../java-concurrent/java-concurrent-21/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/build.gradle b/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/build.gradle index a47a59025ac..361477f06ff 100644 --- a/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/build.gradle +++ b/dd-java-agent/instrumentation/java-concurrent/java-concurrent-21/build.gradle @@ -1,5 +1,8 @@ ext { minJavaVersionForTests = JavaVersion.VERSION_21 + // Structured concurrency is a preview feature in Java 21. Methods (e.g. ShutdownOnFailure) used in this instrumentation test are no longer available in Java 25, so we set the max version to 24. + // See: https://download.java.net/java/early_access/loom/docs/api/java.base/java/util/concurrent/StructuredTaskScope.html + maxJavaVersionForTests = JavaVersion.VERSION_24 } apply from: "$rootDir/gradle/java.gradle" From b9e074dec95d037392b77afc7dfc17a3be608dea Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 14 Jul 2025 15:47:56 -0400 Subject: [PATCH 5/8] Skip java-lang test failure --- .../instrumentation/java/lang/RuntimeCallSiteTest.groovy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeCallSiteTest.groovy b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeCallSiteTest.groovy index 7683bd644f7..dce5130a6c5 100644 --- a/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeCallSiteTest.groovy +++ b/dd-java-agent/instrumentation/java-lang/src/test/groovy/datadog/trace/instrumentation/java/lang/RuntimeCallSiteTest.groovy @@ -1,12 +1,17 @@ package datadog.trace.instrumentation.java.lang +import datadog.environment.JavaVirtualMachine import datadog.trace.agent.test.AgentTestRunner import datadog.trace.api.iast.InstrumentationBridge import datadog.trace.api.iast.sink.CommandInjectionModule import foo.bar.TestRuntimeSuite import groovy.transform.CompileDynamic +import spock.lang.IgnoreIf @CompileDynamic +@IgnoreIf(reason = "TODO: Fix for Java 25.", value = { + JavaVirtualMachine.isJavaVersionAtLeast(25) +}) class RuntimeCallSiteTest extends AgentTestRunner { @Override From bafac2465a468e683375ca8ba7504e2ae0d934e3 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 14 Jul 2025 15:48:30 -0400 Subject: [PATCH 6/8] Skip log4j1 test failure --- .../instrumentation/log4j1/src/test/groovy/MdcTest.groovy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dd-java-agent/instrumentation/log4j1/src/test/groovy/MdcTest.groovy b/dd-java-agent/instrumentation/log4j1/src/test/groovy/MdcTest.groovy index f457cf5bb3f..54c7fd33a59 100644 --- a/dd-java-agent/instrumentation/log4j1/src/test/groovy/MdcTest.groovy +++ b/dd-java-agent/instrumentation/log4j1/src/test/groovy/MdcTest.groovy @@ -1,10 +1,15 @@ +import datadog.environment.JavaVirtualMachine import datadog.trace.agent.test.AgentTestRunner import org.apache.log4j.Category import org.apache.log4j.MDC import org.apache.log4j.Priority import org.apache.log4j.spi.LoggingEvent +import spock.lang.IgnoreIf class MdcTest extends AgentTestRunner { + @IgnoreIf(reason = "TODO: Fix for Java 25.", value = { + JavaVirtualMachine.isJavaVersionAtLeast(25) + }) def "should preserve mdc when logging injection is #injectionEnabled"() { setup: injectSysConfig("logs.injection", injectionEnabled) From 0e1da3e87f4d3e095510955c99b250a92c552cb4 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Mon, 14 Jul 2025 15:54:45 -0400 Subject: [PATCH 7/8] Remove 25 from default test JVMs --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2ab7d2fda6c..d67e0a55071 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,7 +30,7 @@ variables: GRADLE_PLUGIN_PROXY: "http://artifactual.artifactual.all-clusters.local-dc.fabric.dog:8081/repository/gradle-plugin-portal-proxy/" BUILDER_IMAGE_VERSION_PREFIX: "v25.07-" # use either an empty string (e.g. "") for latest images or a version followed by a hyphen (e.g. "v25.05-") REPO_NOTIFICATION_CHANNEL: "#apm-java-escalations" - DEFAULT_TEST_JVMS: /^(8|11|17|21|25|stable)$/ + DEFAULT_TEST_JVMS: /^(8|11|17|21|stable)$/ PROFILE_TESTS: description: "Enable profiling of tests" value: "false" From 6c321d588acf8b721be7e98418a47ba79ac079f2 Mon Sep 17 00:00:00 2001 From: Sarah Chen Date: Tue, 15 Jul 2025 14:56:11 -0400 Subject: [PATCH 8/8] Remove 25 from other default test JVMs --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d67e0a55071..4588968d8a5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -604,7 +604,7 @@ test_inst_latest: CACHE_TYPE: "latestDep" parallel: matrix: - - testJvm: ["8", "17", "21", "25", "stable"] + - testJvm: ["8", "17", "21", "stable"] # Gitlab doesn't support "parallel" and "parallel:matrix" at the same time # This emulates "parallel" by including it in the matrix CI_SPLIT: [ "1/6", "2/6", "3/6", "4/6", "5/6", "6/6"] @@ -656,7 +656,7 @@ test_debugger: variables: GRADLE_TARGET: ":debuggerTest" CACHE_TYPE: "base" - DEFAULT_TEST_JVMS: /^(8|11|17|21|25|stable|semeru8)$/ + DEFAULT_TEST_JVMS: /^(8|11|17|21|stable|semeru8)$/ parallel: matrix: *test_matrix