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