diff options
author | Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com> | 2018-05-29 12:13:11 -0500 |
---|---|---|
committer | Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com> | 2018-06-01 16:32:43 -0500 |
commit | a650b05ebee8fb8d0df03396002e680b3a79918d (patch) | |
tree | d92996746ffd77cb1d737f29c8896a570c74482d | |
parent | 195abbf4cd635fcaaf60016da488768b6e9d7e85 (diff) | |
download | glibc-a650b05ebee8fb8d0df03396002e680b3a79918d.tar.gz glibc-a650b05ebee8fb8d0df03396002e680b3a79918d.tar.xz glibc-a650b05ebee8fb8d0df03396002e680b3a79918d.zip |
benchtests: Catch exceptions in input arguments
Catch runtime exceptions in case the user provided: wrong base function, attribute(s) or input file. In any of the latter, quit immediately with non-zero return code. * benchtests/scripts/compare_string.py: (process_results) Catch exception in non-existent base_func and catch exception in non-existent attribute. (parse_file) Catch exception in non-existent input file.
-rw-r--r-- | ChangeLog | 7 | ||||
-rwxr-xr-x | benchtests/scripts/compare_strings.py | 34 |
2 files changed, 31 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index c855a2c787..d9b1ea34cf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2018-06-01 Leonardo Sandoval <leonardo.sandoval.gonzalez@intel.com> + * benchtests/scripts/compare_string.py: (process_results) Catch + exception in non-existent base_func and catch exception in + non-existent attribute. + (parse_file) Catch exception if input file does not exist. + +2018-06-01 Leonardo Sandoval <leonardo.sandoval.gonzalez@intel.com> + * benchtests/scripts/compare_string.py: Add --no-diff and --no-header options to avoid diff calculation and omit header, respectively. (main): process --no-diff and --no-header diff --git a/benchtests/scripts/compare_strings.py b/benchtests/scripts/compare_strings.py index 850c455f3a..ddce84a3ac 100755 --- a/benchtests/scripts/compare_strings.py +++ b/benchtests/scripts/compare_strings.py @@ -38,13 +38,16 @@ except ImportError: def parse_file(filename, schema_filename): - with open(schema_filename, 'r') as schemafile: - schema = json.load(schemafile) - with open(filename, 'r') as benchfile: - bench = json.load(benchfile) - validator.validate(bench, schema) - return bench - + try: + with open(schema_filename, 'r') as schemafile: + schema = json.load(schemafile) + with open(filename, 'r') as benchfile: + bench = json.load(benchfile) + validator.validate(bench, schema) + return bench + except FileNotFoundError: + sys.stderr.write('Invalid input file %s.\n' % filename) + sys.exit(os.EX_NOINPUT) def draw_graph(f, v, ifuncs, results): """Plot graphs for functions @@ -93,7 +96,12 @@ def process_results(results, attrs, base_func, graph, no_diff, no_header): base_index = 0 if base_func: - base_index = results['functions'][f]['ifuncs'].index(base_func) + try: + base_index = results['functions'][f]['ifuncs'].index(base_func) + except ValueError: + sys.stderr.write('Invalid -b "%s" parameter. Options: %s.\n' % + (base_func, ', '.join(results['functions'][f]['ifuncs']))) + sys.exit(os.EX_DATAERR) if not no_header: print('Function: %s' % f) @@ -103,7 +111,12 @@ def process_results(results, attrs, base_func, graph, no_diff, no_header): graph_res = {} for res in results['functions'][f]['results']: - attr_list = ['%s=%s' % (a, res[a]) for a in attrs] + try: + attr_list = ['%s=%s' % (a, res[a]) for a in attrs] + except KeyError as ke: + sys.stderr.write('Invalid -a %s parameter. Options: %s.\n' + % (ke, ', '.join([a for a in res.keys() if a != 'timings']))) + sys.exit(os.EX_DATAERR) i = 0 key = ', '.join(attr_list) sys.stdout.write('%36s: ' % key) @@ -137,6 +150,7 @@ def main(args): results = parse_file(args.input, args.schema) process_results(results, attrs, base_func, args.graph, args.no_diff, args.no_header) + return os.EX_OK if __name__ == '__main__': @@ -162,4 +176,4 @@ if __name__ == '__main__': help='Do not print the header.') args = parser.parse_args() - main(args) + sys.exit(main(args)) |