< prev index next >
test/jtreg-ext/requires/VMProps.java
Print this page
rev 2714 : 8183534: [TEST] Make detection of compilation mode more robust
Reviewed-by: clanger, stuefe
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2016, 2017, 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.
@@ -74,10 +74,23 @@
VMProps.dump(map);
return map;
}
/**
+ * Prints a stack trace before returning null.
+ * Used by the various helper functions which parse information from
+ * VM properties in the case where they don't find an expected property
+ * or a propoerty doesn't conform to an expected format.
+ *
+ * @return null
+ */
+ private String nullWithException(String message) {
+ new Exception(message).printStackTrace();
+ return null;
+ }
+
+ /**
* @return vm.simpleArch value of "os.simpleArch" property of tested JDK.
*/
protected String vmArch() {
String arch = System.getProperty("os.arch");
if (arch.equals("x86_64") || arch.equals("amd64")) {
@@ -97,48 +110,51 @@
*/
protected String vmFlavor() {
// E.g. "Java HotSpot(TM) 64-Bit Server VM"
String vmName = System.getProperty("java.vm.name");
if (vmName == null) {
- return null;
+ return nullWithException("Can't get 'java.vm.name' property");
}
Pattern startP = Pattern.compile(".* (\\S+) VM");
Matcher m = startP.matcher(vmName);
if (m.matches()) {
return m.group(1).toLowerCase();
}
- return null;
+ return nullWithException("Can't get VM flavor from 'java.vm.name'");
}
/**
* @return VM compilation mode extracted from the "java.vm.info" property.
*/
protected String vmCompMode() {
// E.g. "mixed mode"
String vmInfo = System.getProperty("java.vm.info");
if (vmInfo == null) {
- return null;
- }
- int k = vmInfo.toLowerCase().indexOf(" mode");
- if (k < 0) {
- return null;
+ return nullWithException("Can't get 'java.vm.info' property");
}
- vmInfo = vmInfo.substring(0, k);
- switch (vmInfo) {
- case "mixed" : return "Xmixed";
- case "compiled" : return "Xcomp";
- case "interpreted" : return "Xint";
- default: return null;
+ if (vmInfo.toLowerCase().indexOf("mixed mode") != -1) {
+ return "Xmixed";
+ } else if (vmInfo.toLowerCase().indexOf("compiled mode") != -1) {
+ return "Xcomp";
+ } else if (vmInfo.toLowerCase().indexOf("interpreted mode") != -1) {
+ return "Xint";
+ } else {
+ return nullWithException("Can't get compilation mode from 'java.vm.info'");
}
}
/**
* @return VM bitness, the value of the "sun.arch.data.model" property.
*/
protected String vmBits() {
- return System.getProperty("sun.arch.data.model");
+ String dataModel = System.getProperty("sun.arch.data.model");
+ if (dataModel != null) {
+ return dataModel;
+ } else {
+ return nullWithException("Can't get 'sun.arch.data.model' property");
+ }
}
/**
* @return "true" if Flight Recorder is enabled, "false" if is disabled.
*/
@@ -159,11 +175,16 @@
/**
* @return debug level value extracted from the "jdk.debug" property.
*/
protected String vmDebug() {
- return "" + System.getProperty("jdk.debug").contains("debug");
+ String debug = System.getProperty("jdk.debug");
+ if (debug != null) {
+ return "" + debug.contains("debug");
+ } else {
+ return nullWithException("Can't get 'jdk.debug' property");
+ }
}
/**
* @return true if VM supports JVMCI and false otherwise
*/
< prev index next >