aboutsummaryrefslogtreecommitdiff
path: root/crosperf
diff options
context:
space:
mode:
authorManoj Gupta <manojgupta@google.com>2016-10-24 13:43:28 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-10-24 20:05:32 -0700
commitaee96b71ad4ffde231ca5bf9c0509d15b0e9b753 (patch)
tree5cc70dd5d37fc80289c502b0e767b92d1e33c743 /crosperf
parentde600776d8342db1ae2579efd4ca07adbc310d6c (diff)
downloadtoolchain-utils-aee96b71ad4ffde231ca5bf9c0509d15b0e9b753.tar.gz
Handle exceptions in crosperf.
Change error message in buildbot. Catch exceptions in crosperf exceution to do a graceful exit. BUG=chromium:622875 TEST=ran run_tests Change-Id: I03093ab27edcc85e318ad43097ab8cd316792dcb Reviewed-on: https://chrome-internal-review.googlesource.com/299275 Commit-Ready: Manoj Gupta <manojgupta@google.com> Tested-by: Manoj Gupta <manojgupta@google.com> Reviewed-by: Caroline Tice <cmtice@google.com> Reviewed-by: Luis Lozano <llozano@chromium.org>
Diffstat (limited to 'crosperf')
-rwxr-xr-xcrosperf/crosperf.py66
1 files changed, 41 insertions, 25 deletions
diff --git a/crosperf/crosperf.py b/crosperf/crosperf.py
index 0a32cb8b..b78c8b9e 100755
--- a/crosperf/crosperf.py
+++ b/crosperf/crosperf.py
@@ -26,21 +26,23 @@ import test_flag
def SetupParserOptions(parser):
"""Add all options to the parser."""
- parser.add_argument('--dry_run',
- dest='dry_run',
- help=('Parse the experiment file and '
- 'show what will be done'),
- action='store_true',
- default=False)
+ parser.add_argument(
+ '--dry_run',
+ dest='dry_run',
+ help=('Parse the experiment file and '
+ 'show what will be done'),
+ action='store_true',
+ default=False)
# Allow each of the global fields to be overridden by passing in
# options. Add each global field as an option.
option_settings = GlobalSettings('')
for field_name in option_settings.fields:
field = option_settings.fields[field_name]
- parser.add_argument('--%s' % field.name,
- dest=field.name,
- help=field.description,
- action='store')
+ parser.add_argument(
+ '--%s' % field.name,
+ dest=field.name,
+ help=field.description,
+ action='store')
def ConvertOptionsToSettings(options):
@@ -68,20 +70,22 @@ def CallExitHandler(signum, _):
sys.exit(128 + signum)
-def Main(argv):
+def RunCrosperf(argv):
parser = argparse.ArgumentParser()
- parser.add_argument('--noschedv2',
- dest='noschedv2',
- default=False,
- action='store_true',
- help=('Do not use new scheduler. '
- 'Use original scheduler instead.'))
- parser.add_argument('-l',
- '--log_dir',
- dest='log_dir',
- default='',
- help='The log_dir, default is under <crosperf_logs>/logs')
+ parser.add_argument(
+ '--noschedv2',
+ dest='noschedv2',
+ default=False,
+ action='store_true',
+ help=('Do not use new scheduler. '
+ 'Use original scheduler instead.'))
+ parser.add_argument(
+ '-l',
+ '--log_dir',
+ dest='log_dir',
+ default='',
+ help='The log_dir, default is under <crosperf_logs>/logs')
SetupParserOptions(parser)
options, args = parser.parse_known_args(argv)
@@ -117,12 +121,24 @@ def Main(argv):
if options.dry_run:
runner = MockExperimentRunner(experiment, json_report)
else:
- runner = ExperimentRunner(experiment,
- json_report,
- using_schedv2=(not options.noschedv2))
+ runner = ExperimentRunner(
+ experiment, json_report, using_schedv2=(not options.noschedv2))
runner.Run()
+def Main(argv):
+ try:
+ RunCrosperf(argv)
+ except Exception as ex:
+ # Flush buffers before exiting to avoid out of order printing
+ sys.stdout.flush()
+ sys.stderr.flush()
+ print('Crosperf error: %s' % repr(ex))
+ sys.stdout.flush()
+ sys.stderr.flush()
+ sys.exit(1)
+
+
if __name__ == '__main__':
Main(sys.argv)