RFR: 8321812: Update GC tests to use execute[Limited]TestJava [v7]

Stefan Karlsson stefank at openjdk.org
Fri Jan 5 09:14:56 UTC 2024


> A lot of our tests use a multi-step recipe to spawn and wait for a process. Here's an example
> 
>     ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder(
>          "-XX:-UseTLAB",
>          "-XX:+UnlockDiagnosticVMOptions",
>          "-XX:+VerifyDuringStartup",
>          "-Xlog:gc+verify=debug",
>          "-version");
>     OutputAnalyzer output = new OutputAnalyzer(pb.start());
>     ... do something with output and wait for the process to complete ...
> 
> 
> These are the steps involved:
> 
> 1) Create a `ProcessBuilder`
> 2) Call `ProcessBuilder::start`
> 3) Create an `OutputAnalyzer`
> 4) Perform an operation that finally waits for the process to, at least partially, complete (OutputAnalyzer::getOutput, OutputAnalyzer::shouldHaveExitValue(), and more).
> 
> Almost all our tests could be converted to use a single call to `ProcessTools.executeTestJava` (or `executeLimitedTestJava`), which spawns the process, makes sure that it has fully completed, and then returns a filled-in OutputAnalyzer to the caller. The above example would become:
> 
> 
>     OutputAnalyzer output = ProcessTools.executeTestJava(
>          "-XX:-UseTLAB",
>          "-XX:+UnlockDiagnosticVMOptions",
>          "-XX:+VerifyDuringStartup",
>          "-Xlog:gc+verify=debug",
>          "-version");
> 
> 
> I propose that we make this change in the GC tests, to make our code simpler and hopefully easier to read.
> 
> Note: There's a few changes to the throws statements because some ProcessTools APIs throws IOException while others throw Exception.
> 
> Testing: I've done testing on a similar set of changes, but I'm going to run the appropriate, final tests while this is being considered/reviewed.

Stefan Karlsson has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 18 commits:

 - Merge remote-tracking branch 'upstream/master' into 8321812_use_executeTestJava_in_gc_tests
 - Update Shenandoah test
 - Remove import from old version of the code
 - More tests could use ProcessTools.executeLimitedTestJava
 - Skip using a ProcessBuilder for some tests
 - Merge branch '8322920_throwable_in_executeProcess' into 8321812_use_executeTestJava_in_gc_tests
 - 8322920: Some executeProcess overloads are declared to throw Throwable
 - Merge remote-tracking branch 'upstream/master' into 8321812_use_executeTestJava_in_gc_tests
 - Remove unused pb
 - Merge remote-tracking branch 'upstream/master' into 8321812_use_executeTestJava_in_gc_tests
 - ... and 8 more: https://git.openjdk.org/jdk/compare/868f8745...8a6aff1f

-------------

Changes: https://git.openjdk.org/jdk/pull/17067/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17067&range=06
  Stats: 699 lines in 132 files changed: 30 ins; 223 del; 446 mod
  Patch: https://git.openjdk.org/jdk/pull/17067.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/17067/head:pull/17067

PR: https://git.openjdk.org/jdk/pull/17067


More information about the shenandoah-dev mailing list