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 3dc0b365c9a..991df1a9658 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 @@ -34,6 +34,8 @@ class AbstractGradleTest extends CiVisibilitySmokeTest { private static final String GRADLE_TEST_RESOURCE_EXTENSION = ".gradleTest" private static final String GRADLE_REGULAR_EXTENSION = ".gradle" + private static final ComparableVersion GRADLE_9 = new ComparableVersion("9.0.0") + @TempDir protected Path projectFolder @@ -105,23 +107,23 @@ class AbstractGradleTest extends CiVisibilitySmokeTest { } else if (Jvm.current.java17) { return gradleVersion.compareTo(new ComparableVersion("7.3")) >= 0 } else if (Jvm.current.java16) { - return gradleVersion.compareTo(new ComparableVersion("7.0")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("7.0"), GRADLE_9) } else if (Jvm.current.java15) { - return gradleVersion.compareTo(new ComparableVersion("6.7")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("6.7"), GRADLE_9) } else if (Jvm.current.java14) { - return gradleVersion.compareTo(new ComparableVersion("6.3")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("6.3"), GRADLE_9) } else if (Jvm.current.java13) { - return gradleVersion.compareTo(new ComparableVersion("6.0")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("6.0"), GRADLE_9) } else if (Jvm.current.java12) { - return gradleVersion.compareTo(new ComparableVersion("5.4")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("5.4"), GRADLE_9) } else if (Jvm.current.java11) { - return gradleVersion.compareTo(new ComparableVersion("5.0")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("5.0"), GRADLE_9) } else if (Jvm.current.java10) { - return gradleVersion.compareTo(new ComparableVersion("4.7")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("4.7"), GRADLE_9) } else if (Jvm.current.java9) { - return gradleVersion.compareTo(new ComparableVersion("4.3")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("4.3"), GRADLE_9) } else if (Jvm.current.java8) { - return gradleVersion.compareTo(new ComparableVersion("2.0")) >= 0 + return gradleVersion.isWithin(new ComparableVersion("2.0"), GRADLE_9) } return false } diff --git a/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleLauncherSmokeTest.groovy b/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleLauncherSmokeTest.groovy index 13f017d4ae3..f0ed1de85c8 100644 --- a/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleLauncherSmokeTest.groovy +++ b/dd-smoke-tests/gradle/src/test/groovy/datadog/smoketest/GradleLauncherSmokeTest.groovy @@ -2,6 +2,7 @@ package datadog.smoketest import datadog.communication.util.IOUtils import datadog.trace.civisibility.utils.ShellCommandExecutor +import spock.util.environment.Jvm /** * This test runs Gradle Launcher with the Java Tracer injected @@ -12,6 +13,7 @@ class GradleLauncherSmokeTest extends AbstractGradleTest { private static final int GRADLE_BUILD_TIMEOUT_MILLIS = 90_000 private static final String AGENT_JAR = System.getProperty("datadog.smoketest.agent.shadowJar.path") + private static final String JAVA_HOME = buildJavaHome() def "test Gradle Launcher injects tracer into Gradle Daemon: v#gradleVersion, cmd line - #gradleDaemonCmdLineParams"() { given: @@ -45,18 +47,19 @@ class GradleLauncherSmokeTest extends AbstractGradleTest { } private void givenGradleWrapper(String gradleVersion) { - def shellCommandExecutor = new ShellCommandExecutor(projectFolder.toFile(), GRADLE_BUILD_TIMEOUT_MILLIS) + def shellCommandExecutor = new ShellCommandExecutor(projectFolder.toFile(), GRADLE_BUILD_TIMEOUT_MILLIS, ["JAVA_HOME": JAVA_HOME]) shellCommandExecutor.executeCommand(IOUtils::readFully, "./gradlew", "wrapper", "--gradle-version", gradleVersion) } private String whenRunningGradleLauncherWithJavaTracerInjected(String gradleDaemonCmdLineParams) { def shellCommandExecutor = new ShellCommandExecutor(projectFolder.toFile(), GRADLE_BUILD_TIMEOUT_MILLIS, [ - "GRADLE_OPTS" : "-javaagent:${AGENT_JAR}".toString(), - "DD_CIVISIBILITY_ENABLED" : "true", - "DD_CIVISIBILITY_AGENTLESS_ENABLED" : "true", - "DD_CIVISIBILITY_AGENTLESS_URL" : "${mockBackend.intakeUrl}".toString(), - "DD_CIVISIBILITY_GIT_UPLOAD_ENABLED" : "false", - "DD_API_KEY" : "dummy" + "JAVA_HOME" : JAVA_HOME, + "GRADLE_OPTS" : "-javaagent:${AGENT_JAR}".toString(), + "DD_CIVISIBILITY_ENABLED" : "true", + "DD_CIVISIBILITY_AGENTLESS_ENABLED" : "true", + "DD_CIVISIBILITY_AGENTLESS_URL" : "${mockBackend.intakeUrl}".toString(), + "DD_CIVISIBILITY_GIT_UPLOAD_ENABLED": "false", + "DD_API_KEY" : "dummy" ]) String[] command = ["./gradlew", "--no-daemon", "--info"] if (gradleDaemonCmdLineParams) { @@ -74,4 +77,12 @@ class GradleLauncherSmokeTest extends AbstractGradleTest { } return true } + + private static String buildJavaHome() { + if (Jvm.current.isJava8()) { + return System.getenv("JAVA_8_HOME") + } else { + return System.getenv("JAVA_" + Jvm.current.getJavaSpecificationVersion() + "_HOME") + } + } } diff --git a/dd-smoke-tests/gradle/src/test/resources/test-succeed-gradle-plugin-test/build.gradleTest b/dd-smoke-tests/gradle/src/test/resources/test-succeed-gradle-plugin-test/build.gradleTest index 4e71ba3bc73..b2d6847a8ed 100644 --- a/dd-smoke-tests/gradle/src/test/resources/test-succeed-gradle-plugin-test/build.gradleTest +++ b/dd-smoke-tests/gradle/src/test/resources/test-succeed-gradle-plugin-test/build.gradleTest @@ -30,6 +30,7 @@ repositories { dependencies { testImplementation gradleTestKit() + testImplementation 'org.junit.platform:junit-platform-launcher' testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.10.2' } diff --git a/dd-smoke-tests/gradle/src/test/resources/test-succeed-junit-5/build.gradleTest b/dd-smoke-tests/gradle/src/test/resources/test-succeed-junit-5/build.gradleTest index b1c3cff6d5c..30687787ef7 100644 --- a/dd-smoke-tests/gradle/src/test/resources/test-succeed-junit-5/build.gradleTest +++ b/dd-smoke-tests/gradle/src/test/resources/test-succeed-junit-5/build.gradleTest @@ -19,7 +19,7 @@ repositories { testing { suites { test { - useJUnitJupiter() + useJUnitJupiter('5.9.3') dependencies { implementation 'org.junit.platform:junit-platform-launcher:1.9.3' diff --git a/internal-api/src/main/java/datadog/trace/util/ComparableVersion.java b/internal-api/src/main/java/datadog/trace/util/ComparableVersion.java index 147607c71f0..7411667e39f 100644 --- a/internal-api/src/main/java/datadog/trace/util/ComparableVersion.java +++ b/internal-api/src/main/java/datadog/trace/util/ComparableVersion.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.Locale; import java.util.Properties; +import javax.annotation.Nonnull; // backported from org.apache.maven:maven-artifact:3.9.9 public class ComparableVersion implements Comparable { @@ -125,6 +126,11 @@ public int compareTo(ComparableVersion o) { return this.items.compareTo(o.items); } + /** Checks if the version is in the range {@code [start, end)} */ + public boolean isWithin(@Nonnull ComparableVersion start, @Nonnull ComparableVersion end) { + return compareTo(start) >= 0 && compareTo(end) < 0; + } + public String toString() { return this.value; }