< prev index next >

test/native/GTestWrapper.java

Print this page
rev 11190 : 8156681: Add jtreg wrapper for hotspot gtest tests
rev 11191 : [mq]: 8156681-2

@@ -42,30 +42,44 @@
 import jdk.test.lib.OutputAnalyzer;
 import jdk.test.lib.Utils;
 
 public class GTestWrapper {
     public static void main(String[] args) throws Throwable {
-        String nativePath  = System.getProperty("test.nativepath");
-        Path gtestLauncher = Paths.get(nativePath, "hotspot", "gtest");
-        if (Platform.isServer()) {
-            gtestLauncher = gtestLauncher.resolve("server");
-        } else if (Platform.isClient()) {
-            gtestLauncher = gtestLauncher.resolve("client");
-        } else if (Platform.isMinimal()) {
-            gtestLauncher = gtestLauncher.resolve("minimal");
+        // nativePath points either to <test_image>/hotspot/jtreg/native or to <test_image>/hotspot/gtest
+        Path nativePath = Paths.get(System.getProperty("test.nativepath"));
+        // let's assume it's <test_image>/hotspot/gtest
+        Path path = getJVMVariantSubDir(nativePath);
+        if (!path.toFile().exists()) {
+            // maybe it is <test_image>/hotspot/jtreg/native
+            path = getJVMVariantSubDir(nativePath.getParent()
+                                                 .getParent()
+                                                 .resolve("gtest"));
         }
-        gtestLauncher = gtestLauncher.resolve(
-                "gtestLauncher" + (Platform.isWindows() ? ".exe" : ""));
+        if (!path.toFile().exists()) {
+            throw new Error("TESTBUG: the library has not been found in " + nativePath);
+        }
+        path = path.resolve("gtestLauncher" + (Platform.isWindows() ? ".exe" : ""));
         List<String> cmds = Stream.concat(
                 Stream.of(
-                        gtestLauncher.toString(),
+                        path.toString(),
                         "-jdk",
                         System.getProperty("test.jdk")),
-                Arrays.stream(Utils.getTestJavaOpts()))
+                Arrays.stream(Utils.getTestJavaOpts())
+                      .filter(s -> s.startsWith("-X") || s.startsWith("-D")))
                 .collect(Collectors.toList());
         ProcessBuilder builder = new ProcessBuilder(cmds);
-        builder.inheritIO();
-
         OutputAnalyzer oa = ProcessTools.executeProcess(builder);
         oa.shouldHaveExitValue(0);
     }
+
+    private static Path getJVMVariantSubDir(Path root) {
+        if (Platform.isServer()) {
+            return root.resolve("server");
+        } else if (Platform.isClient()) {
+            return root.resolve("client");
+        } else if (Platform.isMinimal()) {
+            return root.resolve("minimal");
+        } else {
+            throw new Error("TESTBUG: unsuppported vm variant");
+        }
+    }
 }
< prev index next >