Skip to content

Commit

Permalink
Provision the correct JDK for test tasks (#48561)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
alpar-t committed Nov 18, 2019
1 parent e84e211 commit 6e775cf
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 3 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -661,7 +661,6 @@ class BuildPlugin implements Plugin<Project> {
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

Expand Down
9 changes: 9 additions & 0 deletions buildSrc/src/main/java/org/elasticsearch/gradle/Jdk.java
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
24 changes: 24 additions & 0 deletions gradle/runtime-jdk-provision.gradle
Original file line number Diff line number Diff line change
@@ -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()
}
}
}

0 comments on commit 6e775cf

Please sign in to comment.