From 228da62fa791e1532826f8e17b945c3d8cbc1300 Mon Sep 17 00:00:00 2001 From: Yuqian Li Date: Thu, 26 Oct 2017 15:38:30 -0400 Subject: Output calmbench json in nanobench format Meanwhile, we also make the bot name more similar to the perf bot. Bug: skia: Change-Id: I8b0e6aa2d927aa4a0ce57606345589adb6e920b3 Reviewed-on: https://skia-review.googlesource.com/64082 Reviewed-by: Eric Boren Reviewed-by: Joe Gregorio Commit-Queue: Yuqian Li --- tools/calmbench/ab.py | 36 ++++++++++++++++++++++++++++++++---- tools/calmbench/calmbench.py | 12 +++++++++++- 2 files changed, 43 insertions(+), 5 deletions(-) (limited to 'tools/calmbench') diff --git a/tools/calmbench/ab.py b/tools/calmbench/ab.py index e417414820..2a3944d577 100644 --- a/tools/calmbench/ab.py +++ b/tools/calmbench/ab.py @@ -78,6 +78,11 @@ def parse_args(): help="If set, no verbose thread info will be printed.") parser.set_defaults(concise=False) + # Additional args for bots + BHELP = "bot specific options" + parser.add_argument('--githash', type=str, default=[], nargs='+', help=BHELP) + parser.add_argument('--keys', type=str, default=[], nargs='+', help=BHELP) + args = parser.parse_args() args.skip_b = args.skip_b == "true" args.noinit = args.noinit == "true" @@ -252,6 +257,13 @@ def format_r(r): return ('%6.2f' % percentage(r)) + "%" +def normalize_r(r): + if r > 1.0: + return r - 1.0 + else: + return 1.0 - 1/r + + def test(): args = parse_args() @@ -296,10 +308,26 @@ def test(): (format_r(r), suspect) with open("%s/bench_%s_%s.json" % (args.outdir, args.a, args.b), 'w') as f: - f.write(json.dumps(map( - lambda bench: {bench: regression(bench)}, - suspects - ))) + results = {} + for bench in timesA: + r = regression(bench) if bench in suspects else 1.0 + results[bench] = { + args.config: { + "signed_regression": normalize_r(r), + "lower_quantile_ms": get_lower_upper(timesA[bench])[0] * 1e-6, + "upper_quantile_ms": get_lower_upper(timesA[bench])[1] * 1e-6 + } + } + + output = {"results": results} + if args.githash: + output["gitHash"] = args.githash + if args.keys: + keys = {} + for i in range(len(args.keys) / 2): + keys[args.keys[i * 2]] = args.keys[i * 2 + 1] + output["key"] = keys + f.write(json.dumps(output, indent=4)) print ("\033[36mJSON results available in %s\033[0m" % f.name) with open("%s/bench_%s_%s.csv" % (args.outdir, args.a, args.b), 'w') as out: diff --git a/tools/calmbench/calmbench.py b/tools/calmbench/calmbench.py index 50208cc3fd..b786b5f346 100644 --- a/tools/calmbench/calmbench.py +++ b/tools/calmbench/calmbench.py @@ -88,7 +88,7 @@ def parse_args(): ['--baseline', str, 'master', baseline_help], ['--basearg', str, '', basearg_help], ['--reps', int, 2, reps_help], - ['--threads', int, default_threads, threads_help] + ['--threads', int, default_threads, threads_help], ] for d in definitions: @@ -108,6 +108,11 @@ def parse_args(): parser.set_defaults(noinit=False); parser.set_defaults(concise=False); + # Additional args for bots + BHELP = "bot specific options" + parser.add_argument('--githash', type=str, help=BHELP) + parser.add_argument('--keys', type=str, default=[], nargs='+', help=BHELP) + args = parser.parse_args() if not args.basearg: args.basearg = args.extraarg @@ -189,6 +194,11 @@ def main(): "true" if args.noinit else "false" ] + if args.githash: + command += ['--githash', args.githash] + if args.keys: + command += (['--keys'] + args.keys) + if args.concise: command.append("--concise") -- cgit v1.2.3