8244078: ProcessTools executeTestJvm and createJavaProcessBuilder have inconsistent handling of test.*.opts

Reviewed-by: dholmes, cjplummer
This commit is contained in:
Stefan Karlsson 2020-05-04 21:20:39 +02:00
parent a8edd11d7a
commit 81597d9f8f
93 changed files with 170 additions and 205 deletions
test
hotspot/jtreg
compiler
gc
runtime
serviceability
testlibrary
ctw/src/sun/hotspot/tools/ctw
jittester/src/jdk/test/lib/jittester/jtreg
testlibrary_tests/ctw
vmTestbase
gc/huge/quicklook/largeheap/MemOptions
jit/tiered
metaspace/flags/maxMetaspaceSize
nsk/jvmti
RetransformClasses/retransform003
SetNativeMethodPrefix/SetNativeMethodPrefix002
vm/compiler
CodeCacheInfo
CodeCacheInfoOnCompilation
jdk
lib/jdk/test/lib

@ -92,7 +92,7 @@ public class ClassAndLibraryNotMatchTest {
private void runAndCheckHelloWorld(String checkString) {
ProcessBuilder pb;
try {
pb = ProcessTools.createJavaProcessBuilder(true, "-cp", ".",
pb = ProcessTools.createTestJvm("-cp", ".",
"-XX:+UnlockExperimentalVMOptions", "-XX:+UseAOT",
"-XX:AOTLibrary=./" + LIB_NAME, HELLO_WORLD_CLASS_NAME);
} catch (Exception e) {

@ -87,7 +87,7 @@ public class BasicFlagsChange {
so, a message like "skipped $pathTolibrary aot library" or
"loaded $pathToLibrary aot library" is present for cases of
incompatible or compatible flags respectively */
pb = ProcessTools.createJavaProcessBuilder(true, "-XX:+UnlockExperimentalVMOptions",
pb = ProcessTools.createTestJvm("-XX:+UnlockExperimentalVMOptions",
"-XX:+UseAOT", "-XX:+PrintAOT", "-XX:AOTLibrary=./" + libName, option,
HelloWorldPrinter.class.getName());
} catch (Exception ex) {

@ -142,11 +142,10 @@ public abstract class CiReplayBase {
options.add(needCoreDump ? ENABLE_COREDUMP_ON_CRASH : DISABLE_COREDUMP_ON_CRASH);
options.add(EmptyMain.class.getName());
if (needCoreDump) {
crashOut = ProcessTools.executeProcess(getTestJavaCommandlineWithPrefix(
crashOut = ProcessTools.executeProcess(getTestJvmCommandlineWithPrefix(
RUN_SHELL_NO_LIMIT, options.toArray(new String[0])));
} else {
crashOut = ProcessTools.executeProcess(ProcessTools.createJavaProcessBuilder(true,
options));
crashOut = ProcessTools.executeProcess(ProcessTools.createTestJvm(options));
}
crashOutputString = crashOut.getOutput();
Asserts.assertNotEquals(crashOut.getExitValue(), 0, "Crash JVM exits gracefully");
@ -190,7 +189,7 @@ public abstract class CiReplayBase {
List<String> allAdditionalOpts = new ArrayList<>();
allAdditionalOpts.addAll(Arrays.asList(REPLAY_OPTIONS));
allAdditionalOpts.addAll(Arrays.asList(additionalVmOpts));
OutputAnalyzer oa = ProcessTools.executeProcess(getTestJavaCommandlineWithPrefix(
OutputAnalyzer oa = ProcessTools.executeProcess(getTestJvmCommandlineWithPrefix(
RUN_SHELL_ZERO_LIMIT, allAdditionalOpts.toArray(new String[0])));
return oa.getExitValue();
} catch (Throwable t) {
@ -290,9 +289,9 @@ public abstract class CiReplayBase {
return null;
}
private String[] getTestJavaCommandlineWithPrefix(String prefix, String... args) {
private String[] getTestJvmCommandlineWithPrefix(String prefix, String... args) {
try {
String cmd = ProcessTools.getCommandLine(ProcessTools.createJavaProcessBuilder(true, args));
String cmd = ProcessTools.getCommandLine(ProcessTools.createTestJvm(args));
return new String[]{"sh", "-c", prefix
+ (Platform.isWindows() ? cmd.replace('\\', '/').replace(";", "\\;").replace("|", "\\|") : cmd)};
} catch(Throwable t) {

@ -57,7 +57,7 @@ public class SABase extends CiReplayBase {
}
ProcessBuilder pb;
try {
pb = ProcessTools.createJavaProcessBuilder(true, "--add-modules", "jdk.hotspot.agent",
pb = ProcessTools.createTestJvm("--add-modules", "jdk.hotspot.agent",
"--add-exports=jdk.hotspot.agent/sun.jvm.hotspot=ALL-UNNAMED",
"sun.jvm.hotspot.CLHSDB", JDKToolFinder.getTestJDKTool("java"),
TEST_CORE_FILE_NAME);

@ -113,7 +113,7 @@ public class GraalUnitTestLauncher {
String classPath = String.join(File.pathSeparator, System.getProperty("java.class.path"),
String.join(File.separator, libsDir, MXTOOL_JARFILE));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false,
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
"-cp", classPath,
"com.oracle.mxtool.junit.FindClassesByAnnotatedMethods", graalUnitTestFilePath, testAnnotationName);
@ -277,8 +277,7 @@ public class GraalUnitTestLauncher {
javaFlags.add("@"+GENERATED_TESTCLASSES_FILENAME);
ProcessBuilder javaPB = ProcessTools.createJavaProcessBuilder(true,
javaFlags);
ProcessBuilder javaPB = ProcessTools.createTestJvm(javaFlags);
// Some tests rely on MX_SUBPROCESS_COMMAND_FILE env variable which contains
// name of the file with java executable and java args used to launch the current process.

@ -30,8 +30,8 @@ public class Driver8015436 {
public static void main(String args[]) {
OutputAnalyzer oa;
try {
oa = ProcessTools.executeProcess(ProcessTools.createJavaProcessBuilder(
/* add test vm options */ true, Test8015436.class.getName()));
oa = ProcessTools.executeProcess(ProcessTools.createTestJvm(
Test8015436.class.getName()));
} catch (Exception ex) {
throw new Error("TESTBUG: exception while running child process: " + ex, ex);
}

@ -86,7 +86,7 @@ public class OffTest {
OPTIONS[TYPE_PROFILE_INDEX] = typeProfileLevel;
OPTIONS[USE_TYPE_SPECULATION_INDEX] = useTypeSpeculation;
OPTIONS[PROFILING_TYPE_INDEX] = type.name();
ProcessBuilder processBuilder = ProcessTools.createJavaProcessBuilder(/* addTestVmOptions= */ true, OPTIONS);
ProcessBuilder processBuilder = ProcessTools.createTestJvm(OPTIONS);
OutputAnalyzer outputAnalyzer = new OutputAnalyzer(processBuilder.start());
outputAnalyzer.shouldHaveExitValue(0);
}

@ -40,8 +40,7 @@ import java.util.Collections;
public class TestAllocateHeapAt {
public static void main(String args[]) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:AllocateHeapAt=" + System.getProperty("test.dir", "."),
"-Xlog:gc+heap=info",
"-Xmx32m",

@ -46,8 +46,7 @@ public class TestAllocateHeapAtError {
f = new File(test_dir, UUID.randomUUID().toString());
} while(f.exists());
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:AllocateHeapAt=" + f.getName(),
"-Xlog:gc+heap=info",
"-Xmx32m",

@ -62,7 +62,7 @@ public class TestAllocateHeapAtMultiple {
"-Xlog:gc+heap=info",
"-version"});
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flags);
ProcessBuilder pb = ProcessTools.createTestJvm(flags);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
System.out.println("Output:\n" + output.getOutput());

@ -38,8 +38,7 @@ import jdk.test.lib.process.OutputAnalyzer;
public class TestVerifyDuringStartup {
public static void main(String args[]) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:-UseTLAB",
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+VerifyDuringStartup",

@ -67,22 +67,18 @@ public final class GCArguments {
}
static public ProcessBuilder createJavaProcessBuilder(List<String> arguments) {
return createJavaProcessBuilder(false, arguments);
}
static public ProcessBuilder createJavaProcessBuilder(boolean addTestVmAndJavaOptions,
List<String> arguments) {
return createJavaProcessBuilder(addTestVmAndJavaOptions,
arguments.toArray(String[]::new));
return createJavaProcessBuilder(arguments.toArray(String[]::new));
}
static public ProcessBuilder createJavaProcessBuilder(String... arguments) {
return createJavaProcessBuilder(false, arguments);
return ProcessTools.createJavaProcessBuilder(withDefaults(arguments));
}
static public ProcessBuilder createJavaProcessBuilder(boolean addTestVmAndJavaOptions,
String... arguments) {
return ProcessTools.createJavaProcessBuilder(addTestVmAndJavaOptions,
withDefaults(arguments));
static public ProcessBuilder createTestJvm(List<String> arguments) {
return createTestJvm(arguments.toArray(String[]::new));
}
static public ProcessBuilder createTestJvm(String... arguments) {
return ProcessTools.createTestJvm(withDefaults(arguments));
}
}

@ -41,8 +41,7 @@ import jdk.test.lib.process.ProcessTools;
public class TestUseNUMAInterleaving {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = GCArguments.createJavaProcessBuilder(
true,
ProcessBuilder pb = GCArguments.createTestJvm(
"-XX:+UseNUMA",
"-XX:+PrintFlagsFinal",
"-version");

@ -102,7 +102,7 @@ public class TestShrinkAuxiliaryData {
}
private void performTest(List<String> opts) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, opts);
ProcessBuilder pb = ProcessTools.createTestJvm(opts);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
System.out.println(output.getStdout());

@ -90,8 +90,7 @@ public class TestLogging {
Collections.addAll(testOpts, extraFlags);
testOpts.add(RunMixedGC.class.getName());
System.out.println(testOpts);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false,
testOpts);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(testOpts);
return new OutputAnalyzer(pb.start());
}
}

@ -84,8 +84,7 @@ public class TestMetaSpaceLog {
String testSrc= "-Dtest.src=" + System.getProperty("test.src", ".");
ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(
true,
ProcessTools.createTestJvm(
"-Xlog:gc*",
"-Xbootclasspath/a:.",
"-XX:+UnlockDiagnosticVMOptions",

@ -59,7 +59,7 @@ public class TestAllocateOldGenAt {
ArrayList<String> flags = new ArrayList<>();
Collections.addAll(flags, commonFlags);
Collections.addAll(flags, extraFlags);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flags);
ProcessBuilder pb = ProcessTools.createTestJvm(flags);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldHaveExitValue(0);

@ -89,7 +89,7 @@ public class TestAllocateOldGenAtError {
Collections.addAll(flags, commonFlags);
Collections.addAll(flags, extraFlags);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flags);
ProcessBuilder pb = ProcessTools.createTestJvm(flags);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
return output;
}

@ -63,7 +63,7 @@ public class TestAllocateOldGenAtMultiple {
Collections.addAll(flags, new String[] {"-XX:+UnlockExperimentalVMOptions",
"-XX:AllocateOldGenAt=" + test_dir,
"-version"});
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flags);
ProcessBuilder pb = ProcessTools.createTestJvm(flags);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
System.out.println("Output:\n" + output.getOutput());

@ -72,7 +72,7 @@ public class TestHumongousObjectsOnNvdimm {
Collections.addAll(flags, extraFlags);
flags.add(HumongousObjectTest.class.getName());
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flags);
ProcessBuilder pb = ProcessTools.createTestJvm(flags);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldHaveExitValue(0);

@ -71,7 +71,7 @@ public class TestOldObjectsOnNvdimm {
Collections.addAll(flags, extraFlags);
flags.add(OldObjectTest.class.getName());
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flags);
ProcessBuilder pb = ProcessTools.createTestJvm(flags);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
System.out.println(output.getStdout());

@ -72,7 +72,7 @@ public class TestYoungObjectsOnDram {
Collections.addAll(flags, extraFlags);
flags.add(YoungObjectTest.class.getName());
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flags);
ProcessBuilder pb = ProcessTools.createTestJvm(flags);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
System.out.println(output.getStdout());

@ -43,8 +43,7 @@ import sun.hotspot.WhiteBox;
public class TestWBGC {
public static void main(String args[]) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-Xbootclasspath/a:.",
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+WhiteBoxAPI",

@ -36,7 +36,7 @@ public class TestUnrecognizedVmOption {
public static void main(String[] args) throws Exception {
ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(true, "-showversion", "-XX:" + OPTION);
ProcessTools.createTestJvm("-showversion", "-XX:" + OPTION);
new OutputAnalyzer(pb.start())
.shouldNotHaveExitValue(0)
.shouldContain("Unrecognized VM option")

@ -97,7 +97,7 @@ public class BSMCalledTwice implements Opcodes {
};
cl.loadClass(classTestCName);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "-cp", ".", classTestCName);
ProcessBuilder pb = ProcessTools.createTestJvm("-cp", ".", classTestCName);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
String test_output = output.getOutput();
if (test_output == null) {

@ -42,7 +42,7 @@ import jdk.test.lib.process.OutputAnalyzer;
public class UnsupportedClassFileVersion implements Opcodes {
public static void main(String... args) throws Exception {
writeClassFile();
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "-cp", ".", "ClassFile");
ProcessBuilder pb = ProcessTools.createTestJvm("-cp", ".", "ClassFile");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldContain("ClassFile has been compiled by a more recent version of the " +
"Java Runtime (class file version 99.0), this version of " +

@ -48,7 +48,7 @@ public class invocationC1Tests {
public static void runTest(String whichTests, String classFileVersion) throws Throwable {
System.out.println("\nC1 invocation tests, Tests: " + whichTests +
", class file version: " + classFileVersion);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false, "-Xmx128M",
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xmx128M",
"-Xcomp", "-XX:TieredStopAtLevel=1",
"--add-exports", "java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED",
whichTests, "--classfile_version=" + classFileVersion);

@ -49,7 +49,7 @@ public class invocationGraalTests {
public static void runTest(String whichTests, String classFileVersion) throws Throwable {
System.out.println("\nGraal invocation tests, Tests: " + whichTests +
", class file version: " + classFileVersion);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false, "-Xmx128M",
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xmx128M",
"-XX:+UnlockExperimentalVMOptions", "-XX:+EnableJVMCI", "-XX:+UseJVMCICompiler",
"--add-exports", "java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED",
whichTests, "--classfile_version=" + classFileVersion);

@ -47,7 +47,7 @@ public class invokeinterfaceTests {
public static void runTest(String classFileVersion, String option) throws Throwable {
System.out.println("\ninvokeinterface invocation tests, option: " + option +
", class file version: " + classFileVersion);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false, "-Xmx128M", option,
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xmx128M", option,
"--add-exports", "java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED",
"invokeinterface.Generator", "--classfile_version=" + classFileVersion);
OutputAnalyzer output = new OutputAnalyzer(pb.start());

@ -46,7 +46,7 @@ public class invokespecialTests {
public static void runTest(String classFileVersion, String option) throws Throwable {
System.out.println("\ninvokespecial invocation tests, option: " + option +
", class file version: " + classFileVersion);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false, "-Xmx128M", option,
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xmx128M", option,
"--add-exports", "java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED",
"invokespecial.Generator", "--classfile_version=" + classFileVersion);
OutputAnalyzer output = new OutputAnalyzer(pb.start());

@ -46,7 +46,7 @@ public class invokevirtualTests {
public static void runTest(String classFileVersion, String option) throws Throwable {
System.out.println("\ninvokevirtual invocation tests, option: " + option +
", class file version: " + classFileVersion);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false, "-Xmx128M", option,
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-Xmx128M", option,
"--add-exports", "java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED",
"invokevirtual.Generator", "--classfile_version=" + classFileVersion);
OutputAnalyzer output = new OutputAnalyzer(pb.start());

@ -46,7 +46,7 @@ import jdk.test.lib.process.OutputAnalyzer;
public class LargeClassTest implements Opcodes {
public static void main(String... args) throws Exception {
writeClassFile();
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "-cp", ".", "Large");
ProcessBuilder pb = ProcessTools.createTestJvm("-cp", ".", "Large");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldHaveExitValue(0);
}

@ -44,8 +44,7 @@ public class RangeCheck {
return;
}
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-Xmx128m",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
"-XX:-CreateCoredumpOnCrash",

@ -41,20 +41,20 @@ import jdk.test.lib.process.OutputAnalyzer;
// methods to form command line to create/use shared archive.
public class SharedArchiveFile {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
"-Xshare:dump", "-Xlog:cds");
OutputAnalyzer out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
CDSTestUtils.checkDump(out);
// -XX:+DumpSharedSpaces should behave the same as -Xshare:dump
pb = ProcessTools.createJavaProcessBuilder(true,
pb = ProcessTools.createTestJvm(
"-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
"-XX:+DumpSharedSpaces", "-Xlog:cds");
out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");
CDSTestUtils.checkDump(out);
pb = ProcessTools.createJavaProcessBuilder(true,
pb = ProcessTools.createTestJvm(
"-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
"-Xshare:on", "-version");
out = CDSTestUtils.executeAndLog(pb, "SharedArchiveFile");

@ -74,8 +74,7 @@ public class DumpClassList {
String appendJar = JarBuilder.build("bootappend", "boot/append/Foo");
// dump class list
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:DumpLoadedClassList=" + classList,
"--patch-module=java.base=" + patchJar,
"-Xbootclasspath/a:" + appendJar,

@ -83,7 +83,7 @@ public class GraalWithLimitedMetaspace {
}
static void dumpLoadedClasses(String[] expectedClasses) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:DumpLoadedClassList=" + CLASSLIST_FILE,
// trigger JVMCI runtime init so that JVMCI classes will be
// included in the classlist
@ -110,7 +110,7 @@ public class GraalWithLimitedMetaspace {
}
static void dumpArchive() throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-cp",
TESTJAR,
"-XX:SharedClassListFile=" + CLASSLIST_FILE,

@ -238,7 +238,7 @@ public class TestCommon extends CDSTestUtils {
}
}
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmd);
ProcessBuilder pb = ProcessTools.createTestJvm(cmd);
if (opts.appJarDir != null) {
pb.directory(new File(opts.appJarDir));
}
@ -384,7 +384,7 @@ public class TestCommon extends CDSTestUtils {
}
}
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmd);
ProcessBuilder pb = ProcessTools.createTestJvm(cmd);
if (opts.appJarDir != null) {
pb.directory(new File(opts.appJarDir));
}

@ -242,7 +242,7 @@ class DynamicArchiveTestBase {
if (!executedIn_run) {
throw new Exception("Test error: dynamic archive tests must be executed via DynamicArchiveTestBase.run()");
}
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
ProcessBuilder pb = ProcessTools.createTestJvm(cmdLine);
if (jarDir != null) {
pb.directory(new File(jarDir));
}

@ -105,8 +105,7 @@ public class NoClassToArchive extends DynamicArchiveTestBase {
private static void doTestCustomBase(String baseArchiveName, String topArchiveName) throws Exception {
String appJar = ClassFileInstaller.getJarPath("strConcatApp.jar");
// dump class list by running the StrConcatApp
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:DumpLoadedClassList=" + classList,
"-cp",
appJar,

@ -50,7 +50,7 @@ public class SharedStringsBasic {
String sharedArchiveConfigFile =
TestCommon.getSourceFile("SharedStringsBasic.txt").toString();
ProcessBuilder dumpPb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder dumpPb = ProcessTools.createTestJvm(
TestCommon.concat(vmOptionsPrefix,
"-cp", appJar,
"-XX:SharedArchiveConfigFile=" + sharedArchiveConfigFile,
@ -62,7 +62,7 @@ public class SharedStringsBasic {
.shouldContain("Shared string table stats")
.shouldHaveExitValue(0);
ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder runPb = ProcessTools.createTestJvm(
TestCommon.concat(vmOptionsPrefix,
"-cp", appJar,
"-XX:SharedArchiveFile=./SharedStringsBasic.jsa",

@ -44,7 +44,7 @@ public class SysDictCrash {
// SharedBaseAddress=0 puts the archive at a very high address on solaris,
// which provokes the crash.
ProcessBuilder dumpPb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder dumpPb = ProcessTools.createTestJvm(
TestCommon.concat(vmOptionsPrefix,
"-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
"-cp", ".",
@ -69,7 +69,7 @@ public class SysDictCrash {
return;
}
ProcessBuilder runPb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder runPb = ProcessTools.createTestJvm(
TestCommon.concat(vmOptionsPrefix,
"-XX:+UseG1GC", "-XX:MaxRAMPercentage=12.5",
"-XX:SharedArchiveFile=./SysDictCrash.jsa",

@ -57,8 +57,7 @@ public class HandshakeTransitionTest {
useJVMCICompilerStr = "-XX:+UnlockExperimentalVMOptions";
}
ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(
true,
ProcessTools.createTestJvm(
"-Djava.library.path=" + lib,
"-XX:+SafepointALot",
"-XX:+HandshakeALot",

@ -63,8 +63,7 @@ public class PatchModuleClassList {
String moduleJar = BasicJarBuilder.getTestJar("javanaming.jar");
String classList = "javanaming.list";
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:DumpLoadedClassList=" + classList,
"--patch-module=java.naming=" + moduleJar,
"PatchModuleMain", BOOT_CLASS.replace('/', '.'));
@ -98,8 +97,7 @@ public class PatchModuleClassList {
moduleJar = BasicJarBuilder.getTestJar("javasql.jar");
classList = "javasql.list";
pb = ProcessTools.createJavaProcessBuilder(
true,
pb = ProcessTools.createTestJvm(
"-XX:DumpLoadedClassList=" + classList,
"--patch-module=java.sql=" + moduleJar,
"PatchModuleMain", PLATFORM_CLASS.replace('/', '.'));
@ -131,8 +129,7 @@ public class PatchModuleClassList {
moduleJar = BasicJarBuilder.getTestJar("hello.jar");
classList = "hello.list";
pb = ProcessTools.createJavaProcessBuilder(
true,
pb = ProcessTools.createTestJvm(
"-XX:DumpLoadedClassList=" + classList,
"-Xbootclasspath/a:" + moduleJar,
"Hello");

@ -68,8 +68,7 @@ public class AvailableProcessors {
// Get the java command we want to execute
// Enable logging for easier failure diagnosis
ProcessBuilder master =
ProcessTools.createJavaProcessBuilder(false,
"-Xlog:os=trace",
ProcessTools.createJavaProcessBuilder("-Xlog:os=trace",
"AvailableProcessors");
int[] expected = new int[] { 1, available/2, available-1, available };

@ -41,8 +41,7 @@ public class TestUseCpuAllocPath {
public static void main(String[] args) throws Exception {
ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(false,
"-Xlog:os=trace",
ProcessTools.createJavaProcessBuilder("-Xlog:os=trace",
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+UseCpuAllocPath",
"-version");

@ -125,7 +125,7 @@ public class OverriderMsg {
public static void main(String... args) throws Exception {
dump_HasFinal();
dump_Overrider();
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "-cp", ".", "Overrider");
ProcessBuilder pb = ProcessTools.createTestJvm("-cp", ".", "Overrider");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldContain(
"java.lang.VerifyError: class Overrider overrides final method HasFinal.m(Ljava/lang/String;)V");

@ -69,7 +69,7 @@ public class TestANewArray {
byte[] classFile_254 = dumpClassFile(cfv, test_Dimension_254, array_Dimension_254);
writeClassFileFromByteArray(classFile_254);
System.err.println("Running with cfv: " + cfv + ", test_Dimension_254");
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "-verify", "-cp", ".", classCName);
ProcessBuilder pb = ProcessTools.createTestJvm("-verify", "-cp", ".", classCName);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldNotContain("java.lang.VerifyError");
output.shouldHaveExitValue(0);
@ -78,7 +78,7 @@ public class TestANewArray {
byte[] classFile_255 = dumpClassFile(cfv, test_Dimension_255, array_Dimension_255);
writeClassFileFromByteArray(classFile_255);
System.err.println("Running with cfv: " + cfv + ", test_Dimension_255");
pb = ProcessTools.createJavaProcessBuilder(true, "-verify", "-cp", ".", classCName);
pb = ProcessTools.createTestJvm("-verify", "-cp", ".", classCName);
output = new OutputAnalyzer(pb.start());
// If anewarray has an operand with 255 array dimensions then VerifyError should
// be thrown because the resulting array would have 256 dimensions.
@ -95,7 +95,7 @@ public class TestANewArray {
byte[] classFile_264 = dumpClassFile(cfv, test_Dimension_264, array_Dimension_264);
writeClassFileFromByteArray(classFile_264);
System.err.println("Running with cfv: " + cfv + ", test_Dimension_264");
pb = ProcessTools.createJavaProcessBuilder(true, "-verify", "-cp", ".", classCName);
pb = ProcessTools.createTestJvm("-verify", "-cp", ".", classCName);
output = new OutputAnalyzer(pb.start());
output.shouldContain("java.lang.ClassFormatError");
output.shouldHaveExitValue(1);

@ -48,7 +48,7 @@ public class TestMultiANewArray {
int cfv = Integer.parseInt(args[0]);
writeClassFile(cfv);
System.err.println("Running with cfv: " + cfv);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "-cp", ".", "ClassFile");
ProcessBuilder pb = ProcessTools.createTestJvm("-cp", ".", "ClassFile");
OutputAnalyzer output = new OutputAnalyzer(pb.start());
output.shouldContain("VerifyError");
output.shouldHaveExitValue(1);

@ -50,7 +50,7 @@ public class GetObjectSizeClass {
pb.command(new String[] { JDKToolFinder.getJDKTool("jar"), "cmf", "MANIFEST.MF", "agent.jar", "GetObjectSizeClassAgent.class"});
pb.start().waitFor();
ProcessBuilder pt = ProcessTools.createJavaProcessBuilder(true, "-javaagent:agent.jar", "GetObjectSizeClassAgent");
ProcessBuilder pt = ProcessTools.createTestJvm("-javaagent:agent.jar", "GetObjectSizeClassAgent");
OutputAnalyzer output = new OutputAnalyzer(pt.start());
output.stdoutShouldContain("GetObjectSizeClass passed");

@ -57,7 +57,7 @@ public class GetObjectSizeOverflow {
pb.command(new String[] { JDKToolFinder.getJDKTool("jar"), "cmf", "MANIFEST.MF", "agent.jar", "GetObjectSizeOverflowAgent.class"});
pb.start().waitFor();
ProcessBuilder pt = ProcessTools.createJavaProcessBuilder(true, "-Xmx4000m", "-javaagent:agent.jar", "GetObjectSizeOverflowAgent");
ProcessBuilder pt = ProcessTools.createTestJvm("-Xmx4000m", "-javaagent:agent.jar", "GetObjectSizeOverflowAgent");
OutputAnalyzer output = new OutputAnalyzer(pt.start());
if (output.getStdout().contains("Could not reserve enough space") || output.getStderr().contains("java.lang.OutOfMemoryError")) {

@ -71,8 +71,7 @@ public class TestLogRotation {
}
public static void runTest(int numberOfFiles) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-cp", System.getProperty("java.class.path"),
"-Xlog:gc=debug:" + logFileName
+ "::filesize=" + logFileSizeK + "k"

@ -98,7 +98,7 @@ public class ClhsdbCDSCore {
List<String> options = new ArrayList<>();
options.addAll(Arrays.asList(jArgs));
crashOut =
ProcessTools.executeProcess(getTestJavaCommandlineWithPrefix(
ProcessTools.executeProcess(getTestJvmCommandlineWithPrefix(
RUN_SHELL_NO_LIMIT, options.toArray(new String[0])));
} catch (Throwable t) {
throw new Error("Can't execute the java cds process.", t);
@ -253,9 +253,9 @@ public class ClhsdbCDSCore {
return null;
}
private static String[] getTestJavaCommandlineWithPrefix(String prefix, String... args) {
private static String[] getTestJvmCommandlineWithPrefix(String prefix, String... args) {
try {
String cmd = ProcessTools.getCommandLine(ProcessTools.createJavaProcessBuilder(true, args));
String cmd = ProcessTools.getCommandLine(ProcessTools.createTestJvm(args));
return new String[]{"sh", "-c", prefix + cmd};
} catch (Throwable t) {
throw new Error("Can't create process builder: " + t, t);

@ -88,7 +88,7 @@ public class TestJmapCore {
}
static void test(String type) throws Throwable {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "-XX:+CreateCoredumpOnCrash",
ProcessBuilder pb = ProcessTools.createTestJvm("-XX:+CreateCoredumpOnCrash",
"-Xmx512m", "-XX:MaxMetaspaceSize=64m", "-XX:+CrashOnOutOfMemoryError",
TestJmapCore.class.getName(), type);

@ -174,9 +174,7 @@ public class CtwRunner {
while (!done) {
String[] cmd = cmd(classStart, classStop);
try {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
/* addTestVmAndJavaOptions = */ true,
cmd);
ProcessBuilder pb = ProcessTools.createTestJvm(cmd);
String commandLine = pb.command()
.stream()
.collect(Collectors.joining(" "));

@ -47,7 +47,7 @@ public class JitTesterDriver {
}
OutputAnalyzer oa;
try {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, args);
ProcessBuilder pb = ProcessTools.createTestJvm(args);
oa = new OutputAnalyzer(pb.start());
} catch (Exception e) {
throw new Error("Unexpected exception on test jvm start :" + e, e);

@ -101,7 +101,7 @@ public abstract class CtwTest {
cmd[i] = cmd[i].replace("*", "\"*\"");
}
}
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmd);
ProcessBuilder pb = ProcessTools.createTestJvm(cmd);
OutputAnalyzer output = new OutputAnalyzer(pb.start());
dump(output, "compile");
output.shouldHaveExitValue(0);

@ -94,7 +94,7 @@ public class MemOptionsTest {
var cmd = new ArrayList<String>();
Collections.addAll(cmd, opts);
cmd.add(MemStat.class.getName());
var pb = ProcessTools.createJavaProcessBuilder(true, cmd);
var pb = ProcessTools.createTestJvm(cmd);
var output = new OutputAnalyzer(pb.start());
if (output.getExitValue() != 0) {
output.reportDiagnosticSummary();
@ -107,7 +107,7 @@ public class MemOptionsTest {
var cmd = new ArrayList<String>();
Collections.addAll(cmd, opts);
cmd.add(MemStat.class.getName());
var pb = ProcessTools.createJavaProcessBuilder(true, cmd);
var pb = ProcessTools.createTestJvm(cmd);
var output = new OutputAnalyzer(pb.start());
if (output.getExitValue() == 0) {
output.reportDiagnosticSummary();

@ -54,7 +54,7 @@ public class Test {
public static void main(String[] args) throws Exception {
{
System.out.println("TieredCompilation is enabled");
var pb = ProcessTools.createJavaProcessBuilder(true,
var pb = ProcessTools.createTestJvm(
"-XX:+TieredCompilation",
"-XX:+PrintTieredEvents",
"-version");
@ -67,7 +67,7 @@ public class Test {
}
{
System.out.println("TieredCompilation is disabled");
var pb = ProcessTools.createJavaProcessBuilder(true,
var pb = ProcessTools.createTestJvm(
"-XX:-TieredCompilation",
"-XX:+PrintTieredEvents",
"-version");

@ -39,8 +39,8 @@ import jdk.test.lib.process.ProcessTools;
public class TestMaxMetaspaceSize {
public static void main(String[] args) throws Exception {
ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(true, "-XX:MaxMetaspaceSize=100m",
maxMetaspaceSize.class.getName());
ProcessTools.createTestJvm("-XX:MaxMetaspaceSize=100m",
maxMetaspaceSize.class.getName());
OutputAnalyzer out = new OutputAnalyzer(pb.start());
if (out.getExitValue() == 0) {

@ -69,8 +69,7 @@ import java.util.Arrays;
public class TestDriver {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-agentlib:retransform003-01=id=1 can_retransform_classes=1",
"-agentlib:retransform003-02=id=2 can_retransform_classes=0",
"-agentlib:retransform003-03=id=3 can_retransform_classes=1",

@ -58,8 +58,7 @@ import java.util.Arrays;
public class TestDriver {
public static void main(String[] args) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-agentlib:SetNativeMethodPrefix001=trace=all",
"-agentlib:SetNativeMethodPrefix002-01=trace=all prefix=wa_",
"-agentlib:SetNativeMethodPrefix002-02=trace=all prefix=wb_",

@ -78,7 +78,7 @@ public class Test {
public static void main(String[] args) throws Exception {
{
System.out.println("SegmentedCodeCache is enabled");
var pb = ProcessTools.createJavaProcessBuilder(true,
var pb = ProcessTools.createTestJvm(
"-XX:+SegmentedCodeCache",
"-XX:+PrintCodeCache",
"-version");
@ -88,7 +88,7 @@ public class Test {
}
{
System.out.println("SegmentedCodeCache is disabled");
var pb = ProcessTools.createJavaProcessBuilder(true,
var pb = ProcessTools.createTestJvm(
"-XX:-SegmentedCodeCache",
"-XX:+PrintCodeCache",
"-version");

@ -46,7 +46,7 @@ public class Test {
private static String REGEXP = "^(CodeCache|(CodeHeap.*)): size=\\d+Kb used=\\d+Kb max_used=\\d+Kb free=\\d+Kb";
public static void main(String[] args) throws Exception {
var pb = ProcessTools.createJavaProcessBuilder(true,
var pb = ProcessTools.createTestJvm(
"-XX:-PrintCodeCache",
"-XX:+PrintCodeCacheOnCompilation",
"-XX:-Inline",

@ -104,7 +104,7 @@ public class JITDebug {
}
void testLaunch() {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true);
ProcessBuilder pb = ProcessTools.createTestJvm();
List largs = pb.command();
largs.add("-classpath");
largs.add(Utils.TEST_CLASSES);

@ -82,7 +82,7 @@ public class PrivateTransportTest {
String libName = transportLib.getFileName().toString().replace("dt_socket", "private_dt_socket");
Files.copy(transportLib, Paths.get(Utils.TEST_CLASSES).resolve(libName));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-agentlib:jdwp=transport=private_dt_socket,server=y,suspend=n",
"-classpath", Utils.TEST_CLASSES,
"HelloWorld");

@ -81,7 +81,7 @@ public class CDSJDITest {
outputDump.shouldHaveExitValue(0);
// Run the test specified JDI test
pb = ProcessTools.createJavaProcessBuilder(true, testArgs);
pb = ProcessTools.createTestJvm(testArgs);
OutputAnalyzer outputRun = executeAndLog(pb, "exec");
try {
outputRun.shouldContain("sharing");

@ -69,7 +69,6 @@ public class Debuggee implements Closeable {
private String transport = "dt_socket";
private String address = null;
private boolean suspended = true;
private boolean addTestVmAndJavaOptions = true;
private Launcher(String mainClass) {
this.mainClass = mainClass;
@ -101,11 +100,6 @@ public class Debuggee implements Closeable {
suspended = value;
return this;
}
// default is "true"
public Launcher addTestVmAndJavaOptions(boolean value) {
addTestVmAndJavaOptions = value;
return this;
}
public ProcessBuilder prepare() {
List<String> debuggeeArgs = new LinkedList<>();
@ -117,8 +111,7 @@ public class Debuggee implements Closeable {
+ ",server=y,suspend=" + (suspended ? "y" : "n"));
debuggeeArgs.addAll(options);
debuggeeArgs.add(mainClass);
return ProcessTools.createJavaProcessBuilder(addTestVmAndJavaOptions,
debuggeeArgs.toArray(new String[0]));
return ProcessTools.createTestJvm(debuggeeArgs);
}
public Debuggee launch(String name) {

@ -38,7 +38,7 @@ import jdk.test.lib.process.ProcessTools;
public class MacPath {
public static void main(String args[]) throws Exception {
final ProcessBuilder pb =
ProcessTools.createJavaProcessBuilder(true, MacPathTest.class.getName());
ProcessTools.createTestJvm(MacPathTest.class.getName());
final Map<String, String> env = pb.environment();
env.put("LC_ALL", "en_US.UTF-8");
Process p = ProcessTools.startProcess("Mac Path Test", pb);

@ -81,7 +81,7 @@ public class RenamePackageTest {
}
private static void runTestSerialDriver() throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-classpath",
SHARE.toString()
+ File.pathSeparator
@ -93,7 +93,7 @@ public class RenamePackageTest {
}
private static void runInstallSerialDriver() throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-classpath",
SHARE.toString()
+ File.pathSeparator

@ -31,14 +31,14 @@
*/
import jdk.test.lib.process.OutputAnalyzer;
import static jdk.test.lib.process.ProcessTools.createJavaProcessBuilder;
import static jdk.test.lib.process.ProcessTools.createTestJvm;
import static jdk.test.lib.process.ProcessTools.executeProcess;
public class ShutdownInterruptedMain {
public static void main(String[] args) throws Exception {
if (args.length > 0) {
ProcessBuilder pb = createJavaProcessBuilder(true, "ShutdownInterruptedMain");
ProcessBuilder pb = createTestJvm("ShutdownInterruptedMain");
OutputAnalyzer output = executeProcess(pb);
output.shouldContain("Shutdown Hook");
output.shouldHaveExitValue(0);

@ -37,7 +37,7 @@ public class CallerFromMain {
private static final StackWalker sw = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
public static void main(String[] args) throws Exception {
if (args.length > 0) {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "CallerFromMain");
ProcessBuilder pb = ProcessTools.createTestJvm("CallerFromMain");
OutputAnalyzer output = ProcessTools.executeProcess(pb);
System.out.println(output.getOutput());
output.shouldHaveExitValue(0);

@ -49,7 +49,7 @@ public class MacJNUEncoding {
final String locale = args[2];
System.out.println("Running test for locale: " + locale);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
ExpectedEncoding.class.getName(), args[0], args[1]);
Map<String, String> env = pb.environment();
env.put("LANG", locale);

@ -29,7 +29,7 @@ import jdk.test.lib.process.ProcessTools;
public class TestDaemonThreadLauncher {
public static void main(String args[]) throws Exception {
for(int i=0; i<50; i++) {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, "-javaagent:DummyAgent.jar", "TestDaemonThread", ".");
ProcessBuilder pb = ProcessTools.createTestJvm("-javaagent:DummyAgent.jar", "TestDaemonThread", ".");
OutputAnalyzer analyzer = ProcessTools.executeProcess(pb);
analyzer.shouldNotContain("ASSERTION FAILED");
analyzer.shouldHaveExitValue(0);

@ -54,7 +54,7 @@ import static org.testng.Assert.assertTrue;
public class DefaultCharsetTest {
private static final ProcessBuilder pb
= ProcessTools.createJavaProcessBuilder(true, Default.class.getName());
= ProcessTools.createTestJvm(Default.class.getName());
private static final Map<String, String> env = pb.environment();
private static String UNSUPPORTED = null;

@ -41,7 +41,7 @@ import jdk.test.lib.process.ProcessTools;
public class MacPathTest {
public static void main(String args[]) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, MacPath.class.getName());
ProcessBuilder pb = ProcessTools.createTestJvm(MacPath.class.getName());
pb.environment().put("LC_ALL", "en_US.UTF-8");
ProcessTools.executeProcess(pb)
.outputTo(System.out)

@ -131,7 +131,7 @@ public class TestCrossProcessStreaming {
static Process start() throws Exception {
String[] args = {"-XX:StartFlightRecording", EventProducer.class.getName()};
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false, args);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(args);
return ProcessTools.startProcess("Event-Producer", pb,
line -> line.contains(MAIN_STARTED),
0, TimeUnit.SECONDS);

@ -63,7 +63,7 @@ public final class TestProcess implements AutoCloseable {
"-XX:StartFlightRecording:settings=none",
TestProcess.class.getName(), path.toString()
};
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(false, args);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(args);
process = ProcessTools.startProcess(name, pb);
}

@ -91,8 +91,7 @@ public class TestDumpReason {
private static long runProcess(Class<?> crasher) throws Exception {
System.out.println("Test case for " + crasher.getName());
Process p = ProcessTools.createJavaProcessBuilder(
true,
Process p = ProcessTools.createTestJvm(
"-Xmx64m",
"-XX:-CreateCoredumpOnCrash",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",

@ -91,7 +91,7 @@ public class TestShutdownEvent {
}
private static void runSubtest(int subTestIndex) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-Xlog:jfr=debug",
"-XX:-CreateCoredumpOnCrash",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",

@ -110,7 +110,7 @@ public class TestDumpOnCrash {
private static long runProcess(Class<?> crasher, String signal, boolean disk) throws Exception {
System.out.println("Test case for crasher " + crasher.getName());
final String flightRecordingOptions = "dumponexit=true,disk=" + Boolean.toString(disk);
Process p = ProcessTools.createJavaProcessBuilder(true,
Process p = ProcessTools.createTestJvm(
"-Xmx64m",
"-XX:-CreateCoredumpOnCrash",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",

@ -51,7 +51,7 @@ public class TestJfrJavaBase {
public static void main(String[] args) throws Exception {
OutputAnalyzer output;
if (args.length == 0) {
output = ProcessTools.executeProcess(ProcessTools.createJavaProcessBuilder(false,
output = ProcessTools.executeProcess(ProcessTools.createJavaProcessBuilder(
"-Dtest.jdk=" + System.getProperty("test.jdk"),
"--limit-modules", "java.base", "-cp", System.getProperty("java.class.path"),
TestJfrJavaBase.class.getName(), "runtest"));

@ -94,7 +94,7 @@ public class TestDumpOnExit {
}
private static void testDumponExit(Supplier<Path> p,String... args) throws Exception, IOException {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, args);
ProcessBuilder pb = ProcessTools.createTestJvm(args);
OutputAnalyzer output = ProcessTools.executeProcess(pb);
System.out.println(output.getOutput());
output.shouldHaveExitValue(0);

@ -485,21 +485,19 @@ public class TestMemoryOptions {
final String flightRecorderOptions = tc.getTestString();
ProcessBuilder pb;
if (flightRecorderOptions != null) {
pb = ProcessTools.createJavaProcessBuilder(true,
"--add-exports=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
flightRecorderOptions,
"-XX:StartFlightRecording",
SUT.class.getName(),
tc.getTestName());
pb = ProcessTools.createTestJvm("--add-exports=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
flightRecorderOptions,
"-XX:StartFlightRecording",
SUT.class.getName(),
tc.getTestName());
} else {
// default, no FlightRecorderOptions passed
pb = ProcessTools.createJavaProcessBuilder(true,
"--add-exports=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
"-XX:StartFlightRecording",
SUT.class.getName(),
tc.getTestName());
pb = ProcessTools.createTestJvm("--add-exports=jdk.jfr/jdk.jfr.internal=ALL-UNNAMED",
"--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED",
"-XX:StartFlightRecording",
SUT.class.getName(),
tc.getTestName());
}
System.out.println("Driver launching SUT with string: " + flightRecorderOptions != null ? flightRecorderOptions : "default");

@ -57,14 +57,14 @@ public class TestMultipleStartupRecordings {
private static void launchUnary(String options) throws Exception {
String recording1 = START_FLIGHT_RECORDING + (options != null ? options : "");
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, recording1, MainClass.class.getName());
ProcessBuilder pb = ProcessTools.createTestJvm(recording1, MainClass.class.getName());
test(pb, "Started recording 1");
}
private static void launchBinary(String options1, String options2) throws Exception {
String recording1 = START_FLIGHT_RECORDING + (options1 != null ? options1 : "");
String recording2 = START_FLIGHT_RECORDING + (options2 != null ? options2 : "");
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, recording1, recording2, MainClass.class.getName());
ProcessBuilder pb = ProcessTools.createTestJvm(recording1, recording2, MainClass.class.getName());
test(pb, "Started recording 1", "Started recording 2");
}
@ -72,7 +72,7 @@ public class TestMultipleStartupRecordings {
String recording1 = START_FLIGHT_RECORDING + (options1 != null ? options1 : "");
String recording2 = START_FLIGHT_RECORDING + (options2 != null ? options2 : "");
String recording3 = START_FLIGHT_RECORDING + (options3 != null ? options3 : "");
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, recording1, recording2, recording3, MainClass.class.getName());
ProcessBuilder pb = ProcessTools.createTestJvm(recording1, recording2, recording3, MainClass.class.getName());
test(pb, "Started recording 1", "Started recording 2", "Started recording 3");
}
@ -96,7 +96,7 @@ public class TestMultipleStartupRecordings {
String flightRecorderOptions = FLIGHT_RECORDER_OPTIONS + "=maxchunksize=8m";
String recording1 = START_FLIGHT_RECORDING + "=filename=recording1.jfr";
String recording2 = START_FLIGHT_RECORDING + "=name=myrecording,filename=recording2.jfr";
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, flightRecorderOptions, recording1, recording2, MainClass.class.getName());
ProcessBuilder pb = ProcessTools.createTestJvm(flightRecorderOptions, recording1, recording2, MainClass.class.getName());
test(pb, "Started recording 1", "Started recording 2");
}

@ -106,7 +106,7 @@ public class TestRetransformUsingLog {
}
System.out.println();
System.out.println();
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, args.toArray(new String[0]));
ProcessBuilder pb = ProcessTools.createTestJvm(args);
OutputAnalyzer out = ProcessTools.executeProcess(pb);
System.out.println(out.getOutput());
verifier.accept(out);

@ -55,7 +55,7 @@ public class TestStartDuration {
}
private static void testDurationInRange(String duration, Duration durationString, boolean wait) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:StartFlightRecording=name=TestStartDuration,duration=" + duration, TestValues.class.getName(),
durationString.toString(), wait ? "wait" : "");
OutputAnalyzer out = ProcessTools.executeProcess(pb);
@ -65,7 +65,7 @@ public class TestStartDuration {
private static void testDurationJavaVersion(String duration, boolean inRange) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:StartFlightRecording=name=TestStartDuration,duration=" + duration, "-version");
OutputAnalyzer out = ProcessTools.executeProcess(pb);

@ -47,7 +47,7 @@ public class TestStartName {
}
private static void testName(String recordingName, boolean validName) throws Exception {
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
"-XX:StartFlightRecording=name=" + recordingName, TestName.class.getName(), recordingName);
OutputAnalyzer out = ProcessTools.executeProcess(pb);

@ -119,7 +119,7 @@ public class SSLEngineKeyLimit {
System.out.println("test.java.opts: " +
System.getProperty("test.java.opts"));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
Utils.addTestJavaOpts("SSLEngineKeyLimit", "p", args[1]));
OutputAnalyzer output = ProcessTools.executeProcess(pb);

@ -189,7 +189,7 @@ public class ResumptionUpdateBoundValues {
System.out.println("test.java.opts: " +
System.getProperty("test.java.opts"));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
Utils.addTestJavaOpts("ResumptionUpdateBoundValues", "p"));
OutputAnalyzer output = ProcessTools.executeProcess(pb);

@ -124,7 +124,7 @@ public class SSLSocketKeyLimit {
System.out.println("test.java.opts: " +
System.getProperty("test.java.opts"));
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true,
ProcessBuilder pb = ProcessTools.createTestJvm(
Utils.addTestJavaOpts("SSLSocketKeyLimit", "p", args[1]));
OutputAnalyzer output = ProcessTools.executeProcess(pb);

@ -256,7 +256,7 @@ public class CDSTestUtils {
for (String s : opts.suffix) cmd.add(s);
String[] cmdLine = cmd.toArray(new String[cmd.size()]);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
ProcessBuilder pb = ProcessTools.createTestJvm(cmdLine);
return executeAndLog(pb, "dump");
}
@ -414,7 +414,7 @@ public class CDSTestUtils {
for (String s : opts.suffix) cmd.add(s);
String[] cmdLine = cmd.toArray(new String[cmd.size()]);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
ProcessBuilder pb = ProcessTools.createTestJvm(cmdLine);
return executeAndLog(pb, "exec");
}

@ -74,7 +74,7 @@ public class AppExecutorHelper {
Collections.addAll(arguments, classArguments);
}
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, arguments.toArray(new String[0]));
ProcessBuilder pb = ProcessTools.createTestJvm(arguments);
return ProcessTools.executeProcess(pb);
}
}

@ -273,19 +273,7 @@ public final class ProcessTools {
* @return The ProcessBuilder instance representing the java command.
*/
public static ProcessBuilder createJavaProcessBuilder(List<String> command) {
return createJavaProcessBuilder(false, command);
}
/**
* Create ProcessBuilder using the java launcher from the jdk to be tested.
*
* @param addTestVmAndJavaOptions If true, adds test.vm.opts and test.java.opts
* to the java arguments.
* @param command Arguments to pass to the java command.
* @return The ProcessBuilder instance representing the java command.
*/
public static ProcessBuilder createJavaProcessBuilder(boolean addTestVmAndJavaOptions, List<String> command) {
return createJavaProcessBuilder(addTestVmAndJavaOptions, command.toArray(String[]::new));
return createJavaProcessBuilder(command.toArray(String[]::new));
}
/**
@ -295,18 +283,6 @@ public final class ProcessTools {
* @return The ProcessBuilder instance representing the java command.
*/
public static ProcessBuilder createJavaProcessBuilder(String... command) {
return createJavaProcessBuilder(false, command);
}
/**
* Create ProcessBuilder using the java launcher from the jdk to be tested.
*
* @param addTestVmAndJavaOptions If true, adds test.vm.opts and test.java.opts
* to the java arguments.
* @param command Arguments to pass to the java command.
* @return The ProcessBuilder instance representing the java command.
*/
public static ProcessBuilder createJavaProcessBuilder(boolean addTestVmAndJavaOptions, String... command) {
String javapath = JDKToolFinder.getJDKTool("java");
ArrayList<String> args = new ArrayList<>();
@ -315,10 +291,6 @@ public final class ProcessTools {
args.add("-cp");
args.add(System.getProperty("java.class.path"));
if (addTestVmAndJavaOptions) {
Collections.addAll(args, Utils.getTestJavaOpts());
}
Collections.addAll(args, command);
// Reporting
@ -341,6 +313,36 @@ public final class ProcessTools {
}
}
/**
* Create ProcessBuilder using the java launcher from the jdk to be tested.
* The default jvm options from jtreg, test.vm.opts and test.java.opts, are added.
*
* The command line will be like:
* {test.jdk}/bin/java {test.vm.opts} {test.java.opts} cmds
* Create ProcessBuilder using the java launcher from the jdk to be tested.
*
* @param command Arguments to pass to the java command.
* @return The ProcessBuilder instance representing the java command.
*/
public static ProcessBuilder createTestJvm(List<String> command) {
return createTestJvm(command.toArray(String[]::new));
}
/**
* Create ProcessBuilder using the java launcher from the jdk to be tested.
* The default jvm options from jtreg, test.vm.opts and test.java.opts, are added.
*
* The command line will be like:
* {test.jdk}/bin/java {test.vm.opts} {test.java.opts} cmds
* Create ProcessBuilder using the java launcher from the jdk to be tested.
*
* @param command Arguments to pass to the java command.
* @return The ProcessBuilder instance representing the java command.
*/
public static ProcessBuilder createTestJvm(String... command) {
return createJavaProcessBuilder(Utils.prependTestJavaOpts(command));
}
/**
* Executes a test jvm process, waits for it to finish and returns the process output.
* The default jvm options from jtreg, test.vm.opts and test.java.opts, are added.
@ -372,7 +374,7 @@ public final class ProcessTools {
* @return The output from the process.
*/
public static OutputAnalyzer executeTestJvm(String... cmds) throws Exception {
ProcessBuilder pb = createJavaProcessBuilder(true, cmds);
ProcessBuilder pb = createTestJvm(cmds);
return executeProcess(pb);
}