--- old/test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java 2019-03-22 16:32:25.732366010 -0700 +++ new/test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java 2019-03-22 16:32:25.481365782 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import jdk.test.lib.Platform; import jdk.test.lib.Utils; import jdk.test.lib.process.OutputAnalyzer; import jdk.test.lib.process.ProcessTools; @@ -126,11 +125,6 @@ if (Files.exists(buildDir)) { throw new RuntimeException("The docker build directory already exists: " + buildDir); } - // check for the existance of a platform specific docker file as well - String platformSpecificDockerfile = dockerfile + "-" + Platform.getOsArch(); - if (Files.exists(Paths.get(Utils.TEST_SRC, platformSpecificDockerfile))) { - dockerfile = platformSpecificDockerfile; - } Path jdkSrcDir = Paths.get(Utils.TEST_JDK); Path jdkDstDir = buildDir.resolve("jdk"); @@ -158,8 +152,9 @@ public static void buildDockerImage(String imageName, Path dockerfile, Path buildDir) throws Exception { - // Copy docker file to the build dir - Files.copy(dockerfile, buildDir.resolve("Dockerfile")); + generateDockerFile(buildDir.resolve("Dockerfile"), + DockerfileConfig.getBaseImageName(), + DockerfileConfig.getBaseImageVersion()); // Build the docker execute("docker", "build", "--no-cache", "--tag", imageName, buildDir.toString()) @@ -250,6 +245,18 @@ } + private static void generateDockerFile(Path dockerfile, String baseImage, + String baseImageVersion) throws Exception { + String template = + "FROM %s:%s\n" + + "COPY /jdk /jdk\n" + + "ENV JAVA_HOME=/jdk\n" + + "CMD [\"/bin/bash\"]\n"; + String dockerFileStr = String.format(template, baseImage, baseImageVersion); + Files.writeString(dockerfile, dockerFileStr); + } + + private static class CopyFileVisitor extends SimpleFileVisitor { private final Path src; private final Path dst; --- /dev/null 2019-01-24 12:16:33.731918040 -0800 +++ new/test/lib/jdk/test/lib/containers/docker/DockerfileConfig.java 2019-03-22 16:32:26.007366260 -0700 @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.test.lib.containers.docker; + +import jdk.test.lib.Platform; + + +public class DockerfileConfig { + static String getBaseImageName() { + String name = System.getProperty("jdk.test.docker.image.name"); + if (name != null) { + System.out.println("DockerfileConfig: using custom image name: " + name); + return name; + } + + switch (Platform.getOsArch()) { + case "aarch64": + return "aarch64/ubuntu"; + case "ppc64le": + return "ppc64le/ubuntu"; + case "s390x": + return "s390x/ubuntu"; + default: + return "oraclelinux"; + } + } + + static String getBaseImageVersion() { + String version = System.getProperty("jdk.test.docker.image.version"); + if (version != null) { + System.out.println("DockerfileConfig: using custom image version: " + version); + return version; + } + + switch (Platform.getOsArch()) { + case "aarch64": + case "ppc64le": + case "s390x": + return ""; + default: + return "7.6"; + } + } +} --- old/test/hotspot/jtreg/runtime/containers/docker/Dockerfile-BasicTest 2019-03-22 16:32:26.790366971 -0700 +++ /dev/null 2019-01-24 12:16:33.731918040 -0800 @@ -1,8 +0,0 @@ -FROM oraclelinux:7.6 -MAINTAINER mikhailo.seledtsov@oracle.com - -COPY /jdk /jdk - -ENV JAVA_HOME=/jdk - -CMD ["/bin/bash"] --- old/test/hotspot/jtreg/runtime/containers/docker/Dockerfile-BasicTest-aarch64 2019-03-22 16:32:27.183367328 -0700 +++ /dev/null 2019-01-24 12:16:33.731918040 -0800 @@ -1,8 +0,0 @@ -# Use generic ubuntu Linux on AArch64 -FROM aarch64/ubuntu - -COPY /jdk /jdk - -ENV JAVA_HOME=/jdk - -CMD ["/bin/bash"] --- old/test/hotspot/jtreg/runtime/containers/docker/Dockerfile-BasicTest-ppc64le 2019-03-22 16:32:27.594367701 -0700 +++ /dev/null 2019-01-24 12:16:33.731918040 -0800 @@ -1,10 +0,0 @@ -# test on x86_64 uses Oracle Linux but we do not have this for ppc64le -# so use some other Linux where OpenJDK works -# FROM oraclelinux:7.2 -FROM ppc64le/ubuntu - -COPY /jdk /jdk - -ENV JAVA_HOME=/jdk - -CMD ["/bin/bash"] --- old/test/hotspot/jtreg/runtime/containers/docker/Dockerfile-BasicTest-s390x 2019-03-22 16:32:27.990368060 -0700 +++ /dev/null 2019-01-24 12:16:33.731918040 -0800 @@ -1,7 +0,0 @@ -FROM s390x/ubuntu - -COPY /jdk /jdk - -ENV JAVA_HOME=/jdk - -CMD ["/bin/bash"] --- old/test/jdk/jdk/internal/platform/docker/Dockerfile-BasicTest 2019-03-22 16:32:28.404368436 -0700 +++ /dev/null 2019-01-24 12:16:33.731918040 -0800 @@ -1,8 +0,0 @@ -FROM oraclelinux:7.6 -MAINTAINER mikhailo.seledtsov@oracle.com - -COPY /jdk /jdk - -ENV JAVA_HOME=/jdk - -CMD ["/bin/bash"] --- old/test/jdk/jdk/internal/platform/docker/Dockerfile-BasicTest-aarch64 2019-03-22 16:32:28.803368798 -0700 +++ /dev/null 2019-01-24 12:16:33.731918040 -0800 @@ -1,8 +0,0 @@ -# Use generic ubuntu Linux on AArch64 -FROM aarch64/ubuntu - -COPY /jdk /jdk - -ENV JAVA_HOME=/jdk - -CMD ["/bin/bash"] --- old/test/jdk/jdk/internal/platform/docker/Dockerfile-BasicTest-ppc64le 2019-03-22 16:32:29.195369153 -0700 +++ /dev/null 2019-01-24 12:16:33.731918040 -0800 @@ -1,10 +0,0 @@ -# test on x86_64 uses Oracle Linux but we do not have this for ppc64le -# so use some other Linux where OpenJDK works -# FROM oraclelinux:7.2 -FROM ppc64le/ubuntu - -COPY /jdk /jdk - -ENV JAVA_HOME=/jdk - -CMD ["/bin/bash"] --- old/test/jdk/jdk/internal/platform/docker/Dockerfile-BasicTest-s390x 2019-03-22 16:32:29.599369520 -0700 +++ /dev/null 2019-01-24 12:16:33.731918040 -0800 @@ -1,7 +0,0 @@ -FROM s390x/ubuntu - -COPY /jdk /jdk - -ENV JAVA_HOME=/jdk - -CMD ["/bin/bash"]