--- old/test/sun/tools/jhsdb/BasicLauncherTest.java 2016-05-06 23:37:26.632699183 +0900 +++ new/test/sun/tools/jhsdb/BasicLauncherTest.java 2016-05-06 23:37:26.401699991 +0900 @@ -31,9 +31,13 @@ * @run main BasicLauncherTest */ +import static jdk.testlibrary.Asserts.assertTrue; +import static jdk.testlibrary.Asserts.fail; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Arrays; @@ -42,6 +46,7 @@ import jdk.testlibrary.OutputAnalyzer; import jdk.testlibrary.ProcessTools; import jdk.test.lib.apps.LingeredApp; +import jdk.test.lib.hprof.HprofParser; import jdk.testlibrary.Platform; public class BasicLauncherTest { @@ -99,7 +104,7 @@ System.out.println("Starting LingeredApp"); try { - theApp = LingeredApp.startApp(); + theApp = LingeredApp.startApp(Arrays.asList("-Xmx256m")); System.out.println("Starting " + toolName + " " + toolArgs.get(0) + " against " + theApp.getPid()); JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK(toolName); @@ -129,6 +134,28 @@ launch(expectedMessage, Arrays.asList(toolArgs)); } + public static void testHeapDump() throws IOException { + File dump = new File("jhsdb.jmap.dump." + + System.currentTimeMillis() + ".hprof"); + if (dump.exists()) { + dump.delete(); + } + dump.deleteOnExit(); + + launch("heap written to", "jmap", + "--binaryheap", "--dumpfile=" + dump.getAbsolutePath()); + + assertTrue(dump.exists() && dump.isFile(), + "Could not create dump file " + dump.getAbsolutePath()); + + try { + HprofParser.parse(dump); + } catch (Exception e) { + e.printStackTrace(); + fail("Could not parse dump file " + dump.getAbsolutePath()); + } + } + public static void main(String[] args) throws IOException { @@ -145,6 +172,8 @@ launch("Java System Properties", "jinfo"); launch("java.threads", "jsnap"); + testHeapDump(); + // The test throws RuntimeException on error. // IOException is thrown if LingeredApp can't start because of some bad // environment condition