# HG changeset patch # User ctornqvi # Date 1395956168 -3600 # Node ID dce765c2ff7dc69d5b562af3ffa07c7b6656fe0e # Parent e9e252c83b2b738d127dc50dbd07cbf0cd32fd75 8007890: [TESTBUG] JcmdWithNMTDisabled.java fails when invoked with NMT explicitly turned on Summary: Wrapped the test in another layer process creation to avoid NMT being turned on. Reviewed-by: coleenp, dcubed diff -r e9e252c83b2b -r dce765c2ff7d test/runtime/NMT/JcmdWithNMTDisabled.java --- a/test/runtime/NMT/JcmdWithNMTDisabled.java Tue Nov 17 08:59:21 2015 +0100 +++ b/test/runtime/NMT/JcmdWithNMTDisabled.java Thu Mar 27 22:36:08 2014 +0100 @@ -26,10 +26,7 @@ * @key nmt jcmd * @summary Verify that jcmd correctly reports that NMT is not enabled * @library /testlibrary - * First run without enabling NMT - * @run main/othervm JcmdWithNMTDisabled - * Then run with explicitly disabling NMT, should not be any difference - * @run main/othervm -XX:NativeMemoryTracking=off JcmdWithNMTDisabled + * @run main JcmdWithNMTDisabled 1 */ import com.oracle.java.testlibrary.*; @@ -39,6 +36,27 @@ static String pid; public static void main(String args[]) throws Exception { + + // This test explicitly needs to be run with the exact command lines below, not passing on + // arguments from the parent VM is a conscious choice to avoid NMT being turned on. + if (args.length > 0) { + ProcessBuilder pb; + OutputAnalyzer output; + String testjdkPath = System.getProperty("test.jdk"); + + // First run without enabling NMT + pb = ProcessTools.createJavaProcessBuilder("-Dtest.jdk=" + testjdkPath, "JcmdWithNMTDisabled"); + output = new OutputAnalyzer(pb.start()); + output.shouldHaveExitValue(0); + + // Then run with explicitly disabling NMT, should not be any difference + pb = ProcessTools.createJavaProcessBuilder("-Dtest.jdk=" + testjdkPath, "-XX:NativeMemoryTracking=off", "JcmdWithNMTDisabled"); + output = new OutputAnalyzer(pb.start()); + output.shouldHaveExitValue(0); + + return; + } + // Grab my own PID pid = Integer.toString(ProcessTools.getProcessId());