From be60d362ae1dcad8b73eaaa2c24b0d669a2adc0e Mon Sep 17 00:00:00 2001 From: Laplie Anderson Date: Wed, 4 Sep 2019 13:10:32 -0400 Subject: [PATCH] Manually call jlink because plugin won't work with our build --- .../java9-modules/java9-modules.gradle | 42 ++++++++++--------- .../smoketest/Java9ModulesSmokeTest.groovy | 6 ++- gradle/java.gradle | 4 ++ 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/dd-smoke-tests/java9-modules/java9-modules.gradle b/dd-smoke-tests/java9-modules/java9-modules.gradle index d29fe02abe..ca4416a297 100644 --- a/dd-smoke-tests/java9-modules/java9-modules.gradle +++ b/dd-smoke-tests/java9-modules/java9-modules.gradle @@ -1,17 +1,9 @@ -import org.beryx.jlink.BaseTask - -plugins { - id 'org.beryx.jlink' version '2.1.1' // latest version that doesn't have a Java 11+ warning -} - ext { minJavaVersionForTests = JavaVersion.VERSION_1_9 } apply from: "${rootDir}/gradle/java.gradle" -mainClassName = 'datadog.smoketest.moduleapp.ModuleApplication' - jar { manifest { attributes( @@ -20,20 +12,32 @@ jar { } } -jlink { - moduleName = 'datadog.smoketest.moduleapp' - options = ['--no-man-pages', '--no-header-files', '--add-modules', 'java.instrument'] -} +/** + * For each Test task, creates a jlink image using the java bin directory of the test + */ +tasks.withType(Test).each { + def javaExecutable = it.executable + def javaVersion = getJavaExecutableVersion(javaExecutable) -tasks.withType(BaseTask).each { - it.enabled = JavaVersion.VERSION_1_9.compareTo(JavaVersion.current()) <= 0 -} + if (JavaVersion.VERSION_1_9.compareTo(javaVersion) > 0) { + return + } -test { - dependsOn tasks.jlink + def jlinkExecutable = file(javaExecutable).parent + "/jlink" + def generatedImageDir = "${buildDir}/${it.name}image" + + it.doFirst { + exec { + commandLine jlinkExecutable, '--no-man-pages', '--no-header-files', + '--add-modules', 'java.instrument,datadog.smoketest.moduleapp', + "--module-path", jar.archiveFile.get().toString(), "--output", generatedImageDir + } + } + + it.jvmArgs "-Ddatadog.smoketest.module.image=${generatedImageDir}" + it.dependsOn jar } dependencies { testCompile project(':dd-smoke-tests') -} - +} \ No newline at end of file diff --git a/dd-smoke-tests/java9-modules/src/test/groovy/datadog/smoketest/Java9ModulesSmokeTest.groovy b/dd-smoke-tests/java9-modules/src/test/groovy/datadog/smoketest/Java9ModulesSmokeTest.groovy index afa7899946..7dcd379ff8 100644 --- a/dd-smoke-tests/java9-modules/src/test/groovy/datadog/smoketest/Java9ModulesSmokeTest.groovy +++ b/dd-smoke-tests/java9-modules/src/test/groovy/datadog/smoketest/Java9ModulesSmokeTest.groovy @@ -10,8 +10,12 @@ class Java9ModulesSmokeTest extends AbstractSmokeTest { @Override ProcessBuilder createProcessBuilder() { + String imageDir = System.getProperty("datadog.smoketest.module.image") + + assert imageDir != null + List command = new ArrayList<>() - command.add(buildDirectory + "/image/bin/java") + command.add(imageDir + "/bin/java") command.addAll(defaultJavaProperties) command.addAll((String[]) ["-m", "datadog.smoketest.moduleapp/datadog.smoketest.moduleapp.ModuleApplication"]) ProcessBuilder processBuilder = new ProcessBuilder(command) diff --git a/gradle/java.gradle b/gradle/java.gradle index 2b291af0d1..181ff8d0f1 100644 --- a/gradle/java.gradle +++ b/gradle/java.gradle @@ -246,6 +246,10 @@ JavaVersion getJavaExecutableVersion(String path) { } } +ext { + getJavaExecutableVersion = this.&getJavaExecutableVersion +} + def isJavaVersionAllowed(JavaVersion version) { if (project.hasProperty('minJavaVersionForTests') && project.getProperty('minJavaVersionForTests').compareTo(version) > 0) { return false