< prev index next >

test/gc/shenandoah/TestPeriodicGC.java

Print this page
rev 10604 : [backport] Comprehensible GC trigger logging


  26  * @summary Test that periodic GC is working
  27  * @key gc
  28  * @library /testlibrary
  29  * @run driver TestPeriodicGC
  30  */
  31 
  32 import java.util.*;
  33 
  34 import com.oracle.java.testlibrary.*;
  35 
  36 public class TestPeriodicGC {
  37 
  38     public static void testWith(String msg, boolean periodic, String... args) throws Exception {
  39         String[] cmds = Arrays.copyOf(args, args.length + 2);
  40         cmds[args.length] = TestPeriodicGC.class.getName();
  41         cmds[args.length + 1] = "test";
  42         ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(cmds);
  43 
  44         OutputAnalyzer output = new OutputAnalyzer(pb.start());
  45         output.shouldHaveExitValue(0);
  46         if (periodic && !output.getOutput().contains("Periodic GC")) {
  47             throw new AssertionError(msg + ": Should have periodic GC in logs");
  48         }
  49         if (!periodic && output.getOutput().contains("Periodic GC")) {
  50             throw new AssertionError(msg + ": Should not have periodic GC in logs");
  51         }
  52     }
  53 
  54     public static void main(String[] args) throws Exception {
  55         if (args.length > 0 && args[0].equals("test")) {
  56            Thread.sleep(5000); // stay idle
  57            return;
  58         }
  59 
  60         String[] enabled = new String[] {
  61            "adaptive",
  62            "compact",
  63            "static"
  64         };
  65 
  66         String[] disabled = new String[] {
  67            "aggressive",
  68            "passive",
  69         };
  70 
  71         for (String h : enabled) {
  72             testWith("Short period with " + h,
  73                 true,
  74                 "-XX:+PrintGCDetails",
  75                 "-XX:+UseShenandoahGC",
  76                 "-XX:+UnlockDiagnosticVMOptions",
  77                 "-XX:+UnlockExperimentalVMOptions",
  78                 "-XX:ShenandoahGCHeuristics=" + h,
  79                 "-XX:ShenandoahGuaranteedGCInterval=1000"
  80             );
  81 
  82             testWith("Long period with " + h,
  83                 false,
  84                 "-XX:+PrintGCDetails",
  85                 "-XX:+UseShenandoahGC",
  86                 "-XX:+UnlockDiagnosticVMOptions",
  87                 "-XX:+UnlockExperimentalVMOptions",
  88                 "-XX:ShenandoahGCHeuristics=" + h,
  89                 "-XX:ShenandoahGuaranteedGCInterval=100000" // deliberately too long
  90             );
  91         }
  92 
  93         for (String h : disabled) {
  94             testWith("Short period with " + h,
  95                 false,
  96                 "-XX:+PrintGCDetails",
  97                 "-XX:+UseShenandoahGC",
  98                 "-XX:+UnlockDiagnosticVMOptions",
  99                 "-XX:+UnlockExperimentalVMOptions",
 100                 "-XX:ShenandoahGCHeuristics=" + h,
 101                 "-XX:ShenandoahGuaranteedGCInterval=1000"
 102             );
 103         }
 104     }
 105 
 106 }


  26  * @summary Test that periodic GC is working
  27  * @key gc
  28  * @library /testlibrary
  29  * @run driver TestPeriodicGC
  30  */
  31 
  32 import java.util.*;
  33 
  34 import com.oracle.java.testlibrary.*;
  35 
  36 public class TestPeriodicGC {
  37 
  38     public static void testWith(String msg, boolean periodic, String... args) throws Exception {
  39         String[] cmds = Arrays.copyOf(args, args.length + 2);
  40         cmds[args.length] = TestPeriodicGC.class.getName();
  41         cmds[args.length + 1] = "test";
  42         ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(cmds);
  43 
  44         OutputAnalyzer output = new OutputAnalyzer(pb.start());
  45         output.shouldHaveExitValue(0);
  46         if (periodic && !output.getOutput().contains("Trigger: Time since last GC")) {
  47             throw new AssertionError(msg + ": Should have periodic GC in logs");
  48         }
  49         if (!periodic && output.getOutput().contains("Trigger: Time since last GC")) {
  50             throw new AssertionError(msg + ": Should not have periodic GC in logs");
  51         }
  52     }
  53 
  54     public static void main(String[] args) throws Exception {
  55         if (args.length > 0 && args[0].equals("test")) {
  56            Thread.sleep(5000); // stay idle
  57            return;
  58         }
  59 
  60         String[] enabled = new String[] {
  61            "adaptive",
  62            "compact",
  63            "static"
  64         };
  65 
  66         String[] disabled = new String[] {
  67            "aggressive",
  68            "passive",
  69         };
  70 
  71         for (String h : enabled) {
  72             testWith("Short period with " + h,
  73                 true,
  74                 "-verbose:gc",
  75                 "-XX:+UseShenandoahGC",
  76                 "-XX:+UnlockDiagnosticVMOptions",
  77                 "-XX:+UnlockExperimentalVMOptions",
  78                 "-XX:ShenandoahGCHeuristics=" + h,
  79                 "-XX:ShenandoahGuaranteedGCInterval=1000"
  80             );
  81 
  82             testWith("Long period with " + h,
  83                 false,
  84                 "-verbose:gc",
  85                 "-XX:+UseShenandoahGC",
  86                 "-XX:+UnlockDiagnosticVMOptions",
  87                 "-XX:+UnlockExperimentalVMOptions",
  88                 "-XX:ShenandoahGCHeuristics=" + h,
  89                 "-XX:ShenandoahGuaranteedGCInterval=100000" // deliberately too long
  90             );
  91         }
  92 
  93         for (String h : disabled) {
  94             testWith("Short period with " + h,
  95                 false,
  96                 "-verbose:gc",
  97                 "-XX:+UseShenandoahGC",
  98                 "-XX:+UnlockDiagnosticVMOptions",
  99                 "-XX:+UnlockExperimentalVMOptions",
 100                 "-XX:ShenandoahGCHeuristics=" + h,
 101                 "-XX:ShenandoahGuaranteedGCInterval=1000"
 102             );
 103         }
 104     }
 105 
 106 }
< prev index next >