From 6e775cfc970fe096c08e7cb822324a696a994e25 Mon Sep 17 00:00:00 2001 From: Alpar Torok Date: Mon, 18 Nov 2019 10:27:28 +0200 Subject: [PATCH] Provision the correct JDK for test tasks (#48561) This PR adds build configuration to use the `jdk-download` plugin with unit tests when no runtime java is configured externally. It's a first part in a longer chain of changes described in #40531. --- build.gradle | 1 + .../elasticsearch/gradle/BuildPlugin.groovy | 1 - .../java/org/elasticsearch/gradle/Jdk.java | 9 +++++++ .../gradle/JdkDownloadPlugin.java | 3 ++- .../gradle/VersionProperties.java | 3 ++- gradle/runtime-jdk-provision.gradle | 24 +++++++++++++++++++ 6 files changed, 38 insertions(+), 3 deletions(-) create mode 100644 gradle/runtime-jdk-provision.gradle diff --git a/build.gradle b/build.gradle index 271e54a566a40..9ff54f425121f 100644 --- a/build.gradle +++ b/build.gradle @@ -41,6 +41,7 @@ plugins { apply plugin: 'nebula.info-scm' apply from: 'gradle/build-scan.gradle' apply from: 'gradle/build-complete.gradle' +apply from: 'gradle/runtime-jdk-provision.gradle' // common maven publishing configuration allprojects { diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy index cb97fe0929b31..a43d60b9983d5 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy @@ -661,7 +661,6 @@ class BuildPlugin implements Plugin { test.jvmArgumentProviders.add(nonInputProperties) test.extensions.add('nonInputProperties', nonInputProperties) - test.executable = "${BuildParams.runtimeJavaHome}/bin/java" test.workingDir = project.file("${project.buildDir}/testrun/${test.name}") test.maxParallelForks = System.getProperty('tests.jvms', BuildParams.defaultParallel.toString()) as Integer diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/Jdk.java b/buildSrc/src/main/java/org/elasticsearch/gradle/Jdk.java index 7fe5e93f5f3bc..2467b7bb4d2ad 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/Jdk.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/Jdk.java @@ -111,6 +111,15 @@ public TaskDependency getBuildDependencies() { return configuration.getBuildDependencies(); } + public Object getBinJavaPath() { + return new Object() { + @Override + public String toString() { + return getPath() + "/bin/java"; + } + }; + } + // internal, make this jdks configuration unmodifiable void finalizeValues() { if (version.isPresent() == false) { diff --git a/buildSrc/src/main/java/org/elasticsearch/gradle/JdkDownloadPlugin.java b/buildSrc/src/main/java/org/elasticsearch/gradle/JdkDownloadPlugin.java index 9dd4f35333f80..59b2aa98d4f36 100644 --- a/buildSrc/src/main/java/org/elasticsearch/gradle/JdkDownloadPlugin.java +++ b/buildSrc/src/main/java/org/elasticsearch/gradle/JdkDownloadPlugin.java @@ -173,7 +173,8 @@ private static void setupRootJdkDownload(Project rootProject, String platform, S jdkConfig = configurations.create(remoteConfigName); configurations.create(localConfigName); } - String platformDep = platform.equals("darwin") ? (vendor.equals("adoptopenjdk") ? "mac" : "osx") : platform; + String platformDep = platform.equals("darwin") || platform.equals("osx") ? + (vendor.equals("adoptopenjdk") ? "mac" : "osx") : platform; String extension = platform.equals("windows") ? "zip" : "tar.gz"; String jdkDep = vendor + ":" + platformDep + ":" + jdkVersion + "@" + extension; rootProject.getDependencies().add(configName(vendor, version, platform), jdkDep); diff --git a/buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/VersionProperties.java b/buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/VersionProperties.java index 4bf8d5505a0c1..e4b75c94aa5f2 100644 --- a/buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/VersionProperties.java +++ b/buildSrc/src/minimumRuntime/java/org/elasticsearch/gradle/VersionProperties.java @@ -25,7 +25,8 @@ public static String getLucene() { public static String getBundledJdk(final String platform) { switch (platform) { - case "darwin": + case "darwin": // fall trough + case "mac": return bundledJdkDarwin; case "linux": return bundledJdkLinux; diff --git a/gradle/runtime-jdk-provision.gradle b/gradle/runtime-jdk-provision.gradle new file mode 100644 index 0000000000000..e67d1d44f507c --- /dev/null +++ b/gradle/runtime-jdk-provision.gradle @@ -0,0 +1,24 @@ +import org.elasticsearch.gradle.OS +import org.elasticsearch.gradle.VersionProperties +import org.elasticsearch.gradle.info.BuildParams + +apply plugin: 'elasticsearch.jdk-download' + +jdks { + provisioned_runtime { + vendor = VersionProperties.bundledJdkVendor + version = VersionProperties.getBundledJdk(OS.current().name().toLowerCase()) + platform = OS.current().name().toLowerCase() + } +} + +allprojects { + project.tasks.withType(Test).configureEach { Test test -> + if (BuildParams.getIsRuntimeJavaHomeSet()) { + test.executable = "${BuildParams.runtimeJavaHome}/bin/java" + } else { + test.dependsOn(rootProject.jdks.provisioned_runtime) + test.executable = rootProject.jdks.provisioned_runtime.getBinJavaPath() + } + } +} \ No newline at end of file