< prev index next >
test/hotspot/jtreg/runtime/appcds/TestCommon.java
Print this page
@@ -143,10 +143,19 @@
String[] cmdLine = cmd.toArray(new String[cmd.size()]);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
return executeAndLog(pb, "dump");
}
+ // This allows you to run the AppCDS tests with JFR enabled at runtime (though not at
+ // dump time, as that's uncommon for typical AppCDS users).
+ //
+ // To run in this special mode, specify the following in your jtreg command-line
+ // -vmoptions:-Dtest.cds.run.with.jfr=true
+ //
+ // Some AppCDS tests are not compatible with this mode. See the group
+ // hotspot_appcds_with_jfr in ../../TEST.ROOT for details.
+ private static final boolean RUN_WITH_JFR = Boolean.getBoolean("test.cds.run.with.jfr");
// Execute JVM using AppCDS archive with specified AppCDSOptions
public static OutputAnalyzer runWithArchive(AppCDSOptions opts)
throws Exception {
@@ -164,10 +173,26 @@
cmd.add(opts.appJar);
}
for (String s : opts.suffix) cmd.add(s);
+ if (RUN_WITH_JFR) {
+ boolean usesJFR = false;
+ for (String s : cmd) {
+ if (s.startsWith("-XX:StartFlightRecording=") || s.startsWith("-XX:FlightRecorderOptions")) {
+ System.out.println("JFR option might have been specified. Don't interfere: " + s);
+ usesJFR = true;
+ break;
+ }
+ }
+ if (!usesJFR) {
+ System.out.println("JFR option not specified. Enabling JFR ...");
+ cmd.add(0, "-XX:StartFlightRecording=dumponexit=true");
+ System.out.println(cmd);
+ }
+ }
+
String[] cmdLine = cmd.toArray(new String[cmd.size()]);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, cmdLine);
return executeAndLog(pb, "exec");
}
< prev index next >