예제 #1
0
  public void run(BuildExperimentSpec experiment, MeasuredOperationList results) {
    System.out.println();
    System.out.println(String.format("%s ...", experiment.getDisplayName()));
    System.out.println();

    File workingDirectory = experiment.getInvocation().getWorkingDirectory();
    final List<String> additionalJvmOpts = dataCollector.getAdditionalJvmOpts(workingDirectory);
    final List<String> additionalArgs = dataCollector.getAdditionalArgs(workingDirectory);

    GradleInvocationSpec buildSpec =
        experiment
            .getInvocation()
            .withAdditionalJvmOpts(additionalJvmOpts)
            .withAdditionalArgs(additionalArgs);
    GradleSession session = executerProvider.session(buildSpec);

    session.prepare();
    try {
      for (int i = 0; i < experiment.getWarmUpCount(); i++) {
        System.out.println();
        System.out.println(String.format("Warm-up #%s", i + 1));
        runOnce(session, new MeasuredOperationList());
      }
      for (int i = 0; i < experiment.getInvocationCount(); i++) {
        System.out.println();
        System.out.println(String.format("Test run #%s", i + 1));
        runOnce(session, results);
      }
    } finally {
      session.cleanup();
    }
  }
예제 #2
0
  private void runOnce(final GradleSession session, MeasuredOperationList results) {
    final Runnable runner = session.runner();

    MeasuredOperation operation =
        timer.measure(
            new Action<MeasuredOperation>() {
              @Override
              public void execute(MeasuredOperation measuredOperation) {
                runner.run();
              }
            });

    if (operation.getException() == null) {
      dataCollector.collect(session.getInvocation().getWorkingDirectory(), operation);
    }

    results.add(operation);
  }