Changeset 185732 in webkit


Ignore:
Timestamp:
Jun 18, 2015 7:32:40 PM (9 years ago)
Author:
commit-queue@webkit.org
Message:

Extend capability of run-benchmark script to support mobile device
https://bugs.webkit.org/show_bug.cgi?id=146125

Patch by Dewei Zhu <Dewei Zhu> on 2015-06-18
Reviewed by Ryosuke Niwa.

Extend capability of run-benchmark to support mobile device, and move majority of run-benchmark script code to
benchmark_runner directory, and make run-benchmark a wrapping script. Also correct a typo.

  • Scripts/run-benchmark:

(main): Deleted.

  • Scripts/webkitpy/benchmark_runner/benchmark_runner.py:

(BenchmarkRunner.init):
(BenchmarkRunner.execute):

  • Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py:

(BrowserDriver.prepareEnv):

  • Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py:

(OSXBrowserDriver.prepareEnv):

  • Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:

(OSXSafariDriver.prepareEnv):

  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py:

(HTTPServerDriver.getReturnCode):
(HTTPServerDriver):
(HTTPServerDriver.setDeviceID):

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py: Copied from Tools/Scripts/run-benchmark.

(parse_args):
(start):
(main):

  • Scripts/webkitpy/benchmark_runner/utils.py:

(getPathFromProjectRoot):

Location:
trunk/Tools
Files:
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r185713 r185732  
     12015-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
    1332015-06-18  Jon Lee  <jonlee@apple.com>
    234
  • trunk/Tools/Scripts/run-benchmark

    r185339 r185732  
    11#!/usr/bin/env python
    22
    3 import argparse
    43import logging
    5 import platform
    64import sys
    75
    8 from webkitpy.benchmark_runner.benchmark_runner import BenchmarkRunner
    9 from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import BrowserDriverFactory
     6from webkitpy.benchmark_runner.run_benchmark import main, format_logger
    107
    118
    129_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 
    4210
    4311if __name__ == '__main__':
     12    format_logger(_log)
    4413    sys.exit(main())
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py

    r185371 r185732  
    2626class BenchmarkRunner(object):
    2727
    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):
    3029        try:
    3130            planFile = self._findPlanFile(planFile)
     
    3736                if countOverride:
    3837                    self.plan['count'] = countOverride
     38                if httpServerDriverOverride:
     39                    self.plan['http_server_driver'] = httpServerDriverOverride
    3940                self.browserDriver = BrowserDriverFactory.create([platform, browser])
    4041                self.httpServerDriver = HTTPServerDriverFactory.create([self.plan['http_server_driver']])
     42                self.httpServerDriver.setDeviceID(deviceID)
    4143                self.buildDir = os.path.abspath(buildDir) if buildDir else None
    4244                self.outputFile = outputFile
     45                self.deviceID = deviceID
    4346        except IOError as error:
    4447            _log.error('Can not open plan file: %s - Error %s' % (planFile, error))
     
    6972            _log.info('Start the iteration %d of current benchmark' % (x + 1))
    7073            self.httpServerDriver.serve(webRoot)
    71             self.browserDriver.prepareEnv()
     74            self.browserDriver.prepareEnv(self.deviceID)
    7275            url = urlparse.urljoin(self.httpServerDriver.baseUrl(), self.planName + '/' + self.plan['entry_point'])
    7376            self.browserDriver.launchUrl(url, self.buildDir)
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py

    r183309 r185732  
    77
    88    @abc.abstractmethod
    9     def prepareEnv(self):
     9    def prepareEnv(self, deviceID):
    1010        pass
    1111
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py

    r185524 r185732  
    1616    bundleIdentifier = None
    1717
    18     def prepareEnv(self):
     18    def prepareEnv(self, deviceID):
    1919        self.closeBrowsers()
    2020        CGWarpMouseCursorPosition((10, 0))
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py

    r185524 r185732  
    1717    bundleIdentifier = 'com.apple.Safari'
    1818
    19     def prepareEnv(self):
     19    def prepareEnv(self, deviceID):
    2020        self.safariProcess = None
    2121        super(OSXSafariDriver, self).prepareEnv()
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py

    r183520 r185732  
    2020    def getReturnCode(self):
    2121        pass
     22
     23    @abstractmethod
     24    def setDeviceID(self, deviceID):
     25        pass
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py

    r185731 r185732  
    44import logging
    55import platform
    6 import sys
     6import os
    77
    8 from webkitpy.benchmark_runner.benchmark_runner import BenchmarkRunner
    9 from webkitpy.benchmark_runner.browser_driver.browser_driver_factory import BrowserDriverFactory
     8from benchmark_runner import BenchmarkRunner
     9from browser_driver.browser_driver_factory import BrowserDriverFactory
    1010
    1111
    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__)
    1813
    1914
    20 def main():
     15def parse_args():
    2116    parser = argparse.ArgumentParser(description='Automate the browser based performance benchmarks')
    2217    parser.add_argument('--output-file', dest='output', default=None)
     
    2924    parser.add_argument('--local-copy', dest='localCopy', help='Path to a local copy of the benchmark. e.g. PerformanceTests/SunSpider/')
    3025    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
    3129    args = parser.parse_args()
    3230
     
    3735    _log.debug('\tbuild directory\t: %s' % args.buildDir)
    3836    _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
     41def start(args):
     42    runner = BenchmarkRunner(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser, args.httpServerDriverOverride, args.device_id)
    4043    runner.execute()
    4144
    4245
    43 if __name__ == '__main__':
    44     sys.exit(main())
     46def 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
     54def main():
     55    start(parse_args())
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/utils.py

    r185243 r185732  
    2424
    2525def getPathFromProjectRoot(relativePathToProjectRoot):
    26     # Choose the directory containning current file as start point,
     26    # Choose the directory containing current file as start point,
    2727    # compute relative path base on the parameter,
    2828    # and return an absolute path
Note: See TracChangeset for help on using the changeset viewer.