Skip to content

Commit

Permalink
Fold output of each benchmark
Browse files Browse the repository at this point in the history
  • Loading branch information
JaroslavTulach committed Aug 29, 2024
1 parent 5fba572 commit e21edc1
Showing 1 changed file with 83 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,16 @@
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import org.openjdk.jmh.infra.BenchmarkParams;
import org.openjdk.jmh.infra.IterationParams;
import org.openjdk.jmh.results.BenchmarkResult;
import org.openjdk.jmh.results.IterationResult;
import org.openjdk.jmh.results.RunResult;
import org.openjdk.jmh.runner.Defaults;
import org.openjdk.jmh.runner.Runner;
import org.openjdk.jmh.runner.RunnerException;
import org.openjdk.jmh.runner.format.OutputFormat;
import org.openjdk.jmh.runner.format.OutputFormatFactory;
import org.openjdk.jmh.runner.options.CommandLineOptionException;
import org.openjdk.jmh.runner.options.CommandLineOptions;
import org.openjdk.jmh.runner.options.OptionsBuilder;
Expand All @@ -31,7 +38,10 @@ public static void run(String[] args) throws RunnerException {
// Do not report results from `compileOnly` mode
runCompileOnly(cmdOpts.getIncludes());
} else {
Runner jmhRunner = new Runner(cmdOpts);
var output =
OutputFormatFactory.createFormatInstance(
System.out, cmdOpts.verbosity().orElse(Defaults.VERBOSITY));
Runner jmhRunner = new Runner(cmdOpts, new GitHubActionsFormat(output));

if (cmdOpts.shouldHelp()) {
System.err.println("Enso benchmark runner: A modified JMH runner for Enso benchmarks.");
Expand Down Expand Up @@ -107,4 +117,76 @@ private static BenchmarkItem reportResult(String label, RunResult result) throws
Report.writeToFile(report, REPORT_FILE);
return benchItem;
}

private static final class GitHubActionsFormat implements OutputFormat {
private final OutputFormat output;

GitHubActionsFormat(OutputFormat output) {
this.output = output;
}

@Override
public void iteration(BenchmarkParams benchParams, IterationParams params, int iteration) {
output.iteration(benchParams, params, iteration);
}

@Override
public void iterationResult(
BenchmarkParams benchParams, IterationParams params, int iteration, IterationResult data) {
output.iterationResult(benchParams, params, iteration, data);
}

@Override
public void startBenchmark(BenchmarkParams benchParams) {
output.println("::group::" + benchParams.getBenchmark());
}

@Override
public void endBenchmark(BenchmarkResult result) {
output.println("::endgroup::");
}

@Override
public void startRun() {
output.startRun();
}

@Override
public void endRun(Collection<RunResult> result) {
output.endRun(result);
}

@Override
public void print(String s) {
output.print(s);
}

@Override
public void println(String s) {
output.println(s);
}

@Override
public void flush() {
output.flush();
}

@Override
public void close() {}

@Override
public void verbosePrintln(String s) {
output.verbosePrintln(s);
}

@Override
public void write(int b) {
output.write(b);
}

@Override
public void write(byte[] b) throws IOException {
output.write(b);
}
}
}

0 comments on commit e21edc1

Please sign in to comment.