Changeset 185732 in webkit
- Timestamp:
- Jun 18, 2015 7:32:40 PM (9 years ago)
- Location:
- trunk/Tools
- Files:
-
- 8 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r185713 r185732 1 2015-06-18 Dewei Zhu <dewei_zhu@apple.com> 2 3 Extend capability of run-benchmark script to support mobile device 4 https://bugs.webkit.org/show_bug.cgi?id=146125 5 6 Reviewed by Ryosuke Niwa. 7 8 Extend capability of run-benchmark to support mobile device, and move majority of run-benchmark script code to 9 benchmark_runner directory, and make run-benchmark a wrapping script. Also correct a typo. 10 11 * Scripts/run-benchmark: 12 (main): Deleted. 13 * Scripts/webkitpy/benchmark_runner/benchmark_runner.py: 14 (BenchmarkRunner.__init__): 15 (BenchmarkRunner.execute): 16 * Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py: 17 (BrowserDriver.prepareEnv): 18 * Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py: 19 (OSXBrowserDriver.prepareEnv): 20 * Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py: 21 (OSXSafariDriver.prepareEnv): 22 * Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py: 23 (HTTPServerDriver.getReturnCode): 24 (HTTPServerDriver): 25 (HTTPServerDriver.setDeviceID): 26 * Scripts/webkitpy/benchmark_runner/run_benchmark.py: Copied from Tools/Scripts/run-benchmark. 27 (parse_args): 28 (start): 29 (main): 30 * Scripts/webkitpy/benchmark_runner/utils.py: 31 (getPathFromProjectRoot): 32 1 33 2015-06-18 Jon Lee <jonlee@apple.com> 2 34 -
trunk/Tools/Scripts/run-benchmark
r185339 r185732 1 1 #!/usr/bin/env python 2 2 3 import argparse4 3 import logging 5 import platform6 4 import sys 7 5 8 from webkitpy.benchmark_runner.benchmark_runner import BenchmarkRunner 9 from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import BrowserDriverFactory 6 from webkitpy.benchmark_runner.run_benchmark import main, format_logger 10 7 11 8 12 9 _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 runner = BenchmarkRunner(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser)40 runner.execute()41 42 10 43 11 if __name__ == '__main__': 12 format_logger(_log) 44 13 sys.exit(main()) -
trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py
r185371 r185732 26 26 class BenchmarkRunner(object): 27 27 28 def __init__(self, planFile, localCopy, countOverride, buildDir, outputFile, platform, browser): 29 _log.info('Initializing benchmark running') 28 def __init__(self, planFile, localCopy, countOverride, buildDir, outputFile, platform, browser, httpServerDriverOverride=None, deviceID=None): 30 29 try: 31 30 planFile = self._findPlanFile(planFile) … … 37 36 if countOverride: 38 37 self.plan['count'] = countOverride 38 if httpServerDriverOverride: 39 self.plan['http_server_driver'] = httpServerDriverOverride 39 40 self.browserDriver = BrowserDriverFactory.create([platform, browser]) 40 41 self.httpServerDriver = HTTPServerDriverFactory.create([self.plan['http_server_driver']]) 42 self.httpServerDriver.setDeviceID(deviceID) 41 43 self.buildDir = os.path.abspath(buildDir) if buildDir else None 42 44 self.outputFile = outputFile 45 self.deviceID = deviceID 43 46 except IOError as error: 44 47 _log.error('Can not open plan file: %s - Error %s' % (planFile, error)) … … 69 72 _log.info('Start the iteration %d of current benchmark' % (x + 1)) 70 73 self.httpServerDriver.serve(webRoot) 71 self.browserDriver.prepareEnv( )74 self.browserDriver.prepareEnv(self.deviceID) 72 75 url = urlparse.urljoin(self.httpServerDriver.baseUrl(), self.planName + '/' + self.plan['entry_point']) 73 76 self.browserDriver.launchUrl(url, self.buildDir) -
trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py
r183309 r185732 7 7 8 8 @abc.abstractmethod 9 def prepareEnv(self ):9 def prepareEnv(self, deviceID): 10 10 pass 11 11 -
trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py
r185524 r185732 16 16 bundleIdentifier = None 17 17 18 def prepareEnv(self ):18 def prepareEnv(self, deviceID): 19 19 self.closeBrowsers() 20 20 CGWarpMouseCursorPosition((10, 0)) -
trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py
r185524 r185732 17 17 bundleIdentifier = 'com.apple.Safari' 18 18 19 def prepareEnv(self ):19 def prepareEnv(self, deviceID): 20 20 self.safariProcess = None 21 21 super(OSXSafariDriver, self).prepareEnv() -
trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py
r183520 r185732 20 20 def getReturnCode(self): 21 21 pass 22 23 @abstractmethod 24 def setDeviceID(self, deviceID): 25 pass -
trunk/Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py
r185731 r185732 4 4 import logging 5 5 import platform 6 import sys6 import os 7 7 8 from webkitpy.benchmark_runner.benchmark_runner import BenchmarkRunner9 from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import BrowserDriverFactory8 from benchmark_runner import BenchmarkRunner 9 from browser_driver.browser_driver_factory import BrowserDriverFactory 10 10 11 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) 12 _log = logging.getLogger(__name__) 18 13 19 14 20 def main():15 def parse_args(): 21 16 parser = argparse.ArgumentParser(description='Automate the browser based performance benchmarks') 22 17 parser.add_argument('--output-file', dest='output', default=None) … … 29 24 parser.add_argument('--local-copy', dest='localCopy', help='Path to a local copy of the benchmark. e.g. PerformanceTests/SunSpider/') 30 25 parser.add_argument('--count', dest='countOverride', type=int, help='Number of times to run the benchmark. e.g. 5') 26 parser.add_argument('--http-server-driver', dest='httpServerDriverOverride', default=None, help='Specify which HTTP server you wants to use') 27 parser.add_argument('--device-id', dest='device_id', default=None) 28 31 29 args = parser.parse_args() 32 30 … … 37 35 _log.debug('\tbuild directory\t: %s' % args.buildDir) 38 36 _log.debug('\tplan name\t: %s', args.plan) 39 runner = BenchmarkRunner(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser) 37 38 return args 39 40 41 def start(args): 42 runner = BenchmarkRunner(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser, args.httpServerDriverOverride, args.device_id) 40 43 runner.execute() 41 44 42 45 43 if __name__ == '__main__': 44 sys.exit(main()) 46 def format_logger(logger): 47 logger.setLevel(logging.INFO) 48 ch = logging.StreamHandler() 49 formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') 50 ch.setFormatter(formatter) 51 logger.addHandler(ch) 52 53 54 def main(): 55 start(parse_args()) -
trunk/Tools/Scripts/webkitpy/benchmark_runner/utils.py
r185243 r185732 24 24 25 25 def getPathFromProjectRoot(relativePathToProjectRoot): 26 # Choose the directory contain ning current file as start point,26 # Choose the directory containing current file as start point, 27 27 # compute relative path base on the parameter, 28 28 # and return an absolute path
Note: See TracChangeset
for help on using the changeset viewer.