26 * @summary Test that disabling wrong barriers fails early
27 * @requires vm.gc.Shenandoah
28 * @library /test/lib
29 * @run driver TestWrongBarrierEnable
30 */
31
32 import java.util.*;
33
34 import jdk.test.lib.process.ProcessTools;
35 import jdk.test.lib.process.OutputAnalyzer;
36
37 public class TestWrongBarrierEnable {
38
39 public static void main(String[] args) throws Exception {
40 String[] concurrent = {
41 "ShenandoahIUBarrier",
42 };
43 String[] iu = {
44 "ShenandoahSATBBarrier",
45 };
46
47 shouldFailAll("-XX:ShenandoahGCHeuristics=adaptive", concurrent);
48 shouldFailAll("-XX:ShenandoahGCHeuristics=static", concurrent);
49 shouldFailAll("-XX:ShenandoahGCHeuristics=compact", concurrent);
50 shouldFailAll("-XX:ShenandoahGCHeuristics=aggressive", concurrent);
51 shouldFailAll("-XX:ShenandoahGCMode=iu", iu);
52 shouldPassAll("-XX:ShenandoahGCMode=passive", concurrent);
53 shouldPassAll("-XX:ShenandoahGCMode=passive", iu);
54 }
55
56 private static void shouldFailAll(String h, String[] barriers) throws Exception {
57 for (String b : barriers) {
58 OutputAnalyzer output = ProcessTools.executeLimitedTestJava(
59 "-Xmx128m",
60 "-XX:+UnlockDiagnosticVMOptions",
61 "-XX:+UnlockExperimentalVMOptions",
62 "-XX:+UseShenandoahGC",
63 h,
64 "-XX:+" + b,
65 "-version"
66 );
67 output.shouldNotHaveExitValue(0);
68 output.shouldContain("GC mode needs ");
69 output.shouldContain("to work correctly");
70 }
71 }
72
73 private static void shouldPassAll(String h, String[] barriers) throws Exception {
74 for (String b : barriers) {
75 OutputAnalyzer output = ProcessTools.executeLimitedTestJava(
76 "-Xmx128m",
77 "-XX:+UnlockDiagnosticVMOptions",
78 "-XX:+UnlockExperimentalVMOptions",
79 "-XX:+UseShenandoahGC",
80 h,
81 "-XX:+" + b,
82 "-version"
83 );
84 output.shouldHaveExitValue(0);
85 }
86 }
87
88 }
|
26 * @summary Test that disabling wrong barriers fails early
27 * @requires vm.gc.Shenandoah
28 * @library /test/lib
29 * @run driver TestWrongBarrierEnable
30 */
31
32 import java.util.*;
33
34 import jdk.test.lib.process.ProcessTools;
35 import jdk.test.lib.process.OutputAnalyzer;
36
37 public class TestWrongBarrierEnable {
38
39 public static void main(String[] args) throws Exception {
40 String[] concurrent = {
41 "ShenandoahIUBarrier",
42 };
43 String[] iu = {
44 "ShenandoahSATBBarrier",
45 };
46 String[] generational = {
47 "ShenandoahCardBarrier"
48 };
49 String[] all = {
50 "ShenandoahSATBBarrier", "ShenandoahCardBarrier"
51 };
52
53 shouldFailAll("-XX:ShenandoahGCHeuristics=adaptive", concurrent);
54 shouldFailAll("-XX:ShenandoahGCHeuristics=static", concurrent);
55 shouldFailAll("-XX:ShenandoahGCHeuristics=compact", concurrent);
56 shouldFailAll("-XX:ShenandoahGCHeuristics=aggressive", concurrent);
57 shouldFailAll("-XX:ShenandoahGCMode=iu", iu);
58 shouldPassAll("-XX:ShenandoahGCMode=passive", concurrent);
59 shouldPassAll("-XX:ShenandoahGCMode=passive", iu);
60 shouldPassAll("-XX:ShenandoahGCMode=generational", all);
61 shouldFailAll("-XX:ShenandoahGCMode=satb", generational);
62 shouldFailAll("-XX:ShenandoahGCMode=passive", generational);
63 }
64
65 private static void shouldFailAll(String h, String[] barriers) throws Exception {
66 for (String b : barriers) {
67 OutputAnalyzer output = ProcessTools.executeLimitedTestJava(
68 "-Xmx128m",
69 "-XX:+UnlockDiagnosticVMOptions",
70 "-XX:+UnlockExperimentalVMOptions",
71 "-XX:+UseShenandoahGC",
72 h,
73 "-XX:+" + b,
74 "-version"
75 );
76 output.shouldNotHaveExitValue(0);
77 output.shouldContain("GC mode needs ");
78 output.shouldContain("to work correctly");
79 }
80 }
81
82 private static void shouldPassAll(String h, String[] barriers) throws Exception {
83 for (String b : barriers) {
84 OutputAnalyzer output = ProcessTools.executeLimitedTestJava(
85 "-Xmx128m",
86 "-XX:+UnlockDiagnosticVMOptions",
87 "-XX:+UnlockExperimentalVMOptions",
88 "-XX:+UseShenandoahGC",
89 h,
90 "-XX:+" + b,
91 "-version"
92 );
93 output.shouldHaveExitValue(0);
94 }
95 }
96 }
|