--- a/test/lib/jdk/test/lib/cds/CDSTestUtils.java Thu Aug 23 11:33:51 2018 -0400
+++ b/test/lib/jdk/test/lib/cds/CDSTestUtils.java Thu Aug 23 09:35:09 2018 -0700
@@ -200,11 +200,19 @@
}
}
- // Specify this property to copy sdandard output of the child test process to
- // the parent/main stdout of the test.
- // By default such output is logged into a file, and is copied into the main stdout.
- public static final boolean CopyChildStdoutToMainStdout =
- Boolean.valueOf(System.getProperty("test.cds.copy.child.stdout", "true"));
+ // A number to be included in the filename of the stdout and the stderr output file.
+ static int logCounter = 0;
+
+ private static int getNextLogCounter() {
+ return logCounter++;
+ }
+
+ // By default, stdout of child processes are logged in files such as
+ // <testname>-0000-exec.stdout. If you want to also include the stdout
+ // inside jtr files, you can override this in the jtreg command line like
+ // "jtreg -Dtest.cds.copy.child.stdout=true ...."
+ public static final boolean copyChildStdoutToMainStdout =
+ Boolean.getBoolean("test.cds.copy.child.stdout");
// This property is passed to child test processes
public static final String TestTimeoutFactor = System.getProperty("test.timeout.factor", "1.0");
@@ -549,13 +557,17 @@
public static OutputAnalyzer executeAndLog(ProcessBuilder pb, String logName) throws Exception {
long started = System.currentTimeMillis();
OutputAnalyzer output = new OutputAnalyzer(pb.start());
+ String outputFileNamePrefix =
+ getTestName() + "-" + String.format("%04d", getNextLogCounter()) + "-" + logName;
- writeFile(getOutputFile(logName + ".stdout"), output.getStdout());
- writeFile(getOutputFile(logName + ".stderr"), output.getStderr());
+ writeFile(getOutputFile(outputFileNamePrefix + ".stdout"), output.getStdout());
+ writeFile(getOutputFile(outputFileNamePrefix + ".stderr"), output.getStderr());
System.out.println("[ELAPSED: " + (System.currentTimeMillis() - started) + " ms]");
+ System.out.println("[logging stdout to " + outputFileNamePrefix + ".stdout]");
+ System.out.println("[logging stderr to " + outputFileNamePrefix + ".stderr]");
System.out.println("[STDERR]\n" + output.getStderr());
- if (CopyChildStdoutToMainStdout)
+ if (copyChildStdoutToMainStdout)
System.out.println("[STDOUT]\n" + output.getStdout());
return output;