Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8244010: Simplify usages of ProcessTools.createJavaProcessBuilder in our tests #1397

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion test/hotspot/jtreg/compiler/ciReplay/CiReplayBase.java
Expand Up @@ -141,7 +141,7 @@ public boolean generateReplay(boolean needCoreDump, String... vmopts) {
RUN_SHELL_NO_LIMIT, options.toArray(new String[0])));
} else {
crashOut = ProcessTools.executeProcess(ProcessTools.createJavaProcessBuilder(true,
options.toArray(new String[0])));
options));
}
crashOutputString = crashOut.getOutput();
Asserts.assertNotEquals(crashOut.getExitValue(), 0, "Crash JVM exits gracefully");
Expand Down
Expand Up @@ -264,7 +264,7 @@ public static void main(String... args) throws Exception {
javaFlags.add("@"+GENERATED_TESTCLASSES_FILENAME);

ProcessBuilder javaPB = ProcessTools.createJavaProcessBuilder(true,
javaFlags.toArray(new String[javaFlags.size()]));
javaFlags);
System.out.println("INFO: run command: " + String.join(" ", javaPB.command()));

OutputAnalyzer outputAnalyzer = new OutputAnalyzer(javaPB.start());
Expand Down
Expand Up @@ -146,8 +146,7 @@ public static OutputAnalyzer runTest(Class<? extends Expr> expr,
new Integer(iterations).toString()
});

OutputAnalyzer outputAnalyzer = ProcessTools.
executeTestJvm(vmOpts.toArray(new String[vmOpts.size()]));
OutputAnalyzer outputAnalyzer = ProcessTools.executeTestJvm(vmOpts);

outputAnalyzer.shouldHaveExitValue(0);

Expand Down
Expand Up @@ -61,8 +61,7 @@ static void runTest(Class<?> test, String... extraArgs) throws Exception {
argsList.add(test.getName());
argsList.add(Integer.toString(ITERATIONS));

ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
argsList.toArray(new String[argsList.size()]));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(argsList);

OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());

Expand Down
Expand Up @@ -64,8 +64,11 @@ public static void main(String[] args) throws Exception {
ProcessBuilder pb;
OutputAnalyzer out;

String[] arguments = {"-XX:+UnlockExperimentalVMOptions", "-XX:+EnableJVMCI", "-XX:+PrintFlagsFinal", "-version"};
pb = ProcessTools.createJavaProcessBuilder(arguments);
pb = ProcessTools.createJavaProcessBuilder(
"-XX:+UnlockExperimentalVMOptions",
"-XX:+EnableJVMCI",
"-XX:+PrintFlagsFinal",
"-version");
out = new OutputAnalyzer(pb.start());

out.shouldHaveExitValue(0);
Expand Down
Expand Up @@ -42,12 +42,15 @@ public class TestLinkageErrorInGenerateOopMap {
public static void main(String args[]) throws Exception {
if (args.length == 0) {
// Spawn new VM instance to execute test
String[] flags = {"-noverify", "-XX:-TieredCompilation",
"-XX:CompileCommand=dontinline,compiler/linkage/OSRWithBadOperandStack.m*",
"-XX:-CreateCoredumpOnCrash",
"-Xmx64m",
"compiler.linkage.TestLinkageErrorInGenerateOopMap", "run"};
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(flags);
String[] flags = {};
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
"-noverify",
"-XX:-TieredCompilation",
"-XX:CompileCommand=dontinline,compiler/linkage/OSRWithBadOperandStack.m*",
"-XX:-CreateCoredumpOnCrash",
"-Xmx64m",
"compiler.linkage.TestLinkageErrorInGenerateOopMap",
"run");
OutputAnalyzer out = new OutputAnalyzer(pb.start());
if (out.getExitValue() != 0) {
// OSR compilation should exit with an error during OopMap verification
Expand Down
7 changes: 2 additions & 5 deletions test/hotspot/jtreg/gc/TestAgeOutput.java
Expand Up @@ -84,18 +84,15 @@ public static void checkPattern(String pattern, String what) throws Exception {
}

public static void runTest(String gcArg) throws Exception {
final String[] arguments = {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
"-Xbootclasspath/a:.",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+WhiteBoxAPI",
"-XX:+" + gcArg,
"-Xmx10M",
"-Xlog:gc+age=trace",
GCTest.class.getName()
};

ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(arguments);
GCTest.class.getName());
OutputAnalyzer output = new OutputAnalyzer(pb.start());

output.shouldHaveExitValue(0);
Expand Down
31 changes: 8 additions & 23 deletions test/hotspot/jtreg/gc/TestAllocateHeapAt.java
Expand Up @@ -29,7 +29,7 @@
* @requires vm.gc != "Z" & os.family != "aix"
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @run main gc.TestAllocateHeapAt
* @run driver gc.TestAllocateHeapAt
*/

import jdk.test.lib.JDKToolFinder;
Expand All @@ -40,28 +40,13 @@

public class TestAllocateHeapAt {
public static void main(String args[]) throws Exception {
ArrayList<String> vmOpts = new ArrayList<>();

String testVmOptsStr = System.getProperty("test.java.opts");
if (!testVmOptsStr.isEmpty()) {
String[] testVmOpts = testVmOptsStr.split(" ");
Collections.addAll(vmOpts, testVmOpts);
}
String test_dir = System.getProperty("test.dir", ".");
Collections.addAll(vmOpts, new String[] {"-XX:AllocateHeapAt=" + test_dir,
"-Xlog:gc+heap=info",
"-Xmx32m",
"-Xms32m",
"-version"});

System.out.print("Testing:\n" + JDKToolFinder.getJDKTool("java"));
for (int i = 0; i < vmOpts.size(); i += 1) {
System.out.print(" " + vmOpts.get(i));
}
System.out.println();

ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(vmOpts.toArray(new String[vmOpts.size()]));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
"-XX:AllocateHeapAt=" + System.getProperty("test.dir", "."),
"-Xlog:gc+heap=info",
"-Xmx32m",
"-Xms32m",
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());

System.out.println("Output:\n" + output.getOutput());
Expand Down
33 changes: 8 additions & 25 deletions test/hotspot/jtreg/gc/TestAllocateHeapAtError.java
Expand Up @@ -29,47 +29,30 @@
* @requires vm.gc != "Z" & os.family != "aix"
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @run main gc.TestAllocateHeapAtError
* @run driver gc.TestAllocateHeapAtError
*/

import java.io.File;
import jdk.test.lib.JDKToolFinder;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.process.OutputAnalyzer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.UUID;

public class TestAllocateHeapAtError {
public static void main(String args[]) throws Exception {
ArrayList<String> vmOpts = new ArrayList<>();

String testVmOptsStr = System.getProperty("test.java.opts");
if (!testVmOptsStr.isEmpty()) {
String[] testVmOpts = testVmOptsStr.split(" ");
Collections.addAll(vmOpts, testVmOpts);
}
String test_dir = System.getProperty("test.dir", ".");

File f = null;
do {
f = new File(test_dir, UUID.randomUUID().toString());
} while(f.exists());

Collections.addAll(vmOpts, new String[] {"-XX:AllocateHeapAt=" + f.getName(),
"-Xlog:gc+heap=info",
"-Xmx32m",
"-Xms32m",
"-version"});

System.out.print("Testing:\n" + JDKToolFinder.getJDKTool("java"));
for (int i = 0; i < vmOpts.size(); i += 1) {
System.out.print(" " + vmOpts.get(i));
}
System.out.println();

ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(vmOpts.toArray(new String[vmOpts.size()]));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
"-XX:AllocateHeapAt=" + f.getName(),
"-Xlog:gc+heap=info",
"-Xmx32m",
"-Xms32m",
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());

System.out.println("Output:\n" + output.getOutput());
Expand Down
55 changes: 18 additions & 37 deletions test/hotspot/jtreg/gc/TestAllocateHeapAtMultiple.java
Expand Up @@ -29,7 +29,7 @@
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @requires vm.bits == "64" & vm.gc != "Z" & os.family != "aix"
* @run main/timeout=360 gc.TestAllocateHeapAtMultiple
* @run driver/timeout=360 gc.TestAllocateHeapAtMultiple
*/

import jdk.test.lib.JDKToolFinder;
Expand All @@ -40,48 +40,29 @@

public class TestAllocateHeapAtMultiple {
public static void main(String args[]) throws Exception {
ArrayList<String> vmOpts = new ArrayList<>();
String[] testVmOpts = null;
ArrayList<String> flags = new ArrayList<>();

String test_dir = System.getProperty("test.dir", ".");

String testVmOptsStr = System.getProperty("test.java.opts");
if (!testVmOptsStr.isEmpty()) {
testVmOpts = testVmOptsStr.split(" ");
}

// Extra options for each of the sub-tests
String[] extraOptsList = new String[] {
"-Xmx32m -Xms32m -XX:+UseCompressedOops", // 1. With compressedoops enabled.
"-Xmx32m -Xms32m -XX:-UseCompressedOops", // 2. With compressedoops disabled.
"-Xmx32m -Xms32m -XX:HeapBaseMinAddress=3g", // 3. With user specified HeapBaseMinAddress.
"-Xmx32m -Xms32m -XX:+UseLargePages", // 4. Set UseLargePages.
"-Xmx32m -Xms32m -XX:+UseNUMA" // 5. Set UseNUMA.
// Extra flags for each of the sub-tests
String[][] extraFlagsList = new String[][] {
{"-Xmx32m", "-Xms32m", "-XX:+UseCompressedOops"}, // 1. With compressedoops enabled.
{"-Xmx32m", "-Xms32m", "-XX:-UseCompressedOops"}, // 2. With compressedoops disabled.
{"-Xmx32m", "-Xms32m", "-XX:HeapBaseMinAddress=3g"}, // 3. With user specified HeapBaseMinAddress.
{"-Xmx32m", "-Xms32m", "-XX:+UseLargePages"}, // 4. Set UseLargePages.
{"-Xmx32m", "-Xms32m", "-XX:+UseNUMA"} // 5. Set UseNUMA.
};

for(String extraOpts : extraOptsList) {
vmOpts.clear();
if(testVmOpts != null) {
Collections.addAll(vmOpts, testVmOpts);
}
// Add extra options specific to the sub-test.
String[] extraOptsArray = extraOpts.split(" ");
if(extraOptsArray != null) {
Collections.addAll(vmOpts, extraOptsArray);
}
// Add common options
Collections.addAll(vmOpts, new String[] {"-XX:AllocateHeapAt=" + test_dir,
"-Xlog:gc+heap=info",
"-version"});

System.out.print("Testing:\n" + JDKToolFinder.getJDKTool("java"));
for (int i = 0; i < vmOpts.size(); i += 1) {
System.out.print(" " + vmOpts.get(i));
}
System.out.println();
for (String[] extraFlags : extraFlagsList) {
flags.clear();
// Add extra flags specific to the sub-test.
Collections.addAll(flags, extraFlags);
// Add common flags
Collections.addAll(flags, new String[] {"-XX:AllocateHeapAt=" + test_dir,
"-Xlog:gc+heap=info",
"-version"});

ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(vmOpts.toArray(new String[vmOpts.size()]));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flags);
OutputAnalyzer output = new OutputAnalyzer(pb.start());

System.out.println("Output:\n" + output.getOutput());
Expand Down
7 changes: 5 additions & 2 deletions test/hotspot/jtreg/gc/TestCardTablePageCommits.java
Expand Up @@ -45,8 +45,11 @@ public static void main(String args[]) throws Exception {
// because of 8kB pages, assume 4 KB pages for all other CPUs.
String Xmx = Platform.isSparc() ? "-Xmx8m" : "-Xmx4m";

String[] opts = {Xmx, "-XX:NativeMemoryTracking=detail", "-XX:+UseParallelGC", "-version"};
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(opts);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
Xmx,
"-XX:NativeMemoryTracking=detail",
"-XX:+UseParallelGC",
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldHaveExitValue(0);
}
Expand Down
7 changes: 2 additions & 5 deletions test/hotspot/jtreg/gc/TestNumWorkerOutput.java
Expand Up @@ -75,18 +75,15 @@ public static void checkPatternOnce(String pattern, String what) throws Exceptio
}

public static void runTest(String gcArg) throws Exception {
final String[] arguments = {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
"-Xbootclasspath/a:.",
"-XX:+UnlockExperimentalVMOptions",
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+WhiteBoxAPI",
"-XX:+" + gcArg,
"-Xmx10M",
"-XX:+PrintGCDetails",
GCTest.class.getName()
};

ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(arguments);
GCTest.class.getName());
OutputAnalyzer output = new OutputAnalyzer(pb.start());

output.shouldHaveExitValue(0);
Expand Down
12 changes: 5 additions & 7 deletions test/hotspot/jtreg/gc/TestSmallHeap.java
Expand Up @@ -102,13 +102,11 @@ public static void main(String[] args) throws Exception {

private static void verifySmallHeapSize(String gc, long expectedMaxHeap) throws Exception {
long minMaxHeap = 4 * 1024 * 1024;
LinkedList<String> vmOptions = new LinkedList<>();
vmOptions.add(gc);
vmOptions.add("-Xmx" + minMaxHeap);
vmOptions.add("-XX:+PrintFlagsFinal");
vmOptions.add(VerifyHeapSize.class.getName());

ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(vmOptions.toArray(new String[0]));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
gc,
"-Xmx" + minMaxHeap,
"-XX:+PrintFlagsFinal",
VerifyHeapSize.class.getName());
OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
analyzer.shouldHaveExitValue(0);

Expand Down
33 changes: 8 additions & 25 deletions test/hotspot/jtreg/gc/TestVerifyDuringStartup.java
Expand Up @@ -30,38 +30,21 @@
* @requires vm.gc != "Z"
* @library /test/lib
* @modules java.base/jdk.internal.misc
* @run main gc.TestVerifyDuringStartup
* @run driver gc.TestVerifyDuringStartup
*/

import jdk.test.lib.JDKToolFinder;
import jdk.test.lib.process.ProcessTools;
import jdk.test.lib.process.OutputAnalyzer;
import java.util.ArrayList;
import java.util.Collections;

public class TestVerifyDuringStartup {
public static void main(String args[]) throws Exception {
ArrayList<String> vmOpts = new ArrayList<>();

String testVmOptsStr = System.getProperty("test.java.opts");
if (!testVmOptsStr.isEmpty()) {
String[] testVmOpts = testVmOptsStr.split(" ");
Collections.addAll(vmOpts, testVmOpts);
}
Collections.addAll(vmOpts, new String[] {"-XX:-UseTLAB",
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+VerifyDuringStartup",
"-Xlog:gc+verify=debug",
"-version"});

System.out.print("Testing:\n" + JDKToolFinder.getJDKTool("java"));
for (int i = 0; i < vmOpts.size(); i += 1) {
System.out.print(" " + vmOpts.get(i));
}
System.out.println();

ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(vmOpts.toArray(new String[vmOpts.size()]));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
"-XX:-UseTLAB",
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+VerifyDuringStartup",
"-Xlog:gc+verify=debug",
"-version");
OutputAnalyzer output = new OutputAnalyzer(pb.start());

System.out.println("Output:\n" + output.getOutput());
Expand Down
3 changes: 1 addition & 2 deletions test/hotspot/jtreg/gc/TestVerifySilently.java
Expand Up @@ -58,8 +58,7 @@ private static OutputAnalyzer runTest(boolean verifySilently) throws Exception {
"-XX:+VerifyAfterGC",
(verifySilently ? "-Xlog:gc":"-Xlog:gc+verify=debug"),
TestVerifySilentlyRunSystemGC.class.getName()});
ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(vmOpts.toArray(new String[vmOpts.size()]));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(vmOpts);
OutputAnalyzer output = new OutputAnalyzer(pb.start());

System.out.println("Output:\n" + output.getOutput());
Expand Down
3 changes: 1 addition & 2 deletions test/hotspot/jtreg/gc/TestVerifySubSet.java
Expand Up @@ -56,8 +56,7 @@ private static OutputAnalyzer runTest(String subset) throws Exception {
"-Xlog:gc+verify=debug",
"-XX:VerifySubSet="+subset,
TestVerifySubSetRunSystemGC.class.getName()});
ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(vmOpts.toArray(new String[vmOpts.size()]));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(vmOpts);
OutputAnalyzer output = new OutputAnalyzer(pb.start());

System.out.println("Output:\n" + output.getOutput());
Expand Down