1 /*
2 * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /*
25 * @test
26 * @bug 8149991
27 * @summary safepoint+cleanup=info should have output from the code
28 * @library /test/lib
29 * @modules java.base/jdk.internal.misc
30 * java.management
31 * @run driver SafepointCleanupTest
32 */
33
34 import jdk.test.lib.process.OutputAnalyzer;
35 import jdk.test.lib.process.ProcessTools;
36
37 public class SafepointCleanupTest {
38 static void analyzeOutputOn(ProcessBuilder pb) throws Exception {
39 OutputAnalyzer output = new OutputAnalyzer(pb.start());
40 output.shouldContain("[safepoint,cleanup]");
41 output.shouldContain("safepoint cleanup tasks");
42 output.shouldContain("deflating global idle monitors");
43 output.shouldContain("deflating per-thread idle monitors");
44 output.shouldContain("updating inline caches");
45 output.shouldContain("compilation policy safepoint handler");
46 output.shouldContain("purging class loader data graph");
47 output.shouldHaveExitValue(0);
48 }
49
50 static void analyzeOutputOff(ProcessBuilder pb) throws Exception {
51 OutputAnalyzer output = new OutputAnalyzer(pb.start());
52 output.shouldNotContain("[safepoint,cleanup]");
53 output.shouldHaveExitValue(0);
54 }
55
56 public static void main(String[] args) throws Exception {
57 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xlog:safepoint+cleanup=info",
58 InnerClass.class.getName());
59 analyzeOutputOn(pb);
60
61 pb = ProcessTools.createJavaProcessBuilder("-XX:+TraceSafepointCleanupTime",
62 InnerClass.class.getName());
63 analyzeOutputOn(pb);
64
65 pb = ProcessTools.createJavaProcessBuilder("-Xlog:safepoint+cleanup=off",
66 InnerClass.class.getName());
67 analyzeOutputOff(pb);
68
69 pb = ProcessTools.createJavaProcessBuilder("-XX:-TraceSafepointCleanupTime",
70 InnerClass.class.getName());
71 analyzeOutputOff(pb);
72 }
73
74 public static class InnerClass {
75 public static void main(String[] args) throws Exception {
76 System.out.println("Safepoint Cleanup test");
77 }
78 }
79 }
|
1 /*
2 * Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /*
25 * @test
26 * @bug 8149991
27 * @summary safepoint+cleanup=info should have output from the code
28 * @library /test/lib
29 * @modules java.base/jdk.internal.misc
30 * java.management
31 * @run driver SafepointCleanupTest
32 * @run driver SafepointCleanupTest -XX:+AsyncDeflateIdleMonitors
33 */
34
35 import jdk.test.lib.process.OutputAnalyzer;
36 import jdk.test.lib.process.ProcessTools;
37
38 public class SafepointCleanupTest {
39 static final String ASYNC_DISABLE_OPTION = "-XX:-AsyncDeflateIdleMonitors";
40 static final String ASYNC_ENABLE_OPTION = "-XX:+AsyncDeflateIdleMonitors";
41 static final String UNLOCK_DIAG_OPTION = "-XX:+UnlockDiagnosticVMOptions";
42
43 static void analyzeOutputOn(ProcessBuilder pb) throws Exception {
44 OutputAnalyzer output = new OutputAnalyzer(pb.start());
45 output.shouldContain("[safepoint,cleanup]");
46 output.shouldContain("safepoint cleanup tasks");
47 output.shouldContain("deflating global idle monitors");
48 output.shouldContain("deflating per-thread idle monitors");
49 output.shouldContain("updating inline caches");
50 output.shouldContain("compilation policy safepoint handler");
51 output.shouldContain("purging class loader data graph");
52 output.shouldHaveExitValue(0);
53 }
54
55 static void analyzeOutputOff(ProcessBuilder pb) throws Exception {
56 OutputAnalyzer output = new OutputAnalyzer(pb.start());
57 output.shouldNotContain("[safepoint,cleanup]");
58 output.shouldHaveExitValue(0);
59 }
60
61 public static void main(String[] args) throws Exception {
62 String async_option;
63 if (args.length == 0) {
64 // By default test deflating idle monitors at a safepoint.
65 async_option = ASYNC_DISABLE_OPTION;
66 } else {
67 async_option = args[0];
68 }
69 if (!async_option.equals(ASYNC_DISABLE_OPTION) &&
70 !async_option.equals(ASYNC_ENABLE_OPTION)) {
71 throw new RuntimeException("Unknown async_option value: '"
72 + async_option + "'");
73 }
74
75 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xlog:safepoint+cleanup=info",
76 UNLOCK_DIAG_OPTION,
77 async_option,
78 InnerClass.class.getName());
79 analyzeOutputOn(pb);
80
81 pb = ProcessTools.createJavaProcessBuilder("-XX:+TraceSafepointCleanupTime",
82 UNLOCK_DIAG_OPTION,
83 async_option,
84 InnerClass.class.getName());
85 analyzeOutputOn(pb);
86
87 pb = ProcessTools.createJavaProcessBuilder("-Xlog:safepoint+cleanup=off",
88 UNLOCK_DIAG_OPTION,
89 async_option,
90 InnerClass.class.getName());
91 analyzeOutputOff(pb);
92
93 pb = ProcessTools.createJavaProcessBuilder("-XX:-TraceSafepointCleanupTime",
94 UNLOCK_DIAG_OPTION,
95 async_option,
96 InnerClass.class.getName());
97 analyzeOutputOff(pb);
98 }
99
100 public static class InnerClass {
101 public static void main(String[] args) throws Exception {
102 System.out.println("Safepoint Cleanup test");
103 }
104 }
105 }
|