mirror of
https://github.com/openjdk/jdk.git
synced 2026-01-28 12:09:14 +00:00
8319161: GC: Make TestParallelGCThreads use createTestJavaProcessBuilder
Reviewed-by: stefank, iwalulya
This commit is contained in:
parent
3a8a6e07f2
commit
24244e4121
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2014, 2025, 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
|
||||
@ -24,30 +24,86 @@
|
||||
package gc.arguments;
|
||||
|
||||
/*
|
||||
* @test TestParallelGCThreads
|
||||
* @test id=DefaultValue
|
||||
* @bug 8059527 8081382
|
||||
* @summary Tests argument processing for ParallelGCThreads
|
||||
* @summary Tests default value of ParallelGCThreads
|
||||
* @library /test/lib
|
||||
* @library /
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* java.management
|
||||
* @build jdk.test.whitebox.WhiteBox
|
||||
* @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox
|
||||
* @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI gc.arguments.TestParallelGCThreads
|
||||
* @requires vm.gc.Z | vm.gc.Parallel | vm.gc.G1
|
||||
* @run driver gc.arguments.TestParallelGCThreads DefaultValue
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test id=Z
|
||||
* @bug 8059527 8081382
|
||||
* @summary Tests argument processing for ParallelGCThreads with ZGC
|
||||
* @library /test/lib
|
||||
* @library /
|
||||
* @requires vm.gc.Z
|
||||
* @run driver gc.arguments.TestParallelGCThreads Z
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test id=Parallel
|
||||
* @bug 8059527 8081382
|
||||
* @summary Tests argument processing for ParallelGCThreads with Parallel GC
|
||||
* @library /test/lib
|
||||
* @library /
|
||||
* @requires vm.gc.Parallel
|
||||
* @run driver gc.arguments.TestParallelGCThreads Parallel
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test id=G1
|
||||
* @bug 8059527 8081382
|
||||
* @summary Tests argument processing for ParallelGCThreads with G1 GC
|
||||
* @library /test/lib
|
||||
* @library /
|
||||
* @requires vm.gc.G1
|
||||
* @run driver gc.arguments.TestParallelGCThreads G1
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test id=MaxValue
|
||||
* @bug 8059527 8081382
|
||||
* @summary Tests max value for ParallelGCThreads
|
||||
* @library /test/lib
|
||||
* @library /
|
||||
* @requires vm.gc.Serial
|
||||
* @run driver gc.arguments.TestParallelGCThreads MaxValue
|
||||
*/
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import jdk.test.lib.Asserts;
|
||||
import jdk.test.lib.process.OutputAnalyzer;
|
||||
import jtreg.SkippedException;
|
||||
import jdk.test.whitebox.gc.GC;
|
||||
|
||||
public class TestParallelGCThreads {
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
testFlags();
|
||||
testDefaultValue();
|
||||
if (args.length == 0) {
|
||||
throw new IllegalArgumentException("Test type must be specified as argument");
|
||||
}
|
||||
|
||||
String testType = args[0];
|
||||
|
||||
switch (testType) {
|
||||
case "DefaultValue":
|
||||
testDefaultValue();
|
||||
break;
|
||||
case "Z":
|
||||
testFlags("-XX:+UseZGC");
|
||||
break;
|
||||
case "Parallel":
|
||||
testFlags("-XX:+UseParallelGC");
|
||||
break;
|
||||
case "G1":
|
||||
testFlags("-XX:+UseG1GC");
|
||||
break;
|
||||
case "MaxValue":
|
||||
testMaxValue();
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unknown test type \"" + testType + "\"");
|
||||
}
|
||||
}
|
||||
|
||||
private static final String flagName = "ParallelGCThreads";
|
||||
@ -55,8 +111,8 @@ public class TestParallelGCThreads {
|
||||
// uint ParallelGCThreads = 23 {product}
|
||||
private static final String printFlagsFinalPattern = " *uint *" + flagName + " *:?= *(\\d+) *\\{product\\} *";
|
||||
|
||||
public static void testDefaultValue() throws Exception {
|
||||
OutputAnalyzer output = GCArguments.executeLimitedTestJava(
|
||||
private static void testDefaultValue() throws Exception {
|
||||
OutputAnalyzer output = GCArguments.executeTestJava(
|
||||
"-XX:+UnlockExperimentalVMOptions", "-XX:+PrintFlagsFinal", "-version");
|
||||
|
||||
String value = output.firstMatch(printFlagsFinalPattern, 1);
|
||||
@ -64,10 +120,10 @@ public class TestParallelGCThreads {
|
||||
try {
|
||||
Asserts.assertNotNull(value, "Couldn't find uint flag " + flagName);
|
||||
|
||||
Long longValue = new Long(value);
|
||||
Long longValue = Long.valueOf(value);
|
||||
|
||||
// Sanity check that we got a non-zero value.
|
||||
Asserts.assertNotEquals(longValue, "0");
|
||||
Asserts.assertNotEquals(longValue, 0L);
|
||||
|
||||
output.shouldHaveExitValue(0);
|
||||
} catch (Exception e) {
|
||||
@ -76,41 +132,28 @@ public class TestParallelGCThreads {
|
||||
}
|
||||
}
|
||||
|
||||
public static void testFlags() throws Exception {
|
||||
// For each parallel collector (G1, Parallel)
|
||||
List<String> supportedGC = new ArrayList<String>();
|
||||
private static void testFlags(String gcFlag) throws Exception {
|
||||
|
||||
if (GC.G1.isSupported()) {
|
||||
supportedGC.add("G1");
|
||||
}
|
||||
if (GC.Parallel.isSupported()) {
|
||||
supportedGC.add("Parallel");
|
||||
}
|
||||
// Make sure the VM does not allow ParallelGCThreads set to 0
|
||||
OutputAnalyzer output = GCArguments.executeTestJava(
|
||||
gcFlag,
|
||||
"-XX:ParallelGCThreads=0",
|
||||
"-XX:+PrintFlagsFinal",
|
||||
"-version");
|
||||
output.shouldHaveExitValue(1);
|
||||
|
||||
if (supportedGC.isEmpty()) {
|
||||
throw new SkippedException("Skipping test because none of G1/Parallel is supported.");
|
||||
}
|
||||
|
||||
for (String gc : supportedGC) {
|
||||
// Make sure the VM does not allow ParallelGCThreads set to 0
|
||||
OutputAnalyzer output = GCArguments.executeLimitedTestJava(
|
||||
"-XX:+Use" + gc + "GC",
|
||||
"-XX:ParallelGCThreads=0",
|
||||
// Do some basic testing to ensure the flag updates the count
|
||||
for (long i = 1; i <= 3; i++) {
|
||||
long count = getParallelGCThreadCount(
|
||||
gcFlag,
|
||||
"-XX:ParallelGCThreads=" + i,
|
||||
"-XX:+PrintFlagsFinal",
|
||||
"-version");
|
||||
output.shouldHaveExitValue(1);
|
||||
|
||||
// Do some basic testing to ensure the flag updates the count
|
||||
for (long i = 1; i <= 3; i++) {
|
||||
long count = getParallelGCThreadCount(
|
||||
"-XX:+Use" + gc + "GC",
|
||||
"-XX:ParallelGCThreads=" + i,
|
||||
"-XX:+PrintFlagsFinal",
|
||||
"-version");
|
||||
Asserts.assertEQ(count, i, "Specifying ParallelGCThreads=" + i + " for " + gc + "GC does not set the thread count properly!");
|
||||
}
|
||||
Asserts.assertEQ(count, i, "Specifying ParallelGCThreads=" + i + " for \"" + gcFlag + "\" does not set the thread count properly!");
|
||||
}
|
||||
}
|
||||
|
||||
private static void testMaxValue() throws Exception {
|
||||
// Test the max value for ParallelGCThreads
|
||||
// So setting ParallelGCThreads=2147483647 should give back 2147483647
|
||||
long count = getParallelGCThreadCount(
|
||||
@ -122,7 +165,7 @@ public class TestParallelGCThreads {
|
||||
}
|
||||
|
||||
public static long getParallelGCThreadCount(String... flags) throws Exception {
|
||||
OutputAnalyzer output = GCArguments.executeLimitedTestJava(flags);
|
||||
OutputAnalyzer output = GCArguments.executeTestJava(flags);
|
||||
output.shouldHaveExitValue(0);
|
||||
String stdout = output.getStdout();
|
||||
return FlagsValue.getFlagLongValue("ParallelGCThreads", stdout);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user