34 import jdk.test.lib.process.ProcessTools;
35 import jdk.test.lib.process.OutputAnalyzer;
36
37 public class TestWrongBarrierDisable {
38
39 public static void main(String[] args) throws Exception {
40 String[] concurrent = {
41 "ShenandoahLoadRefBarrier",
42 "ShenandoahCASBarrier",
43 "ShenandoahCloneBarrier",
44 "ShenandoahSATBBarrier",
45 "ShenandoahKeepAliveBarrier",
46 };
47
48 String[] traversal = {
49 "ShenandoahLoadRefBarrier",
50 "ShenandoahCASBarrier",
51 "ShenandoahCloneBarrier",
52 };
53
54 shouldFailAll("adaptive", concurrent);
55 shouldFailAll("static", concurrent);
56 shouldFailAll("compact", concurrent);
57 shouldFailAll("aggressive", concurrent);
58 shouldFailAll("traversal", traversal);
59 shouldPassAll("passive", concurrent);
60 shouldPassAll("passive", traversal);
61 }
62
63 private static void shouldFailAll(String h, String[] barriers) throws Exception {
64 for (String b : barriers) {
65 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
66 "-XX:+UnlockDiagnosticVMOptions",
67 "-XX:+UnlockExperimentalVMOptions",
68 "-XX:+UseShenandoahGC",
69 "-XX:ShenandoahGCHeuristics=" + h,
70 "-XX:-" + b,
71 "-version"
72 );
73 OutputAnalyzer output = new OutputAnalyzer(pb.start());
74 output.shouldNotHaveExitValue(0);
75 output.shouldContain("Heuristics needs ");
76 output.shouldContain("to work correctly");
77 }
78 }
79
80 private static void shouldPassAll(String h, String[] barriers) throws Exception {
81 for (String b : barriers) {
82 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
83 "-XX:+UnlockDiagnosticVMOptions",
84 "-XX:+UnlockExperimentalVMOptions",
85 "-XX:+UseShenandoahGC",
86 "-XX:ShenandoahGCHeuristics=" + h,
87 "-XX:-" + b,
88 "-version"
89 );
90 OutputAnalyzer output = new OutputAnalyzer(pb.start());
91 output.shouldHaveExitValue(0);
92 }
93 }
94
95 }
|
34 import jdk.test.lib.process.ProcessTools;
35 import jdk.test.lib.process.OutputAnalyzer;
36
37 public class TestWrongBarrierDisable {
38
39 public static void main(String[] args) throws Exception {
40 String[] concurrent = {
41 "ShenandoahLoadRefBarrier",
42 "ShenandoahCASBarrier",
43 "ShenandoahCloneBarrier",
44 "ShenandoahSATBBarrier",
45 "ShenandoahKeepAliveBarrier",
46 };
47
48 String[] traversal = {
49 "ShenandoahLoadRefBarrier",
50 "ShenandoahCASBarrier",
51 "ShenandoahCloneBarrier",
52 };
53
54 shouldFailAll("-XX:ShenandoahGCHeuristics=adaptive", concurrent);
55 shouldFailAll("-XX:ShenandoahGCHeuristics=static", concurrent);
56 shouldFailAll("-XX:ShenandoahGCHeuristics=compact", concurrent);
57 shouldFailAll("-XX:ShenandoahGCHeuristics=aggressive", concurrent);
58 shouldFailAll("-XX:ShenandoahGCMode=traversal", traversal);
59 shouldPassAll("-XX:ShenandoahGCMode=passive", concurrent);
60 shouldPassAll("-XX:ShenandoahGCMode=passive", traversal);
61 }
62
63 private static void shouldFailAll(String h, String[] barriers) throws Exception {
64 for (String b : barriers) {
65 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
66 "-XX:+UnlockDiagnosticVMOptions",
67 "-XX:+UnlockExperimentalVMOptions",
68 "-XX:+UseShenandoahGC",
69 h,
70 "-XX:-" + b,
71 "-version"
72 );
73 OutputAnalyzer output = new OutputAnalyzer(pb.start());
74 output.shouldNotHaveExitValue(0);
75 output.shouldContain("Heuristics needs ");
76 output.shouldContain("to work correctly");
77 }
78 }
79
80 private static void shouldPassAll(String h, String[] barriers) throws Exception {
81 for (String b : barriers) {
82 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
83 "-XX:+UnlockDiagnosticVMOptions",
84 "-XX:+UnlockExperimentalVMOptions",
85 "-XX:+UseShenandoahGC",
86 h,
87 "-XX:-" + b,
88 "-version"
89 );
90 OutputAnalyzer output = new OutputAnalyzer(pb.start());
91 output.shouldHaveExitValue(0);
92 }
93 }
94
95 }
|