< prev index next >
test/gc/ergonomics/TestDynamicNumberOfGCThreads.java
Print this page
*** 30,59 ****
* @library /testlibrary
*/
import com.oracle.java.testlibrary.ProcessTools;
import com.oracle.java.testlibrary.OutputAnalyzer;
public class TestDynamicNumberOfGCThreads {
public static void main(String[] args) throws Exception {
! testDynamicNumberOfGCThreads("UseConcMarkSweepGC");
! testDynamicNumberOfGCThreads("UseG1GC");
! testDynamicNumberOfGCThreads("UseParallelGC");
}
private static void verifyDynamicNumberOfGCThreads(OutputAnalyzer output) {
output.shouldContain("new_active_workers");
- output.shouldHaveExitValue(0);
}
! private static void testDynamicNumberOfGCThreads(String gcFlag) throws Exception {
// UseDynamicNumberOfGCThreads and TraceDynamicGCThreads enabled
! ProcessBuilder pb_enabled =
! ProcessTools.createJavaProcessBuilder("-XX:+" + gcFlag, "-Xmx10M", "-XX:+PrintGCDetails", "-XX:+UseDynamicNumberOfGCThreads", "-XX:+TraceDynamicGCThreads", GCTest.class.getName());
verifyDynamicNumberOfGCThreads(new OutputAnalyzer(pb_enabled.start()));
}
static class GCTest {
private static byte[] garbage;
--- 30,75 ----
* @library /testlibrary
*/
import com.oracle.java.testlibrary.ProcessTools;
import com.oracle.java.testlibrary.OutputAnalyzer;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.Collections;
public class TestDynamicNumberOfGCThreads {
public static void main(String[] args) throws Exception {
! testDynamicNumberOfGCThreads("UseConcMarkSweepGC", true);
! testDynamicNumberOfGCThreads("UseConcMarkSweepGC", false);
! testDynamicNumberOfGCThreads("UseG1GC", true);
! testDynamicNumberOfGCThreads("UseG1GC", false);
! testDynamicNumberOfGCThreads("UseParallelGC", true);
! testDynamicNumberOfGCThreads("UseParallelGC", false);
}
private static void verifyDynamicNumberOfGCThreads(OutputAnalyzer output) {
+ output.shouldHaveExitValue(0); // test should run succesfully
output.shouldContain("new_active_workers");
}
! private static void testDynamicNumberOfGCThreads(String gcFlag, boolean emulate_uniprocessor) throws Exception {
// UseDynamicNumberOfGCThreads and TraceDynamicGCThreads enabled
! String[] defaults = {"-XX:+" + gcFlag, "-Xmx10M", "-XX:+PrintGCDetails", "-XX:+UseDynamicNumberOfGCThreads", "-XX:+TraceDynamicGCThreads", GCTest.class.getName()};
! ArrayList<String> args = new ArrayList();
! Collections.addAll(args, defaults);
! Arrays.asList(defaults);
! // Ensure it works on uniprocessors or if user specifies -XX:ParallelGCThread=1.
! if (emulate_uniprocessor) {
! args.add(0, "-XX:+ForceDynamicNumberOfGCThreads");
! args.add(0, "-XX:ParallelGCThreads=1");
! }
! String[] finalArgs = new String[args.size()];
! finalArgs = args.toArray(finalArgs);
! ProcessBuilder pb_enabled = ProcessTools.createJavaProcessBuilder(finalArgs);
verifyDynamicNumberOfGCThreads(new OutputAnalyzer(pb_enabled.start()));
}
static class GCTest {
private static byte[] garbage;
< prev index next >