aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authordbuck <none@none>2016-02-18 20:30:45 +0000
committerdbuck <none@none>2016-02-18 20:30:45 +0000
commit3122a9b4ef248ca9b3492111e90cc5a6dc3162a9 (patch)
tree0d417291265bf42035599944cdda9a47b72ff546 /test
parent9beae41283b5a4a64568fa529bebac8ddf228378 (diff)
downloadjdk8u_hotspot-3122a9b4ef248ca9b3492111e90cc5a6dc3162a9.tar.gz
8017462: G1: guarantee fails with UseDynamicNumberOfGCThreads
Reviewed-by: jmasa, tamao
Diffstat (limited to 'test')
-rw-r--r--test/gc/ergonomics/TestDynamicNumberOfGCThreads.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/test/gc/ergonomics/TestDynamicNumberOfGCThreads.java b/test/gc/ergonomics/TestDynamicNumberOfGCThreads.java
new file mode 100644
index 000000000..f6455761a
--- /dev/null
+++ b/test/gc/ergonomics/TestDynamicNumberOfGCThreads.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test TestDynamicNumberOfGCThreads
+ * @bug 8017462
+ * @summary Ensure that UseDynamicNumberOfGCThreads runs
+ * @requires vm.gc=="null"
+ * @key gc
+ * @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;
+ public static void main(String [] args) {
+ System.out.println("Creating garbage");
+ // create 128MB of garbage. This should result in at least one GC
+ for (int i = 0; i < 1024; i++) {
+ garbage = new byte[128 * 1024];
+ }
+ System.out.println("Done");
+ }
+ }
+}