27 * @key gc
28 * @requires vm.gc.Shenandoah & !vm.graal.enabled
29 * @library /test/lib
30 * @modules java.base/jdk.internal.misc
31 * java.management
32 * @run driver TestHeuristicsUnlock
33 */
34
35 import jdk.test.lib.process.ProcessTools;
36 import jdk.test.lib.process.OutputAnalyzer;
37
38 public class TestHeuristicsUnlock {
39
40 enum Mode {
41 PRODUCT,
42 DIAGNOSTIC,
43 EXPERIMENTAL,
44 }
45
46 public static void main(String[] args) throws Exception {
47 testWith("adaptive", Mode.PRODUCT);
48 testWith("static", Mode.PRODUCT);
49 testWith("compact", Mode.PRODUCT);
50
51 testWith("traversal", Mode.EXPERIMENTAL);
52
53 testWith("aggressive", Mode.DIAGNOSTIC);
54 testWith("passive", Mode.DIAGNOSTIC);
55 }
56
57 private static void testWith(String h, Mode mode) throws Exception {
58 if (false) { // When ShenandoahGC is experimental flag, this makes no sense to test
59 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
60 "-XX:-UnlockDiagnosticVMOptions",
61 "-XX:-UnlockExperimentalVMOptions",
62 "-XX:+UseShenandoahGC",
63 "-XX:ShenandoahGCHeuristics=" + h,
64 "-version"
65 );
66 OutputAnalyzer output = new OutputAnalyzer(pb.start());
67 switch (mode) {
68 case PRODUCT:
69 output.shouldHaveExitValue(0);
70 break;
71 case DIAGNOSTIC:
72 case EXPERIMENTAL:
73 output.shouldNotHaveExitValue(0);
74 break;
75 }
76 }
77
78 if (false) { // When ShenandoahGC is experimental flag, this makes no sense to test
79 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
80 "-XX:+UnlockDiagnosticVMOptions",
81 "-XX:-UnlockExperimentalVMOptions",
82 "-XX:+UseShenandoahGC",
83 "-XX:ShenandoahGCHeuristics=" + h,
84 "-version"
85 );
86 OutputAnalyzer output = new OutputAnalyzer(pb.start());
87 switch (mode) {
88 case PRODUCT:
89 case DIAGNOSTIC:
90 output.shouldHaveExitValue(0);
91 break;
92 case EXPERIMENTAL:
93 output.shouldNotHaveExitValue(0);
94 break;
95 }
96 }
97
98 {
99 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
100 "-XX:-UnlockDiagnosticVMOptions",
101 "-XX:+UnlockExperimentalVMOptions",
102 "-XX:+UseShenandoahGC",
103 "-XX:ShenandoahGCHeuristics=" + h,
104 "-version"
105 );
106 OutputAnalyzer output = new OutputAnalyzer(pb.start());
107 switch (mode) {
108 case PRODUCT:
109 case EXPERIMENTAL:
110 output.shouldHaveExitValue(0);
111 break;
112 case DIAGNOSTIC:
113 output.shouldNotHaveExitValue(0);
114 break;
115 }
116 }
117 }
118
119 }
|
27 * @key gc
28 * @requires vm.gc.Shenandoah & !vm.graal.enabled
29 * @library /test/lib
30 * @modules java.base/jdk.internal.misc
31 * java.management
32 * @run driver TestHeuristicsUnlock
33 */
34
35 import jdk.test.lib.process.ProcessTools;
36 import jdk.test.lib.process.OutputAnalyzer;
37
38 public class TestHeuristicsUnlock {
39
40 enum Mode {
41 PRODUCT,
42 DIAGNOSTIC,
43 EXPERIMENTAL,
44 }
45
46 public static void main(String[] args) throws Exception {
47 testWith("-XX:ShenandoahGCHeuristics=adaptive", Mode.PRODUCT);
48 testWith("-XX:ShenandoahGCHeuristics=static", Mode.PRODUCT);
49 testWith("-XX:ShenandoahGCHeuristics=compact", Mode.PRODUCT);
50
51 testWith("-XX:ShenandoahGCMode=traversal", Mode.EXPERIMENTAL);
52
53 testWith("-XX:ShenandoahGCHeuristics=aggressive", Mode.DIAGNOSTIC);
54 testWith("-XX:ShenandoahGCHeuristics=passive", Mode.DIAGNOSTIC);
55 }
56
57 private static void testWith(String h, Mode mode) throws Exception {
58 if (false) { // When ShenandoahGC is experimental flag, this makes no sense to test
59 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
60 "-XX:-UnlockDiagnosticVMOptions",
61 "-XX:-UnlockExperimentalVMOptions",
62 "-XX:+UseShenandoahGC",
63 h,
64 "-version"
65 );
66 OutputAnalyzer output = new OutputAnalyzer(pb.start());
67 switch (mode) {
68 case PRODUCT:
69 output.shouldHaveExitValue(0);
70 break;
71 case DIAGNOSTIC:
72 case EXPERIMENTAL:
73 output.shouldNotHaveExitValue(0);
74 break;
75 }
76 }
77
78 if (false) { // When ShenandoahGC is experimental flag, this makes no sense to test
79 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
80 "-XX:+UnlockDiagnosticVMOptions",
81 "-XX:-UnlockExperimentalVMOptions",
82 "-XX:+UseShenandoahGC",
83 h,
84 "-version"
85 );
86 OutputAnalyzer output = new OutputAnalyzer(pb.start());
87 switch (mode) {
88 case PRODUCT:
89 case DIAGNOSTIC:
90 output.shouldHaveExitValue(0);
91 break;
92 case EXPERIMENTAL:
93 output.shouldNotHaveExitValue(0);
94 break;
95 }
96 }
97
98 {
99 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
100 "-XX:-UnlockDiagnosticVMOptions",
101 "-XX:+UnlockExperimentalVMOptions",
102 "-XX:+UseShenandoahGC",
103 h,
104 "-version"
105 );
106 OutputAnalyzer output = new OutputAnalyzer(pb.start());
107 switch (mode) {
108 case PRODUCT:
109 case EXPERIMENTAL:
110 output.shouldHaveExitValue(0);
111 break;
112 case DIAGNOSTIC:
113 output.shouldNotHaveExitValue(0);
114 break;
115 }
116 }
117 }
118
119 }
|