< prev index next >
test/gc/ergonomics/TestDynamicNumberOfGCThreads.java
Print this page
@@ -30,30 +30,46 @@
* @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");
+ testDynamicNumberOfGCThreads("UseConcMarkSweepGC", true);
+ testDynamicNumberOfGCThreads("UseConcMarkSweepGC", false);
- testDynamicNumberOfGCThreads("UseG1GC");
+ testDynamicNumberOfGCThreads("UseG1GC", true);
+ testDynamicNumberOfGCThreads("UseG1GC", false);
- testDynamicNumberOfGCThreads("UseParallelGC");
+ testDynamicNumberOfGCThreads("UseParallelGC", true);
+ testDynamicNumberOfGCThreads("UseParallelGC", false);
}
private static void verifyDynamicNumberOfGCThreads(OutputAnalyzer output) {
+ output.shouldHaveExitValue(0); // test should run succesfully
output.shouldContain("new_active_workers");
- output.shouldHaveExitValue(0);
}
- private static void testDynamicNumberOfGCThreads(String gcFlag) throws Exception {
+ private static void testDynamicNumberOfGCThreads(String gcFlag, boolean emulate_uniprocessor) throws Exception {
// UseDynamicNumberOfGCThreads and TraceDynamicGCThreads enabled
- ProcessBuilder pb_enabled =
- ProcessTools.createJavaProcessBuilder("-XX:+" + gcFlag, "-Xmx10M", "-XX:+PrintGCDetails", "-XX:+UseDynamicNumberOfGCThreads", "-XX:+TraceDynamicGCThreads", GCTest.class.getName());
+ 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 >