RFR: 8244010: Simplify usages of ProcessTools.createJavaProcessBuilder in our tests

Stefan Karlsson stefan.karlsson at oracle.com
Tue Apr 28 11:58:35 UTC 2020


Hi all,

Please review this patch to simplify usages of 
ProcessTools.createJavaProcessBuilder in our tests.

https://cr.openjdk.java.net/~stefank/8244010/webrev.01/
https://bugs.openjdk.java.net/browse/JDK-8244010

I saw all this code when reviewing changes to how we pass flags in our 
tests. There are a many places where arguments are converted and passed 
back and forth in String[] and Collections.

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

If we add an overload the createJavaProcessBuilder, that takes a 
Collection<String> as an argument, then we can write the code above as:
    ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(argsList);

Other places temporarily put the flags in a String[], where most calls 
simply lists the arguments in the call:
   String[] opts = {Xmx, "-XX:NativeMemoryTracking=detail", 
"-XX:+UseParallelGC", "-version"};
   ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(opts);

And some places put the args in a temporary Collection:
   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]));

I'd like to cleanup, simplify, and unify many of these usages.

I've tested this by running all the changed tests locally.

Thanks,
StefanK


More information about the hotspot-dev mailing list