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

Stefan Karlsson stefank at openjdk.org
Mon Dec 11 19:37:44 UTC 2023


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.

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

Depends on: https://git.openjdk.org/jdk/pull/17049

Commit messages:
 - 8321812: Update GC tests to use execute[Limited]TestJava

Changes: https://git.openjdk.org/jdk/pull/17067/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17067&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8321812
  Stats: 665 lines in 131 files changed: 32 ins; 216 del; 417 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 hotspot-gc-dev mailing list