Changeset 185898 in webkit


Ignore:
Timestamp:
Jun 23, 2015 7:13:24 PM (9 years ago)
Author:
commit-queue@webkit.org
Message:

Refactoring benchmark runner script to follow pep8 code style.
https://bugs.webkit.org/show_bug.cgi?id=146264

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

Refactor benchmark runner script to follow pep8 code style.

  • Scripts/webkitpy/benchmark_runner/benchmark_builder/generic_benchmark_builder.py:

(GenericBenchmarkBuilder.prepare):
(GenericBenchmarkBuilder._run_create_script):
(GenericBenchmarkBuilder._copy_benchmark_to_temp_dir):
(GenericBenchmarkBuilder._fetch_remote_archive):
(GenericBenchmarkBuilder):
(GenericBenchmarkBuilder._checkout_with_subversion):
(GenericBenchmarkBuilder._apply_patch):
(GenericBenchmarkBuilder.clean):
(GenericBenchmarkBuilder._runCreateScript): Deleted.
(GenericBenchmarkBuilder._copyBenchmarkToTempDir): Deleted.
(GenericBenchmarkBuilder._fetchRemoteArchive): Deleted.
(GenericBenchmarkBuilder._checkoutWithSubverion): Deleted.
(GenericBenchmarkBuilder._applyPatch): Deleted.

  • Scripts/webkitpy/benchmark_runner/benchmark_runner.py:

(BenchmarkRunner.init):
(BenchmarkRunner._find_plan_file):
(BenchmarkRunner.execute):
(BenchmarkRunner._cleanup):
(BenchmarkRunner._dump):
(BenchmarkRunner._wrap):
(BenchmarkRunner._merge):
(BenchmarkRunner._show_results):
(BenchmarkRunner._findPlanFile): Deleted.
(BenchmarkRunner.cleanup): Deleted.
(BenchmarkRunner.dump): Deleted.
(BenchmarkRunner.wrap): Deleted.
(BenchmarkRunner.merge): Deleted.
(BenchmarkRunner.show_results): Deleted.

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

(BrowserDriver.prepare_env):
(BrowserDriver.launch_url):
(BrowserDriver.close_browsers):
(BrowserDriver.prepareEnv): Deleted.
(BrowserDriver.launchUrl): Deleted.
(BrowserDriver.closeBrowser): Deleted.

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

(OSXBrowserDriver):
(OSXBrowserDriver.prepare_env):
(OSXBrowserDriver.close_browsers):
(OSXBrowserDriver._launch_process):
(OSXBrowserDriver._terminiate_processes):
(OSXBrowserDriver._launch_process_with_caffinate):
(OSXBrowserDriver._screen_size):
(OSXBrowserDriver.prepareEnv): Deleted.
(OSXBrowserDriver.closeBrowsers): Deleted.
(OSXBrowserDriver.launchProcess): Deleted.
(OSXBrowserDriver.terminateProcesses): Deleted.
(OSXBrowserDriver.launchProcessWithCaffinate): Deleted.
(OSXBrowserDriver.screenSize): Deleted.

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

(OSXChromeDriver):
(OSXChromeDriver.launch_url):
(OSXChromeCanaryDriver):
(OSXChromeCanaryDriver.launch_url):
(OSXChromeDriver.launchUrl): Deleted.
(OSXChromeCanaryDriver.launchUrl): Deleted.

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

(OSXFirefoxDriver):
(OSXFirefoxDriver.launch_url):
(OSXFirefoxNightlyDriver):
(OSXFirefoxNightlyDriver.launch_url):
(OSXFirefoxDriver.launchUrl): Deleted.
(OSXFirefoxNightlyDriver.launchUrl): Deleted.

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

(OSXSafariDriver):
(OSXSafariDriver.prepare_env):
(OSXSafariDriver.launch_url):
(OSXSafariDriver.close_browsers):
(OSXSafariDriver._maximize_window):
(OSXSafariDriver.prepareEnv): Deleted.
(OSXSafariDriver.launchUrl): Deleted.
(OSXSafariDriver.closeBrowsers): Deleted.
(OSXSafariDriver.maximizeWindow): Deleted.

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

(HTTPServerDriver.fetch_result):
(HTTPServerDriver.kill_server):
(HTTPServerDriver.get_return_code):
(HTTPServerDriver.set_device_id):
(HTTPServerDriver.fetchResult): Deleted.
(HTTPServerDriver.killServer): Deleted.
(HTTPServerDriver.getReturnCode): Deleted.
(HTTPServerDriver.setDeviceID): Deleted.

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

(SimpleHTTPServerDriver.serve):
(SimpleHTTPServerDriver.base_url):
(SimpleHTTPServerDriver.fetch_result):
(SimpleHTTPServerDriver.kill_server):
(SimpleHTTPServerDriver.get_return_code):
(SimpleHTTPServerDriver): Deleted.
(SimpleHTTPServerDriver.baseUrl): Deleted.
(SimpleHTTPServerDriver.fetchResult): Deleted.
(SimpleHTTPServerDriver.killServer): Deleted.
(SimpleHTTPServerDriver.getReturnCode): Deleted.

  • Scripts/webkitpy/benchmark_runner/utils.py:

(get_path_from_project_root):
(force_remove):
(getPathFromProjectRoot): Deleted.
(forceRemove): Deleted.

Location:
trunk/Tools
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r185887 r185898  
     12015-06-23  Dewei Zhu  <dewei_zhu@apple.com>
     2
     3        Refactoring benchmark runner script to follow pep8 code style.
     4        https://bugs.webkit.org/show_bug.cgi?id=146264
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Refactor benchmark runner script to follow pep8 code style.
     9
     10        * Scripts/webkitpy/benchmark_runner/benchmark_builder/generic_benchmark_builder.py:
     11        (GenericBenchmarkBuilder.prepare):
     12        (GenericBenchmarkBuilder._run_create_script):
     13        (GenericBenchmarkBuilder._copy_benchmark_to_temp_dir):
     14        (GenericBenchmarkBuilder._fetch_remote_archive):
     15        (GenericBenchmarkBuilder):
     16        (GenericBenchmarkBuilder._checkout_with_subversion):
     17        (GenericBenchmarkBuilder._apply_patch):
     18        (GenericBenchmarkBuilder.clean):
     19        (GenericBenchmarkBuilder._runCreateScript): Deleted.
     20        (GenericBenchmarkBuilder._copyBenchmarkToTempDir): Deleted.
     21        (GenericBenchmarkBuilder._fetchRemoteArchive): Deleted.
     22        (GenericBenchmarkBuilder._checkoutWithSubverion): Deleted.
     23        (GenericBenchmarkBuilder._applyPatch): Deleted.
     24        * Scripts/webkitpy/benchmark_runner/benchmark_runner.py:
     25        (BenchmarkRunner.__init__):
     26        (BenchmarkRunner._find_plan_file):
     27        (BenchmarkRunner.execute):
     28        (BenchmarkRunner._cleanup):
     29        (BenchmarkRunner._dump):
     30        (BenchmarkRunner._wrap):
     31        (BenchmarkRunner._merge):
     32        (BenchmarkRunner._show_results):
     33        (BenchmarkRunner._findPlanFile): Deleted.
     34        (BenchmarkRunner.cleanup): Deleted.
     35        (BenchmarkRunner.dump): Deleted.
     36        (BenchmarkRunner.wrap): Deleted.
     37        (BenchmarkRunner.merge): Deleted.
     38        (BenchmarkRunner.show_results): Deleted.
     39        * Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py:
     40        (BrowserDriver.prepare_env):
     41        (BrowserDriver.launch_url):
     42        (BrowserDriver.close_browsers):
     43        (BrowserDriver.prepareEnv): Deleted.
     44        (BrowserDriver.launchUrl): Deleted.
     45        (BrowserDriver.closeBrowser): Deleted.
     46        * Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py:
     47        (OSXBrowserDriver):
     48        (OSXBrowserDriver.prepare_env):
     49        (OSXBrowserDriver.close_browsers):
     50        (OSXBrowserDriver._launch_process):
     51        (OSXBrowserDriver._terminiate_processes):
     52        (OSXBrowserDriver._launch_process_with_caffinate):
     53        (OSXBrowserDriver._screen_size):
     54        (OSXBrowserDriver.prepareEnv): Deleted.
     55        (OSXBrowserDriver.closeBrowsers): Deleted.
     56        (OSXBrowserDriver.launchProcess): Deleted.
     57        (OSXBrowserDriver.terminateProcesses): Deleted.
     58        (OSXBrowserDriver.launchProcessWithCaffinate): Deleted.
     59        (OSXBrowserDriver.screenSize): Deleted.
     60        * Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py:
     61        (OSXChromeDriver):
     62        (OSXChromeDriver.launch_url):
     63        (OSXChromeCanaryDriver):
     64        (OSXChromeCanaryDriver.launch_url):
     65        (OSXChromeDriver.launchUrl): Deleted.
     66        (OSXChromeCanaryDriver.launchUrl): Deleted.
     67        * Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py:
     68        (OSXFirefoxDriver):
     69        (OSXFirefoxDriver.launch_url):
     70        (OSXFirefoxNightlyDriver):
     71        (OSXFirefoxNightlyDriver.launch_url):
     72        (OSXFirefoxDriver.launchUrl): Deleted.
     73        (OSXFirefoxNightlyDriver.launchUrl): Deleted.
     74        * Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py:
     75        (OSXSafariDriver):
     76        (OSXSafariDriver.prepare_env):
     77        (OSXSafariDriver.launch_url):
     78        (OSXSafariDriver.close_browsers):
     79        (OSXSafariDriver._maximize_window):
     80        (OSXSafariDriver.prepareEnv): Deleted.
     81        (OSXSafariDriver.launchUrl): Deleted.
     82        (OSXSafariDriver.closeBrowsers): Deleted.
     83        (OSXSafariDriver.maximizeWindow): Deleted.
     84        * Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py:
     85        (HTTPServerDriver.fetch_result):
     86        (HTTPServerDriver.kill_server):
     87        (HTTPServerDriver.get_return_code):
     88        (HTTPServerDriver.set_device_id):
     89        (HTTPServerDriver.fetchResult): Deleted.
     90        (HTTPServerDriver.killServer): Deleted.
     91        (HTTPServerDriver.getReturnCode): Deleted.
     92        (HTTPServerDriver.setDeviceID): Deleted.
     93        * Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
     94        (SimpleHTTPServerDriver.serve):
     95        (SimpleHTTPServerDriver.base_url):
     96        (SimpleHTTPServerDriver.fetch_result):
     97        (SimpleHTTPServerDriver.kill_server):
     98        (SimpleHTTPServerDriver.get_return_code):
     99        (SimpleHTTPServerDriver): Deleted.
     100        (SimpleHTTPServerDriver.baseUrl): Deleted.
     101        (SimpleHTTPServerDriver.fetchResult): Deleted.
     102        (SimpleHTTPServerDriver.killServer): Deleted.
     103        (SimpleHTTPServerDriver.getReturnCode): Deleted.
     104        * Scripts/webkitpy/benchmark_runner/utils.py:
     105        (get_path_from_project_root):
     106        (force_remove):
     107        (getPathFromProjectRoot): Deleted.
     108        (forceRemove): Deleted.
     109
    11102015-06-23  Anders Carlsson  <andersca@apple.com>
    2111
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_builder/generic_benchmark_builder.py

    r185859 r185898  
    99
    1010from zipfile import ZipFile
    11 from webkitpy.benchmark_runner.utils import getPathFromProjectRoot, forceRemove
     11from webkitpy.benchmark_runner.utils import get_path_from_project_root, force_remove
    1212
    1313
     
    2020
    2121    def prepare(self, name, plan):
    22         self.name = name
    23         self.webRoot = tempfile.mkdtemp()
    24         self.dest = os.path.join(self.webRoot, self.name)
     22        self._name = name
     23        self._web_root = tempfile.mkdtemp()
     24        self._dest = os.path.join(self._web_root, self._name)
    2525        if 'local_copy' in plan:
    26             self._copyBenchmarkToTempDir(plan['local_copy'])
     26            self._copy_benchmark_to_temp_dir(plan['local_copy'])
    2727        elif 'remote_archive' in plan:
    28             self._fetchRemoteArchive(plan['remote_archive'])
     28            self._fetch_remote_archive(plan['remote_archive'])
    2929        elif 'svn_source' in plan:
    30             self._checkoutWithSubverion(plan['svn_source'])
     30            self._checkout_with_subversion(plan['svn_source'])
    3131        else:
    3232            raise Exception('The benchmark location was not specified')
    3333
    34         _log.info('Copied the benchmark into: %s' % self.dest)
     34        _log.info('Copied the benchmark into: %s' % self._dest)
    3535        try:
    3636            if 'create_script' in plan:
    37                 self._runCreateScript(plan['create_script'])
     37                self._run_create_script(plan['create_script'])
    3838            if 'benchmark_patch' in plan:
    39                 self._applyPatch(plan['benchmark_patch'])
    40             return self.webRoot
     39                self._apply_patch(plan['benchmark_patch'])
     40            return self._web_root
    4141        except Exception:
    4242            self.clean()
    4343            raise
    4444
    45     def _runCreateScript(self, createScript):
    46         oldWorkingDirectory = os.getcwd()
    47         os.chdir(self.dest)
    48         _log.debug('Running %s in %s' % (createScript, self.dest))
    49         errorCode = subprocess.call(createScript)
    50         os.chdir(oldWorkingDirectory)
    51         if errorCode:
    52             raise Exception('Cannot create the benchmark - Error: %s' % errorCode)
     45    def _run_create_script(self, create_script):
     46        old_working_directory = os.getcwd()
     47        os.chdir(self._dest)
     48        _log.debug('Running %s in %s' % (create_script, self._dest))
     49        error_code = subprocess.call(create_script)
     50        os.chdir(old_working_directory)
     51        if error_code:
     52            raise Exception('Cannot create the benchmark - Error: %s' % error_code)
    5353
    54     def _copyBenchmarkToTempDir(self, benchmarkPath):
    55         shutil.copytree(getPathFromProjectRoot(benchmarkPath), self.dest)
     54    def _copy_benchmark_to_temp_dir(self, benchmark_path):
     55        shutil.copytree(get_path_from_project_root(benchmark_path), self._dest)
    5656
    57     def _fetchRemoteArchive(self, archiveURL):
    58         archivePath = os.path.join(self.webRoot, 'archive.zip')
    59         _log.info('Downloading %s to %s' % (archiveURL, archivePath))
    60         urllib.urlretrieve(archiveURL, archivePath)
     57    def _fetch_remote_archive(self, archive_url):
     58        archive_path = os.path.join(self._web_root, 'archive.zip')
     59        _log.info('Downloading %s to %s' % (archive_url, archive_path))
     60        urllib.urlretrieve(archive_url, archive_path)
    6161
    62         with ZipFile(archivePath, 'r') as archive:
    63             archive.extractall(self.dest)
     62        with ZipFile(archive_path, 'r') as archive:
     63            archive.extractall(self._dest)
    6464
    65         unarchivedFiles = filter(lambda name: not name.startswith('.'), os.listdir(self.dest))
    66         if len(unarchivedFiles) == 1:
    67             firstFile = os.path.join(self.dest, unarchivedFiles[0])
    68             if os.path.isdir(firstFile):
    69                 shutil.move(firstFile, self.webRoot)
    70                 os.rename(os.path.join(self.webRoot, unarchivedFiles[0]), self.dest)
     65        unarchived_files = filter(lambda name: not name.startswith('.'), os.listdir(self._dest))
     66        if len(unarchived_files) == 1:
     67            first_file = os.path.join(self._dest, unarchived_files[0])
     68            if os.path.isdir(first_file):
     69                shutil.move(first_file, self._web_root)
     70                os.rename(os.path.join(self._web_root, unarchived_files[0]), self._dest)
    7171
    72     def _checkoutWithSubverion(self, subversionURL):
    73         _log.info('Checking out %s to %s' % (subversionURL, self.dest))
    74         errorCode = subprocess.call(['svn', 'checkout', subversionURL, self.dest])
    75         if errorCode:
    76             raise Exception('Cannot checkout the benchmark - Error: %s' % errorCode)
     72    def _checkout_with_subversion(self, subversion_url):
     73        _log.info('Checking out %s to %s' % (subversion_url, self._dest))
     74        error_code = subprocess.call(['svn', 'checkout', subversion_url, self._dest])
     75        if error_code:
     76            raise Exception('Cannot checkout the benchmark - Error: %s' % error_code)
    7777
    78     def _applyPatch(self, patch):
    79         oldWorkingDirectory = os.getcwd()
    80         os.chdir(self.dest)
    81         errorCode = subprocess.call(['patch', '-p1', '-f', '-i', getPathFromProjectRoot(patch)])
    82         os.chdir(oldWorkingDirectory)
    83         if errorCode:
    84             raise Exception('Cannot apply patch, will skip current benchmarkPath - Error: %s' % errorCode)
     78    def _apply_patch(self, patch):
     79        old_working_directory = os.getcwd()
     80        os.chdir(self._dest)
     81        error_code = subprocess.call(['patch', '-p1', '-f', '-i', get_path_from_project_root(patch)])
     82        os.chdir(old_working_directory)
     83        if error_code:
     84            raise Exception('Cannot apply patch, will skip current benchmark_path - Error: %s' % error_code)
    8585
    8686    def clean(self):
    8787        _log.info('Cleaning Benchmark')
    88         if self.webRoot:
    89             forceRemove(self.webRoot)
     88        if self._web_root:
     89            force_remove(self._web_root)
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py

    r185859 r185898  
    1717from browser_driver.browser_driver_factory import BrowserDriverFactory
    1818from http_server_driver.http_server_driver_factory import HTTPServerDriverFactory
    19 from utils import getPathFromProjectRoot
    2019from utils import timeout
    2120
     
    2625class BenchmarkRunner(object):
    2726
    28     def __init__(self, planFile, localCopy, countOverride, buildDir, outputFile, platform, browser, httpServerDriverOverride=None, deviceID=None):
     27    def __init__(self, plan_file, local_copy, count_override, build_dir, output_file, platform, browser, http_server_driver_override=None, device_id=None):
    2928        try:
    30             planFile = self._findPlanFile(planFile)
    31             with open(planFile, 'r') as fp:
    32                 self.planName = os.path.split(os.path.splitext(planFile)[0])[1]
    33                 self.plan = json.load(fp)
    34                 if localCopy:
    35                     self.plan['local_copy'] = localCopy
    36                 if countOverride:
    37                     self.plan['count'] = countOverride
    38                 if httpServerDriverOverride:
    39                     self.plan['http_server_driver'] = httpServerDriverOverride
    40                 self.browserDriver = BrowserDriverFactory.create(platform, browser)
    41                 self.httpServerDriver = HTTPServerDriverFactory.create(self.plan['http_server_driver'])
    42                 self.httpServerDriver.setDeviceID(deviceID)
    43                 self.buildDir = os.path.abspath(buildDir) if buildDir else None
    44                 self.outputFile = outputFile
    45                 self.deviceID = deviceID
     29            plan_file = self._find_plan_file(plan_file)
     30            with open(plan_file, 'r') as fp:
     31                self._plan_name = os.path.split(os.path.splitext(plan_file)[0])[1]
     32                self._plan = json.load(fp)
     33                if local_copy:
     34                    self._plan['local_copy'] = local_copy
     35                if count_override:
     36                    self._plan['count'] = count_override
     37                if http_server_driver_override:
     38                    self._plan['http_server_driver'] = http_server_driver_override
     39                self._browser_driver = BrowserDriverFactory.create(platform, browser)
     40                self._http_server_driver = HTTPServerDriverFactory.create(self._plan['http_server_driver'])
     41                self._http_server_driver.set_device_id(device_id)
     42                self._build_dir = os.path.abspath(build_dir) if build_dir else None
     43                self._output_file = output_file
     44                self._device_id = device_id
    4645        except IOError as error:
    47             _log.error('Can not open plan file: %s - Error %s' % (planFile, error))
     46            _log.error('Can not open plan file: %s - Error %s' % (plan_file, error))
    4847            raise error
    4948        except ValueError as error:
    50             _log.error('Plan file: %s may not follow JSON format - Error %s' % (planFile, error))
     49            _log.error('Plan file: %s may not follow JSON format - Error %s' % (plan_file, error))
    5150            raise error
    5251
    53     def _findPlanFile(self, planFile):
    54         if not os.path.exists(planFile):
    55             absPath = os.path.join(os.path.dirname(__file__), 'data/plans', planFile)
     52    def _find_plan_file(self, plan_file):
     53        if not os.path.exists(plan_file):
     54            absPath = os.path.join(os.path.dirname(__file__), 'data/plans', plan_file)
    5655            if os.path.exists(absPath):
    5756                return absPath
     
    6059            if os.path.exists(absPath):
    6160                return absPath
    62         return planFile
     61        return plan_file
    6362
    6463    def execute(self):
     
    6665        _log.info('Start a new benchmark')
    6766        results = []
    68         self.benchmarkBuilder = BenchmarkBuilderFactory.create(self.plan['benchmark_builder'])
     67        self._benchmark_builder = BenchmarkBuilderFactory.create(self._plan['benchmark_builder'])
    6968
    70         webRoot = self.benchmarkBuilder.prepare(self.planName, self.plan)
    71         for x in xrange(int(self.plan['count'])):
     69        web_root = self._benchmark_builder.prepare(self._plan_name, self._plan)
     70        for x in xrange(int(self._plan['count'])):
    7271            _log.info('Start the iteration %d of current benchmark' % (x + 1))
    73             self.httpServerDriver.serve(webRoot)
    74             self.browserDriver.prepareEnv(self.deviceID)
    75             url = urlparse.urljoin(self.httpServerDriver.baseUrl(), self.planName + '/' + self.plan['entry_point'])
    76             self.browserDriver.launchUrl(url, self.buildDir)
     72            self._http_server_driver.serve(web_root)
     73            self._browser_driver.prepare_env(self._device_id)
     74            url = urlparse.urljoin(self._http_server_driver.base_url(), self._plan_name + '/' + self._plan['entry_point'])
     75            self._browser_driver.launch_url(url, self._build_dir)
    7776            result = None
    7877            try:
    79                 with timeout(self.plan['timeout']):
    80                     result = self.httpServerDriver.fetchResult()
    81                 assert(not self.httpServerDriver.getReturnCode())
     78                with timeout(self._plan['timeout']):
     79                    result = self._http_server_driver.fetch_result()
     80                assert(not self._http_server_driver.get_return_code())
    8281                assert(result)
    8382                results.append(json.loads(result))
    8483            except Exception as error:
    85                 _log.error('No result or the server crashed. Something went wrong. Will skip current benchmark.\nError: %s, Server return code: %d, result: %s' % (error, not self.httpServerDriver.getReturnCode(), result))
    86                 self.cleanup()
     84                _log.error('No result or the server crashed. Something went wrong. Will skip current benchmark.\nError: %s, Server return code: %d, result: %s' % (error, self._http_server_driver.get_return_code(), result))
     85                self._cleanup()
    8786                sys.exit(1)
    8887            finally:
    89                 self.browserDriver.closeBrowsers()
     88                self._browser_driver.close_browsers()
    9089                _log.info('End of %d iteration of current benchmark' % (x + 1))
    91         results = self.wrap(results)
    92         self.dump(results, self.outputFile if self.outputFile else self.plan['output_file'])
    93         self.show_results(results)
    94         self.benchmarkBuilder.clean()
     90        results = self._wrap(results)
     91        self._dump(results, self._output_file if self._output_file else self._plan['output_file'])
     92        self._show_results(results)
     93        self._benchmark_builder.clean()
    9594        sys.exit()
    9695
    97     def cleanup(self):
    98         if self.browserDriver:
    99             self.browserDriver.closeBrowsers()
    100         if self.httpServerDriver:
    101             self.httpServerDriver.killServer()
    102         if self.benchmarkBuilder:
    103             self.benchmarkBuilder.clean()
     96    def _cleanup(self):
     97        if self._browser_driver:
     98            self._browser_driver.close_browsers()
     99        if self._http_server_driver:
     100            self._http_server_driver.kill_server()
     101        if self._benchmark_builder:
     102            self._benchmark_builder.clean()
    104103
    105104    @classmethod
    106     def dump(cls, results, outputFile):
     105    def _dump(cls, results, output_file):
    107106        _log.info('Dumping the results to file')
    108107        try:
    109             with open(outputFile, 'w') as fp:
     108            with open(output_file, 'w') as fp:
    110109                json.dump(results, fp)
    111110        except IOError as error:
    112             _log.error('Cannot open output file: %s - Error: %s' % (outputFile, error))
     111            _log.error('Cannot open output file: %s - Error: %s' % (output_file, error))
    113112            _log.error('Results are:\n %s', json.dumps(results))
    114113
    115114    @classmethod
    116     def wrap(cls, dicts):
     115    def _wrap(cls, dicts):
    117116        _log.debug('Merging following results:\n%s', json.dumps(dicts))
    118117        if not dicts:
     
    120119        ret = {}
    121120        for dic in dicts:
    122             ret = cls.merge(ret, dic)
     121            ret = cls._merge(ret, dic)
    123122        _log.debug('Results after merging:\n%s', json.dumps(ret))
    124123        return ret
    125124
    126125    @classmethod
    127     def merge(cls, a, b):
     126    def _merge(cls, a, b):
    128127        assert(isinstance(a, type(b)))
    129         argType = type(a)
     128        arg_type = type(a)
    130129        # special handle for list type, and should be handle before equal check
    131         if argType == types.ListType and len(a) and (type(a[0]) == types.StringType or type(a[0]) == types.UnicodeType):
     130        if arg_type == types.ListType and len(a) and (type(a[0]) == types.StringType or type(a[0]) == types.UnicodeType):
    132131            return a
    133         if argType == types.DictType:
     132        if arg_type == types.DictType:
    134133            result = {}
    135134            for key, value in a.items():
    136135                if key in b:
    137                     result[key] = cls.merge(value, b[key])
     136                    result[key] = cls._merge(value, b[key])
    138137                else:
    139138                    result[key] = value
     
    146145
    147146    @classmethod
    148     def show_results(cls, results):
     147    def _show_results(cls, results):
    149148        results = BenchmarkResults(results)
    150149        print results.format()
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver.py

    r185859 r185898  
    99
    1010    @abc.abstractmethod
    11     def prepareEnv(self, deviceID):
     11    def prepare_env(self, device_id):
    1212        pass
    1313
    1414    @abc.abstractmethod
    15     def launchUrl(self, url, browserBuildPath=None):
     15    def launch_url(self, url, browser_build_path=None):
    1616        pass
    1717
    1818    @abc.abstractmethod
    19     def closeBrowser(self):
     19    def close_browsers(self):
    2020        pass
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_browser_driver.py

    r185859 r185898  
    1111
    1212class OSXBrowserDriver(BrowserDriver):
    13     bundleIdentifier = None
     13    bundle_identifier = None
    1414    platform = 'osx'
    1515
    16     def prepareEnv(self, deviceID):
    17         self.closeBrowsers()
     16    def prepare_env(self, device_id):
     17        self.close_browsers()
    1818        from Quartz import CGWarpMouseCursorPosition
    1919        CGWarpMouseCursorPosition((10, 0))
    2020
    21     def closeBrowsers(self):
    22         self.terminateProcesses(self.bundleIdentifier)
     21    def close_browsers(self):
     22        self._terminiate_processes(self.bundle_identifier)
    2323
    2424    @classmethod
    25     def launchProcess(cls, buildDir, appName, url, args):
    26         if not buildDir:
    27             buildDir = '/Applications/'
    28         appPath = os.path.join(buildDir, appName)
     25    def _launch_process(cls, build_dir, app_name, url, args):
     26        if not build_dir:
     27            build_dir = '/Applications/'
     28        app_path = os.path.join(build_dir, app_name)
    2929
    30         _log.info('Launching "%s" with url "%s"' % (appPath, url))
     30        _log.info('Launching "%s" with url "%s"' % (app_path, url))
    3131
    3232        # FIXME: May need to be modified for a local build such as setting up DYLD libraries
    33         args = ['open', '-a', appPath] + args
    34         cls.launchProcessWithCaffinate(args)
     33        args = ['open', '-a', app_path] + args
     34        cls._launch_process_with_caffinate(args)
    3535
    3636    @classmethod
    37     def terminateProcesses(cls, bundleIdentifier):
    38         _log.info('Closing all terminating all processes with the bundle identifier %s' % bundleIdentifier)
     37    def _terminiate_processes(cls, bundle_identifier):
     38        _log.info('Closing all terminating all processes with the bundle identifier %s' % bundle_identifier)
    3939        from AppKit import NSRunningApplication
    40         processes = NSRunningApplication.runningApplicationsWithBundleIdentifier_(bundleIdentifier)
     40        processes = NSRunningApplication.runningApplicationsWithBundleIdentifier_(bundle_identifier)
    4141        for process in processes:
    4242            process.terminate()
    4343
    4444    @classmethod
    45     def launchProcessWithCaffinate(cls, args, env=None):
     45    def _launch_process_with_caffinate(cls, args, env=None):
    4646        process = subprocess.Popen(args, env=env)
    4747        subprocess.Popen(["/usr/bin/caffeinate", "-disw", str(process.pid)])
     
    4949
    5050    @classmethod
    51     def screenSize(cls):
     51    def _screen_size(cls):
    5252        from AppKit import NSScreen
    5353        return NSScreen.mainScreen().frame().size
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_chrome_driver.py

    r185859 r185898  
    1313
    1414class OSXChromeDriver(OSXBrowserDriver):
    15     bundleIdentifier = 'com.google.Chrome'
     15    bundle_identifier = 'com.google.Chrome'
    1616    browser_name = 'chrome'
    1717
    18     def launchUrl(self, url, browserBuildPath):
    19         self.launchProcess(buildDir=browserBuildPath, appName='Google Chrome.app', url=url, args=['--args', '--homepage', url, '--window-size={width},{height}'.format(width=int(self.screenSize().width), height=int(self.screenSize().height))])
     18    def launch_url(self, url, browser_build_path):
     19        self._launch_process(build_dir=browser_build_path, app_name='Google Chrome.app', url=url, args=['--args', '--homepage', url, '--window-size={width},{height}'.format(width=int(self._screen_size().width), height=int(self._screen_size().height))])
    2020
    2121
    2222class OSXChromeCanaryDriver(OSXBrowserDriver):
    23     bundleIdentifier = 'com.google.Chrome.canary'
     23    bundle_identifier = 'com.google.Chrome.canary'
    2424    browser_name = 'chrome-canary'
    2525
    26     def launchUrl(self, url, browserBuildPath):
    27         self.launchProcess(buildDir=browserBuildPath, appName='Google Chrome Canary.app', url=url, args=['--args', '--homepage', url, '--window-size={width},{height}'.format(width=int(self.screenSize().width), height=int(self.screenSize().height))])
     26    def launch_url(self, url, browser_build_path):
     27        self._launch_process(build_dir=browser_build_path, app_name='Google Chrome Canary.app', url=url, args=['--args', '--homepage', url, '--window-size={width},{height}'.format(width=int(self._screen_size().width), height=int(self._screen_size().height))])
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_firefox_driver.py

    r185859 r185898  
    1313
    1414class OSXFirefoxDriver(OSXBrowserDriver):
    15     bundleIdentifier = 'org.mozilla.firefox'
     15    bundle_identifier = 'org.mozilla.firefox'
    1616    browser_name = 'firefox'
    1717
    18     def launchUrl(self, url, browserBuildPath):
    19         self.launchProcess(buildDir=browserBuildPath, appName='Firefox.app', url=url, args=[url, '--args', '-width', str(int(self.screenSize().width)), '-height', str(int(self.screenSize().height))])
     18    def launch_url(self, url, browser_build_path):
     19        self._launch_process(build_dir=browser_build_path, app_name='Firefox.app', url=url, args=[url, '--args', '-width', str(int(self._screen_size().width)), '-height', str(int(self._screen_size().height))])
    2020
    2121
    2222class OSXFirefoxNightlyDriver(OSXBrowserDriver):
    23     bundleIdentifier = 'org.mozilla.nightly'
     23    bundle_identifier = 'org.mozilla.nightly'
    2424    browser_name = 'firefox-nightly'
    2525
    26     def launchUrl(self, url, browserBuildPath):
    27         self.launchProcess(buildDir=browserBuildPath, appName='FirefoxNightly.app', url=url, args=[url, '--args', '-width', str(int(self.screenSize().width)), '-height', str(int(self.screenSize().height))])
     26    def launch_url(self, url, browser_build_path):
     27        self._launch_process(build_dir=browser_build_path, app_name='FirefoxNightly.app', url=url, args=[url, '--args', '-width', str(int(self._screen_size().width)), '-height', str(int(self._screen_size().height))])
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/browser_driver/osx_safari_driver.py

    r185859 r185898  
    88
    99from osx_browser_driver import OSXBrowserDriver
    10 from webkitpy.benchmark_runner.utils import forceRemove
     10from webkitpy.benchmark_runner.utils import force_remove
    1111
    1212
     
    1515
    1616class OSXSafariDriver(OSXBrowserDriver):
    17     bundleIdentifier = 'com.apple.Safari'
     17    bundle_identifier = 'com.apple.Safari'
    1818    browser_name = 'safari'
    1919
    20     def prepareEnv(self, deviceID):
    21         self.safariProcess = None
    22         super(OSXSafariDriver, self).prepareEnv(deviceID)
    23         forceRemove(os.path.join(os.path.expanduser('~'), 'Library/Saved Application State/com.apple.Safari.savedState'))
    24         forceRemove(os.path.join(os.path.expanduser('~'), 'Library/Safari/LastSession.plist'))
    25         self.maximizeWindow()
    26         self.safariPreferences = ["-HomePage", "about:blank", "-WarnAboutFraudulentWebsites", "0", "-ExtensionsEnabled", "0", "-ShowStatusBar", "0", "-NewWindowBehavior", "1", "-NewTabBehavior", "1"]
     20    def prepare_env(self, device_id):
     21        self._safari_process = None
     22        super(OSXSafariDriver, self).prepare_env(device_id)
     23        force_remove(os.path.join(os.path.expanduser('~'), 'Library/Saved Application State/com.apple.Safari.savedState'))
     24        force_remove(os.path.join(os.path.expanduser('~'), 'Library/Safari/LastSession.plist'))
     25        self._maximize_window()
     26        self._safari_preferences = ["-HomePage", "about:blank", "-WarnAboutFraudulentWebsites", "0", "-ExtensionsEnabled", "0", "-ShowStatusBar", "0", "-NewWindowBehavior", "1", "-NewTabBehavior", "1"]
    2727
    28     def launchUrl(self, url, browserBuildPath):
     28    def launch_url(self, url, browser_build_path):
    2929        args = ['/Applications/Safari.app/Contents/MacOS/Safari']
    3030        env = {}
    31         if browserBuildPath:
    32             safariAppInBuildPath = os.path.join(browserBuildPath, 'Safari.app/Contents/MacOS/Safari')
    33             if os.path.exists(safariAppInBuildPath):
    34                 args = [safariAppInBuildPath]
    35                 env = {'DYLD_FRAMEWORK_PATH': browserBuildPath, 'DYLD_LIBRARY_PATH': browserBuildPath, '__XPC_DYLD_LIBRARY_PATH': browserBuildPath}
     31        if browser_build_path:
     32            safari_app_in_build_path = os.path.join(browser_build_path, 'Safari.app/Contents/MacOS/Safari')
     33            if os.path.exists(safari_app_in_build_path):
     34                args = [safari_app_in_build_path]
     35                env = {'DYLD_FRAMEWORK_PATH': browser_build_path, 'DYLD_LIBRARY_PATH': browser_build_path, '__XPC_DYLD_LIBRARY_PATH': browser_build_path}
    3636            else:
    37                 _log.info('Could not find Safari.app at %s, using the system Safari instead' % safariAppInBuildPath)
     37                _log.info('Could not find Safari.app at %s, using the system Safari instead' % safari_app_in_build_path)
    3838
    39         args.extend(self.safariPreferences)
     39        args.extend(self._safari_preferences)
    4040        _log.info('Launching safari: %s with url: %s' % (args[0], url))
    41         self.safariProcess = OSXSafariDriver.launchProcessWithCaffinate(args, env)
     41        self._safari_process = OSXSafariDriver._launch_process_with_caffinate(args, env)
    4242
    4343        # Stop for initialization of the safari process, otherwise, open
     
    4646        subprocess.Popen(['open', url])
    4747
    48     def closeBrowsers(self):
    49         super(OSXSafariDriver, self).closeBrowsers()
    50         if self.safariProcess and self.safariProcess.returncode:
     48    def close_browsers(self):
     49        super(OSXSafariDriver, self).close_browsers()
     50        if self._safari_process and self._safari_process.returncode:
    5151            sys.exit('Browser crashed with exitcode %d' % self._process.returncode)
    5252
    5353    @classmethod
    54     def maximizeWindow(cls):
     54    def _maximize_window(cls):
    5555        try:
    56             subprocess.check_call(['/usr/bin/defaults', 'write', 'com.apple.Safari', 'NSWindow Frame BrowserWindowFrame', ' '.join(['0', '0', str(cls.screenSize().width), str(cls.screenSize().height)] * 2)])
     56            subprocess.check_call(['/usr/bin/defaults', 'write', 'com.apple.Safari', 'NSWindow Frame BrowserWindowFrame', ' '.join(['0', '0', str(cls._screen_size().width), str(cls._screen_size().height)] * 2)])
    5757        except Exception as error:
    5858            _log.error('Reset safari window size failed - Error: {}'.format(error))
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/http_server_driver.py

    r185859 r185898  
    1111
    1212    @abstractmethod
    13     def fetchResult(self):
     13    def fetch_result(self):
    1414        pass
    1515
    1616    @abstractmethod
    17     def killServer(self):
     17    def kill_server(self):
    1818        pass
    1919
    2020    @abstractmethod
    21     def getReturnCode(self):
     21    def get_return_code(self):
    2222        pass
    2323
    2424    @abstractmethod
    25     def setDeviceID(self, deviceID):
     25    def set_device_id(self, deviceID):
    2626        pass
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py

    r185859 r185898  
    2222
    2323    def __init__(self):
    24         self.server_process = None
    25         self.server_port = 0
     24        self._server_process = None
     25        self._server_port = 0
    2626        # FIXME: This may not be reliable.
    2727        _log.info('Finding the IP address of current machine')
    2828        try:
    29             self.ip = [ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0]
    30             _log.info('IP of current machine is: %s' % self.ip)
     29            self._ip = [ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][0]
     30            _log.info('IP of current machine is: %s' % self._ip)
    3131        except Exception as error:
    3232            _log.error('Cannot get the ip address of current machine - Error: %s' % error)
     
    3636        _log.info('Launching an http server')
    3737        http_server_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "http_server/twisted_http_server.py")
    38         self.server_process = subprocess.Popen(["/usr/bin/python", http_server_path, web_root], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     38        self._server_process = subprocess.Popen(["/usr/bin/python", http_server_path, web_root], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    3939
    40         maxAttempt = 5
     40        max_attempt = 5
    4141        interval = 0.5
    4242        _log.info('Start to fetching the port number of the http server')
    4343        try:
    4444            import psutil
    45             for attempt in xrange(maxAttempt):
     45            for attempt in xrange(max_attempt):
    4646                try:
    47                     self.server_port = psutil.Process(self.server_process.pid).connections()[0][3][1]
    48                     if self.server_port:
    49                         _log.info('HTTP Server is serving at port: %d', self.server_port)
     47                    self._server_port = psutil.Process(self._server_process.pid).connections()[0][3][1]
     48                    if self._server_port:
     49                        _log.info('HTTP Server is serving at port: %d', self._server_port)
    5050                        break
    5151                except IndexError:
     
    5757                raise Exception("Cannot listen to server, max tries exceeded")
    5858        except ImportError:
    59             for attempt in xrange(maxAttempt):
     59            for attempt in xrange(max_attempt):
    6060                try:
    61                     output = subprocess.check_output(['/usr/sbin/lsof', '-a', '-iTCP', '-sTCP:LISTEN', '-p', str(self.server_process.pid)])
    62                     self.server_port = int(re.search('TCP \*:(\d+) \(LISTEN\)', output).group(1))
    63                     if self.server_port:
    64                         _log.info('HTTP Server is serving at port: %d', self.server_port)
     61                    output = subprocess.check_output(['/usr/sbin/lsof', '-a', '-iTCP', '-sTCP:LISTEN', '-p', str(self._server_process.pid)])
     62                    self._server_port = int(re.search('TCP \*:(\d+) \(LISTEN\)', output).group(1))
     63                    if self._server_port:
     64                        _log.info('HTTP Server is serving at port: %d', self._server_port)
    6565                        break
    6666                except Exception as error:
     
    7373
    7474        # Wait for server to be up completely before exiting
    75         for attempt in xrange(maxAttempt):
     75        for attempt in xrange(max_attempt):
    7676            try:
    77                 subprocess.check_call(["curl", "--silent", "--head", "--fail", "--output", "/dev/null", self.baseUrl()])
     77                subprocess.check_call(["curl", "--silent", "--head", "--fail", "--output", "/dev/null", self.base_url()])
    7878                return
    7979            except Exception as error:
     
    8282        raise Exception('Server not running, max tries exceeded: %s' % error)
    8383
     84    def base_url(self):
     85        return "http://%s:%d" % (self._ip, self._server_port)
    8486
    85     def baseUrl(self):
    86         return "http://%s:%d" % (self.ip, self.server_port)
    87 
    88     def fetchResult(self):
    89         (stdout, stderr) = self.server_process.communicate()
     87    def fetch_result(self):
     88        (stdout, stderr) = self._server_process.communicate()
    9089        print stderr
    9190        return stdout
    9291
    93     def killServer(self):
     92    def kill_server(self):
    9493        try:
    95             self.server_process.terminate()
     94            self._server_process.terminate()
    9695        except OSError as error:
    9796            _log.info('Error terminating server process: %s' % (error))
    9897
    99     def getReturnCode(self):
    100         return self.server_process.returncode
     98    def get_return_code(self):
     99        return self._server_process.returncode
  • trunk/Tools/Scripts/webkitpy/benchmark_runner/utils.py

    r185859 r185898  
    3131
    3232
    33 def getPathFromProjectRoot(relativePathToProjectRoot):
     33def get_path_from_project_root(relative_path_to_project_root):
    3434    # Choose the directory containing current file as start point,
    3535    # compute relative path base on the parameter,
    3636    # and return an absolute path
    37     return os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), relativePathToProjectRoot))
     37    return os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), relative_path_to_project_root))
    3838
    3939
    40 def forceRemove(path):
     40def force_remove(path):
    4141    try:
    4242        shutil.rmtree(path)
Note: See TracChangeset for help on using the changeset viewer.