diff options
author | Naohiro Tamura <naohirot@fujitsu.com> | 2021-09-16 09:19:55 +0530 |
---|---|---|
committer | Siddhesh Poyarekar <siddhesh@sourceware.org> | 2021-09-16 09:19:55 +0530 |
commit | cb5088cfd3030cfe7ea875846d9a8623dcddbf4f (patch) | |
tree | f7ae468e878b53f2f6b08cf133c19ca9172e484b /benchtests | |
parent | c484da9087632f2f1b4ab5a6cae4efcd09436d1d (diff) | |
download | glibc-cb5088cfd3030cfe7ea875846d9a8623dcddbf4f.zip glibc-cb5088cfd3030cfe7ea875846d9a8623dcddbf4f.tar.gz glibc-cb5088cfd3030cfe7ea875846d9a8623dcddbf4f.tar.bz2 |
benchtests: Fix validate_benchout.py exceptions
This patch fixed validate_benchout.py two exceptions,
1) AttributeError
if benchout_strings.schema.json is specified, and
2) json.decoder.JSONDecodeError
if benchout file is not JSON.
$ ~/glibc/benchtests/scripts/validate_benchout.py bench-memset.out \
~/glibc/benchtests/scripts/benchout_strings.schema.json
Traceback (most recent call last):
File "/home/naohirot/glibc/benchtests/scripts/validate_benchout.py", line 86, in <module>
sys.exit(main(sys.argv[1:]))
File "/home/naohirot/glibc/benchtests/scripts/validate_benchout.py", line 69, in main
bench.parse_bench(args[0], args[1])
File "/home/naohirot/glibc/benchtests/scripts/import_bench.py", line 139, in parse_bench
do_for_all_timings(bench, lambda b, f, v:
File "/home/naohirot/glibc/benchtests/scripts/import_bench.py", line 107, in do_for_all_timings
if 'timings' not in bench['functions'][func][k].keys():
AttributeError: 'str' object has no attribute 'keys'
$ ~/glibc/benchtests/scripts/validate_benchout.py bench-math-inlines.out \
~/glibc/benchtests/scripts/benchout_strings.schema.json
Traceback (most recent call last):
File "/home/naohirot/glibc/benchtests/scripts/validate_benchout.py", line 86, in <module>
sys.exit(main(sys.argv[1:]))
File "/home/naohirot/glibc/benchtests/scripts/validate_benchout.py", line 69, in main
bench.parse_bench(args[0], args[1])
File "/home/naohirot/glibc/benchtests/scripts/import_bench.py", line 137, in parse_bench
bench = json.load(benchfile)
File "/usr/lib/python3.6/json/__init__.py", line 299, in load
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.6/json/decoder.py", line 342, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 17 (char 16)
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Diffstat (limited to 'benchtests')
-rwxr-xr-x | benchtests/scripts/compare_bench.py | 4 | ||||
-rw-r--r-- | benchtests/scripts/import_bench.py | 2 | ||||
-rwxr-xr-x | benchtests/scripts/validate_benchout.py | 6 |
3 files changed, 9 insertions, 3 deletions
diff --git a/benchtests/scripts/compare_bench.py b/benchtests/scripts/compare_bench.py index 6fcbd08..1a497f8 100755 --- a/benchtests/scripts/compare_bench.py +++ b/benchtests/scripts/compare_bench.py @@ -163,7 +163,11 @@ def plot_graphs(bench1, bench2): def main(bench1, bench2, schema, threshold, stats): bench1 = bench.parse_bench(bench1, schema) + bench.do_for_all_timings(bench1, lambda b, f, v: + b['functions'][f][v]['timings'].sort()) bench2 = bench.parse_bench(bench2, schema) + bench.do_for_all_timings(bench2, lambda b, f, v: + b['functions'][f][v]['timings'].sort()) plot_graphs(bench1, bench2) diff --git a/benchtests/scripts/import_bench.py b/benchtests/scripts/import_bench.py index a799b4e..362c990 100644 --- a/benchtests/scripts/import_bench.py +++ b/benchtests/scripts/import_bench.py @@ -136,6 +136,4 @@ def parse_bench(filename, schema_filename): with open(filename, 'r') as benchfile: bench = json.load(benchfile) validator.validate(bench, schema) - do_for_all_timings(bench, lambda b, f, v: - b['functions'][f][v]['timings'].sort()) return bench diff --git a/benchtests/scripts/validate_benchout.py b/benchtests/scripts/validate_benchout.py index 47df33e..00d5fa0 100755 --- a/benchtests/scripts/validate_benchout.py +++ b/benchtests/scripts/validate_benchout.py @@ -73,11 +73,15 @@ def main(args): except bench.validator.ValidationError as e: return print_and_exit("Invalid benchmark output: %s" % e.message, - os.EX_DATAERR) + os.EX_DATAERR) except bench.validator.SchemaError as e: return print_and_exit("Invalid schema: %s" % e.message, os.EX_DATAERR) + except json.decoder.JSONDecodeError as e: + return print_and_exit("Benchmark output in %s is not JSON." % args[0], + os.EX_DATAERR) + print("Benchmark output in %s is valid." % args[0]) return os.EX_OK |