# HG changeset patch # User simonis # Date 1499349834 -7200 # Thu Jul 06 16:03:54 2017 +0200 # Node ID 2f2a07e859c2bb9d578cc928e09e4cfb13fcb7fe # Parent 68d4c8b3b2d12dd1d5b1b7b73353e5c4bf85f650 8183534: [TEST] Make detection of compilation mode more robust Reviewed-by: clanger, stuefe diff --git a/test/jtreg-ext/requires/VMProps.java b/test/jtreg-ext/requires/VMProps.java --- a/test/jtreg-ext/requires/VMProps.java +++ b/test/jtreg-ext/requires/VMProps.java @@ -1,5 +1,5 @@ /* - * 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 @@ -76,6 +76,19 @@ } /** + * 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() { @@ -99,7 +112,7 @@ // 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"); @@ -107,7 +120,7 @@ if (m.matches()) { return m.group(1).toLowerCase(); } - return null; + return nullWithException("Can't get VM flavor from 'java.vm.name'"); } /** @@ -117,18 +130,16 @@ // E.g. "mixed mode" String vmInfo = System.getProperty("java.vm.info"); if (vmInfo == null) { - return null; + return nullWithException("Can't get 'java.vm.info' property"); } - int k = vmInfo.toLowerCase().indexOf(" mode"); - if (k < 0) { - return null; - } - 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'"); } } @@ -136,7 +147,12 @@ * @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"); + } } /** @@ -161,7 +177,12 @@ * @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"); + } } /**