25 * @test
26 * @bug 8130072
27 * @summary Check that Shared Dictionary is printed out with jcmd
28 * @requires vm.cds
29 * @library /test/lib
30 * @modules java.base/jdk.internal.misc
31 * @run main DumpSharedDictionary
32 */
33
34 import jdk.test.lib.cds.CDSTestUtils;
35 import jdk.test.lib.process.ProcessTools;
36 import jdk.test.lib.process.OutputAnalyzer;
37 import jdk.test.lib.JDKToolFinder;
38
39 public class DumpSharedDictionary {
40
41 public static void main(String[] args) throws Exception {
42 if (args.length == 0) {
43 // Start this process
44 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
45 "-XX:+UnlockDiagnosticVMOptions",
46 "-XX:SharedArchiveFile=./DumpSharedDictionary.jsa",
47 "-Xshare:dump");
48
49 OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "dump");
50 out.shouldHaveExitValue(0);
51
52 String testjdkPath = System.getProperty("test.jdk");
53
54 pb = ProcessTools.createJavaProcessBuilder(
55 "-XX:+UnlockDiagnosticVMOptions",
56 "-XX:SharedArchiveFile=./DumpSharedDictionary.jsa",
57 "-Dtest.jdk=" + testjdkPath,
58 "-Xshare:on", "DumpSharedDictionary", "test");
59
60 out = CDSTestUtils.executeAndLog(pb, "exec");
61 if (!CDSTestUtils.isUnableToMap(out)) {
62 out.shouldHaveExitValue(0);
63 }
64 } else {
65 // Grab my own PID
66 String pid = Long.toString(ProcessTools.getProcessId());
67
68 ProcessBuilder pb = new ProcessBuilder();
69 pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary"});
70 OutputAnalyzer output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary");
71 try {
72 output.shouldContain("Shared Dictionary statistics:");
73 output.shouldContain("Number of buckets");
74 output.shouldContain("Number of entries");
75 output.shouldContain("Maximum bucket size");
|
25 * @test
26 * @bug 8130072
27 * @summary Check that Shared Dictionary is printed out with jcmd
28 * @requires vm.cds
29 * @library /test/lib
30 * @modules java.base/jdk.internal.misc
31 * @run main DumpSharedDictionary
32 */
33
34 import jdk.test.lib.cds.CDSTestUtils;
35 import jdk.test.lib.process.ProcessTools;
36 import jdk.test.lib.process.OutputAnalyzer;
37 import jdk.test.lib.JDKToolFinder;
38
39 public class DumpSharedDictionary {
40
41 public static void main(String[] args) throws Exception {
42 if (args.length == 0) {
43 // Start this process
44 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
45 "-XX:SharedArchiveFile=./DumpSharedDictionary.jsa",
46 "-Xshare:dump");
47
48 OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "dump");
49 out.shouldHaveExitValue(0);
50
51 String testjdkPath = System.getProperty("test.jdk");
52
53 pb = ProcessTools.createJavaProcessBuilder(
54 "-XX:SharedArchiveFile=./DumpSharedDictionary.jsa",
55 "-Dtest.jdk=" + testjdkPath,
56 "-Xshare:on", "DumpSharedDictionary", "test");
57
58 out = CDSTestUtils.executeAndLog(pb, "exec");
59 if (!CDSTestUtils.isUnableToMap(out)) {
60 out.shouldHaveExitValue(0);
61 }
62 } else {
63 // Grab my own PID
64 String pid = Long.toString(ProcessTools.getProcessId());
65
66 ProcessBuilder pb = new ProcessBuilder();
67 pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.systemdictionary"});
68 OutputAnalyzer output = CDSTestUtils.executeAndLog(pb, "jcmd-systemdictionary");
69 try {
70 output.shouldContain("Shared Dictionary statistics:");
71 output.shouldContain("Number of buckets");
72 output.shouldContain("Number of entries");
73 output.shouldContain("Maximum bucket size");
|