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