23 */
24
25 /* @test TestWrongBarrierDisable
26 * @summary Test that disabling wrong barriers fails early
27 * @key gc
28 * @requires vm.gc.Shenandoah & !vm.graal.enabled
29 * @library /test/lib
30 * @run main/othervm TestWrongBarrierDisable
31 */
32
33 import java.util.*;
34
35 import jdk.test.lib.process.ProcessTools;
36 import jdk.test.lib.process.OutputAnalyzer;
37
38 public class TestWrongBarrierDisable {
39
40 public static void main(String[] args) throws Exception {
41 String[] concurrent = {
42 "ShenandoahLoadRefBarrier",
43 "ShenandoahCASBarrier",
44 "ShenandoahCloneBarrier",
45 "ShenandoahSATBBarrier",
46 };
47
48 shouldFailAll("-XX:ShenandoahGCHeuristics=adaptive", concurrent);
49 shouldFailAll("-XX:ShenandoahGCHeuristics=static", concurrent);
50 shouldFailAll("-XX:ShenandoahGCHeuristics=compact", concurrent);
51 shouldFailAll("-XX:ShenandoahGCHeuristics=aggressive", concurrent);
52 shouldPassAll("-XX:ShenandoahGCMode=passive", concurrent);
53 }
54
55 private static void shouldFailAll(String h, String[] barriers) throws Exception {
56 for (String b : barriers) {
57 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
58 "-XX:+UnlockDiagnosticVMOptions",
59 "-XX:+UnlockExperimentalVMOptions",
60 "-XX:+UseShenandoahGC",
61 h,
62 "-XX:-" + b,
63 "-version"
64 );
65 OutputAnalyzer output = new OutputAnalyzer(pb.start());
66 output.shouldNotHaveExitValue(0);
67 output.shouldContain("Heuristics needs ");
68 output.shouldContain("to work correctly");
69 }
70 }
71
72 private static void shouldPassAll(String h, String[] barriers) throws Exception {
|
23 */
24
25 /* @test TestWrongBarrierDisable
26 * @summary Test that disabling wrong barriers fails early
27 * @key gc
28 * @requires vm.gc.Shenandoah & !vm.graal.enabled
29 * @library /test/lib
30 * @run main/othervm TestWrongBarrierDisable
31 */
32
33 import java.util.*;
34
35 import jdk.test.lib.process.ProcessTools;
36 import jdk.test.lib.process.OutputAnalyzer;
37
38 public class TestWrongBarrierDisable {
39
40 public static void main(String[] args) throws Exception {
41 String[] concurrent = {
42 "ShenandoahLoadRefBarrier",
43 "ShenandoahSATBBarrier",
44 "ShenandoahCASBarrier",
45 "ShenandoahCloneBarrier",
46 };
47 String[] iu = {
48 "ShenandoahLoadRefBarrier",
49 "ShenandoahCASBarrier",
50 "ShenandoahCloneBarrier",
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 }
61
62 private static void shouldFailAll(String h, String[] barriers) throws Exception {
63 for (String b : barriers) {
64 ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
65 "-XX:+UnlockDiagnosticVMOptions",
66 "-XX:+UnlockExperimentalVMOptions",
67 "-XX:+UseShenandoahGC",
68 h,
69 "-XX:-" + b,
70 "-version"
71 );
72 OutputAnalyzer output = new OutputAnalyzer(pb.start());
73 output.shouldNotHaveExitValue(0);
74 output.shouldContain("Heuristics needs ");
75 output.shouldContain("to work correctly");
76 }
77 }
78
79 private static void shouldPassAll(String h, String[] barriers) throws Exception {
|