protected void runTest()

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();
    }

  }