8181124: Get rid of compiler.testlibrary.rtm.predicate
authorepavlova
Thu, 01 Jun 2017 17:34:34 -0700
changeset 46225 f99654379e9c
parent 46224 b1ce24ef8897
child 46226 59ae25e5d4b9
8181124: Get rid of compiler.testlibrary.rtm.predicate Reviewed-by: kvn
test/jtreg-ext/requires/VMProps.java
test/lib/jdk/test/lib/Platform.java
--- a/test/jtreg-ext/requires/VMProps.java	Tue May 30 17:03:42 2017 -0400
+++ b/test/jtreg-ext/requires/VMProps.java	Thu Jun 01 17:34:34 2017 -0700
@@ -37,6 +37,7 @@
 import sun.hotspot.cpuinfo.CPUInfo;
 import sun.hotspot.gc.GC;
 import sun.hotspot.WhiteBox;
+import jdk.test.lib.Platform;
 
 /**
  * The Class to be invoked by jtreg prior Test Suite execution to
@@ -66,6 +67,8 @@
         map.put("vm.jvmci", vmJvmci());
         map.put("vm.emulatedClient", vmEmulatedClient());
         map.put("vm.cpu.features", cpuFeatures());
+        map.put("vm.rtm.cpu", vmRTMCPU());
+        map.put("vm.rtm.os", vmRTMOS());
         vmGC(map); // vm.gc.X = true/false
 
         VMProps.dump(map);
@@ -206,6 +209,36 @@
     }
 
     /**
+     * @return true if VM runs RTM supported OS and false otherwise.
+     */
+    protected String vmRTMOS() {
+        boolean isRTMOS = true;
+
+        if (Platform.isAix()) {
+            // Actually, this works since AIX 7.1.3.30, but os.version property
+            // is set to 7.1.
+            isRTMOS = (Platform.getOsVersionMajor()  > 7) ||
+                      (Platform.getOsVersionMajor() == 7 && Platform.getOsVersionMinor() > 1);
+
+        } else if (Platform.isLinux()) {
+            if (Platform.isPPC()) {
+                isRTMOS = (Platform.getOsVersionMajor()  > 4) ||
+                          (Platform.getOsVersionMajor() == 4 && Platform.getOsVersionMinor() > 1);
+            }
+        }
+        return "" + isRTMOS;
+    }
+
+    /**
+     * @return true if VM runs RTM supported CPU and false otherwise.
+     */
+    protected String vmRTMCPU() {
+        boolean vmRTMCPU = (Platform.isPPC() ? CPUInfo.hasFeature("tcheck") : CPUInfo.hasFeature("rtm"));
+
+        return "" + vmRTMCPU;
+    }
+
+    /**
      * Dumps the map to the file if the file name is given as the property.
      * This functionality could be helpful to know context in the real
      * execution.
--- a/test/lib/jdk/test/lib/Platform.java	Tue May 30 17:03:42 2017 -0400
+++ b/test/lib/jdk/test/lib/Platform.java	Thu Jun 01 17:34:34 2017 -0700
@@ -23,6 +23,10 @@
 
 package jdk.test.lib;
 
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.regex.Pattern;
 
 public class Platform {
@@ -228,7 +232,7 @@
     public static boolean canPtraceAttachLinux() throws Exception {
 
         // SELinux deny_ptrace:
-        String deny_ptrace = Utils.fileAsString("/sys/fs/selinux/booleans/deny_ptrace");
+        String deny_ptrace = fileAsString("/sys/fs/selinux/booleans/deny_ptrace");
         if (deny_ptrace != null && deny_ptrace.contains("1")) {
             // ptrace will be denied:
             return false;
@@ -239,7 +243,7 @@
         // 1 - restricted ptrace: a process must be a children of the inferior or user is root
         // 2 - only processes with CAP_SYS_PTRACE may use ptrace or user is root
         // 3 - no attach: no processes may use ptrace with PTRACE_ATTACH
-        String ptrace_scope = Utils.fileAsString("/proc/sys/kernel/yama/ptrace_scope");
+        String ptrace_scope = fileAsString("/proc/sys/kernel/yama/ptrace_scope");
         if (ptrace_scope != null) {
             if (ptrace_scope.startsWith("3")) {
                 return false;
@@ -265,4 +269,10 @@
                       .matcher(osArch)
                       .matches();
     }
+
+    private static String fileAsString(String filename) throws IOException {
+        Path filePath = Paths.get(filename);
+        if (!Files.exists(filePath)) return null;
+        return new String(Files.readAllBytes(filePath));
+    }
 }