7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 /* @test
26 * @summary a jtreg wrapper for gtest tests
27 * @library /testlibrary
28 * @modules java.base/jdk.internal.misc
29 * @run main/native GTestWrapper
30 */
31
32 import java.util.Arrays;
33 import java.util.List;
34 import java.util.stream.Stream;
35 import java.util.stream.Collectors;
36
37 import java.nio.file.Paths;
38 import java.nio.file.Path;
39
40 import jdk.test.lib.Platform;
41 import jdk.test.lib.ProcessTools;
42 import jdk.test.lib.OutputAnalyzer;
43 import jdk.test.lib.Utils;
44
45 public class GTestWrapper {
46 public static void main(String[] args) throws Throwable {
47 // nativePath points either to <test_image>/hotspot/jtreg/native or to <test_image>/hotspot/gtest
48 Path nativePath = Paths.get(System.getProperty("test.nativepath"));
49 // let's assume it's <test_image>/hotspot/gtest
50 Path path = getJVMVariantSubDir(nativePath);
51 if (!path.toFile().exists()) {
52 // maybe it is <test_image>/hotspot/jtreg/native
53 path = getJVMVariantSubDir(nativePath.getParent()
54 .getParent()
55 .resolve("gtest"));
56 }
57 if (!path.toFile().exists()) {
58 throw new Error("TESTBUG: the library has not been found in " + nativePath);
59 }
60 path = path.resolve("gtestLauncher" + (Platform.isWindows() ? ".exe" : ""));
61 List<String> cmds = Stream.concat(
62 Stream.of(
63 path.toString(),
64 "-jdk",
65 System.getProperty("test.jdk")),
66 Arrays.stream(Utils.getTestJavaOpts())
67 .filter(s -> s.startsWith("-X") || s.startsWith("-D")))
68 .collect(Collectors.toList());
69 ProcessBuilder builder = new ProcessBuilder(cmds);
70 OutputAnalyzer oa = ProcessTools.executeProcess(builder);
71 oa.shouldHaveExitValue(0);
72 }
73
74 private static Path getJVMVariantSubDir(Path root) {
75 if (Platform.isServer()) {
76 return root.resolve("server");
77 } else if (Platform.isClient()) {
78 return root.resolve("client");
79 } else if (Platform.isMinimal()) {
80 return root.resolve("minimal");
81 } else {
82 throw new Error("TESTBUG: unsuppported vm variant");
83 }
84 }
85 }
|
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 /* @test
26 * @summary a jtreg wrapper for gtest tests
27 * @library /test/lib/share/classes
28 * @modules java.base/jdk.internal.misc
29 * @run main/native GTestWrapper
30 */
31
32 import java.util.Arrays;
33 import java.util.List;
34 import java.util.stream.Stream;
35 import java.util.stream.Collectors;
36
37 import java.nio.file.Paths;
38 import java.nio.file.Path;
39
40 import jdk.test.lib.Platform;
41 import jdk.test.lib.Utils;
42 import jdk.test.lib.process.ProcessTools;
43 import jdk.test.lib.process.OutputAnalyzer;
44
45 public class GTestWrapper {
46 public static void main(String[] args) throws Throwable {
47 // gtestLauncher is located in <test_image>/hotspot/gtest/<vm_variant>/
48 // nativePath points either to <test_image>/hotspot/jtreg/native or to <test_image>/hotspot/gtest
49 Path nativePath = Paths.get(System.getProperty("test.nativepath"));
50 String jvmVariantDir = getJVMVariantSubDir();
51 // let's assume it's <test_image>/hotspot/gtest
52 Path path = nativePath.resolve(jvmVariantDir);
53 if (!path.toFile().exists()) {
54 // maybe it is <test_image>/hotspot/jtreg/native
55 path = nativePath.getParent()
56 .getParent()
57 .resolve("gtest")
58 .resolve(jvmVariantDir);
59 }
60 if (!path.toFile().exists()) {
61 throw new Error("TESTBUG: the library has not been found in " + nativePath);
62 }
63 path = path.resolve("gtestLauncher" + (Platform.isWindows() ? ".exe" : ""));
64 Stream<String> launcherArgs = Stream.of(path.toString(), "-jdk",
65 System.getProperty("test.jdk"));
66 // JVM accepts only -X and -D flags
67 Stream<String> vmFLags = Arrays.stream(Utils.getTestJavaOpts())
68 .filter(s -> s.startsWith("-X") || s.startsWith("-D"));
69 String[] cmds = Stream.concat(launcherArgs, vmFLags)
70 .toArray(String[]::new);
71 ProcessTools.executeCommand(cmds).shouldHaveExitValue(0);
72 }
73
74 private static String getJVMVariantSubDir() {
75 if (Platform.isServer()) {
76 return "server";
77 } else if (Platform.isClient()) {
78 return "client";
79 } else if (Platform.isMinimal()) {
80 return "minimal";
81 } else {
82 throw new Error("TESTBUG: unsuppported vm variant");
83 }
84 }
85 }
|