in harness/src/main/java/org/apache/geode/perftest/runner/DefaultTestRunner.java [68:117]
protected void runTest(TestConfig config, String testName)
throws Exception {
File benchmarkOutput = new File(outputDir, testName);
if (benchmarkOutput.exists()) {
throw new IllegalStateException(
"Benchmark output directory already exists: " + benchmarkOutput.getPath());
}
benchmarkOutput.mkdirs();
Properties properties = new Properties();
addVersionProperties(properties, getVersionProperties());
addSystemProperties(properties);
logger.info("Benchmark Properties {}", properties);
String metadataFilename = outputDir + "/testrunner.properties";
Path metadataOutput = Paths.get(metadataFilename);
if (!metadataOutput.toFile().exists()) {
try (FileWriter writer = new FileWriter(metadataOutput.toFile().getAbsoluteFile())) {
properties.store(writer, "Benchmark metadata generated while running tests");
}
}
Map<String, Integer> roles = config.getRoles();
Map<String, List<String>> jvmArgs = config.getJvmArgs();
logger.info("Launching JVMs...");
// launch JVMs in parallel, hook them up
RemoteJVMs remoteJVMs = remoteJvmFactory.launch(roles, jvmArgs);
try {
logger.info("Starting before tasks...");
runTasks(config.getBefore(), remoteJVMs);
logger.info("Starting workload tasks...");
runTasks(config.getWorkload(), remoteJVMs);
logger.info("Starting after tasks...");
runTasks(config.getAfter(), remoteJVMs);
} finally {
// Close before copy otherwise logs, stats, and profiles are incomplete or missing.
remoteJVMs.closeController();
logger.info("Copying results to {}", benchmarkOutput);
remoteJVMs.copyResults(benchmarkOutput);
remoteJVMs.closeInfra();
}
}