< prev index next >

test/hotspot/jtreg/runtime/appcds/TestCommon.java

Print this page

*** 143,152 **** --- 143,161 ---- 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,173 **** --- 173,198 ---- 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 >