mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-08 14:20:07 +00:00
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.
This commit is contained in:
parent
195abbf4cd
commit
a650b05ebe
@ -1,3 +1,10 @@
|
||||
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
|
||||
|
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user