aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>2018-05-29 12:13:11 -0500
committerLeonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>2018-06-01 16:32:43 -0500
commita650b05ebee8fb8d0df03396002e680b3a79918d (patch)
treed92996746ffd77cb1d737f29c8896a570c74482d
parent195abbf4cd635fcaaf60016da488768b6e9d7e85 (diff)
downloadglibc-a650b05ebee8fb8d0df03396002e680b3a79918d.zip
glibc-a650b05ebee8fb8d0df03396002e680b3a79918d.tar.gz
glibc-a650b05ebee8fb8d0df03396002e680b3a79918d.tar.bz2
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--ChangeLog7
-rwxr-xr-xbenchtests/scripts/compare_strings.py34
2 files changed, 31 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index c855a2c..d9b1ea3 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 850c455..ddce84a 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))