Add errors to run-benchmark exception handling.
[WebKit-https.git] / Tools / Scripts / run-benchmark
1 #!/usr/bin/env python
2
3 import argparse
4 import logging
5 import platform
6 import sys
7
8 from webkitpy.benchmark_runner.benchmark_runner import BenchmarkRunner
9 from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import BrowserDriverFactory
10
11
12 _log = logging.getLogger()
13 _log.setLevel(logging.INFO)
14 ch = logging.StreamHandler()
15 formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
16 ch.setFormatter(formatter)
17 _log.addHandler(ch)
18
19
20 def main():
21     parser = argparse.ArgumentParser(description='Automate the browser based performance benchmarks')
22     parser.add_argument('--output-file', dest='output', default=None)
23     parser.add_argument('--build-directory', dest='buildDir', help='Path to the browser executable. e.g. WebKitBuild/Release/')
24     parser.add_argument('--plan', dest='plan', required=True, help='Benchmark plan to run. e.g. speedometer, jetstream')
25     parser.add_argument('--platform', dest='platform', required=True, choices=BrowserDriverFactory.available_platforms())
26     # FIXME: Should we add chrome as an option? Well, chrome uses webkit in iOS.
27     parser.add_argument('--browser', dest='browser', required=True, choices=BrowserDriverFactory.available_browsers())
28     parser.add_argument('--debug', action='store_true')
29     parser.add_argument('--local-copy', dest='localCopy', help='Path to a local copy of the benchmark. e.g. PerformanceTests/SunSpider/')
30     parser.add_argument('--count', dest='countOverride', type=int, help='Number of times to run the benchmark. e.g. 5')
31     args = parser.parse_args()
32
33     if args.debug:
34         _log.setLevel(logging.DEBUG)
35     _log.debug('Initializing program with following parameters')
36     _log.debug('\toutput file name\t: %s' % args.output)
37     _log.debug('\tbuild directory\t: %s' % args.buildDir)
38     _log.debug('\tplan name\t: %s', args.plan)
39     try:
40         runner = BenchmarkRunner(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser)
41         runner.execute()
42     except Exception as error:
43         sys.exit("Error occurred running the benchmark: %s" % error)
44
45
46 if __name__ == '__main__':
47     sys.exit(main())