Changeset 219857 in webkit


Ignore:
Timestamp:
Jul 24, 2017, 9:10:00 PM (8 years ago)
Author:
commit-queue@webkit.org
Message:

Subclass Benchmark Runner script for WebDriver support
https://bugs.webkit.org/show_bug.cgi?id=174390

Patch by Matthew Stewart <matthew_r_stewart@apple.com> on 2017-07-24
Reviewed by Dewei Zhu, Stephanie Lewis.

Add WebServerBenchmarkRunner and WebDriverBenchmarkRunner subclasses.

  • Scripts/webkitpy/benchmark_runner/benchmark_builder.py:

(BenchmarkBuilder.init):

  • Scripts/webkitpy/benchmark_runner/benchmark_runner.py:

(BenchmarkRunner.init):
(BenchmarkRunner._find_plan_file):
(BenchmarkRunner._run_one_test.and):
(BenchmarkRunner.execute):
(BenchmarkRunner._get_result): Deleted.

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py:

(parse_args):
(start):

  • Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py: Added.

(WebDriverBenchmarkRunner):
(WebDriverBenchmarkRunner._get_result):
(WebDriverBenchmarkRunner._run_one_test):

  • Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py: Added.

(WebServerBenchmarkRunner):
(WebServerBenchmarkRunner.init):
(WebServerBenchmarkRunner._get_result):
(WebServerBenchmarkRunner._run_one_test):

Location:
trunk/Tools
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/Tools/ChangeLog

    r219854 r219857  
     12017-07-24  Matthew Stewart  <matthew_r_stewart@apple.com>
     2
     3        Subclass Benchmark Runner script for WebDriver support
     4        https://bugs.webkit.org/show_bug.cgi?id=174390
     5
     6        Reviewed by Dewei Zhu, Stephanie Lewis.
     7
     8        Add WebServerBenchmarkRunner and WebDriverBenchmarkRunner subclasses.
     9
     10        * Scripts/webkitpy/benchmark_runner/benchmark_builder.py:
     11        (BenchmarkBuilder.__init__):
     12        * Scripts/webkitpy/benchmark_runner/benchmark_runner.py:
     13        (BenchmarkRunner.__init__):
     14        (BenchmarkRunner._find_plan_file):
     15        (BenchmarkRunner._run_one_test.and):
     16        (BenchmarkRunner.execute):
     17        (BenchmarkRunner._get_result): Deleted.
     18        * Scripts/webkitpy/benchmark_runner/run_benchmark.py:
     19        (parse_args):
     20        (start):
     21        * Scripts/webkitpy/benchmark_runner/webdriver_benchmark_runner.py: Added.
     22        (WebDriverBenchmarkRunner):
     23        (WebDriverBenchmarkRunner._get_result):
     24        (WebDriverBenchmarkRunner._run_one_test):
     25        * Scripts/webkitpy/benchmark_runner/webserver_benchmark_runner.py: Added.
     26        (WebServerBenchmarkRunner):
     27        (WebServerBenchmarkRunner.__init__):
     28        (WebServerBenchmarkRunner._get_result):
     29        (WebServerBenchmarkRunner._run_one_test):
     30
    1312017-07-24  Matthew Stewart  <matthew_r_stewart@apple.com>
    232
  • TabularUnified trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_builder.py

    r219854 r219857  
    99import tarfile
    1010
     11from webkitpy.benchmark_runner.utils import get_path_from_project_root, force_remove
    1112from zipfile import ZipFile
    12 from webkitpy.benchmark_runner.utils import get_path_from_project_root, force_remove
    1313
    1414
     
    1717
    1818class BenchmarkBuilder(object):
    19     def __init__(self, name, plan):
     19    def __init__(self, name, plan, driver):
    2020        self._name = name
    2121        self._plan = plan
     22        self._driver = driver
    2223
    2324    def __enter__(self):
  • TabularUnified trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py

    r211549 r219857  
    1616from benchmark_results import BenchmarkResults
    1717from browser_driver.browser_driver_factory import BrowserDriverFactory
    18 from http_server_driver.http_server_driver_factory import HTTPServerDriverFactory
    19 from utils import timeout
    2018
    2119
     
    2422
    2523class BenchmarkRunner(object):
     24    name = 'benchmark_runner'
    2625
    2726    def __init__(self, plan_file, local_copy, count_override, build_dir, output_file, platform, browser, scale_unit=True, device_id=None):
     
    3837                    self._plan['count'] = count_override
    3938                self._browser_driver = BrowserDriverFactory.create(platform, browser)
    40                 self._http_server_driver = HTTPServerDriverFactory.create(platform)
    41                 self._http_server_driver.set_device_id(device_id)
    4239                self._build_dir = os.path.abspath(build_dir) if build_dir else None
    4340                self._output_file = output_file
     
    6461        return plan_file
    6562
    66     def _get_result(self, test_url):
    67         result = self._browser_driver.add_additional_results(test_url, self._http_server_driver.fetch_result())
    68         assert(not self._http_server_driver.get_return_code())
    69         return result
    70 
    7163    def _run_one_test(self, web_root, test_file):
    72         result = None
    73         try:
    74             self._http_server_driver.serve(web_root)
    75             url = urlparse.urljoin(self._http_server_driver.base_url(), self._plan_name + '/' + test_file)
    76             self._browser_driver.launch_url(url, self._plan['options'], self._build_dir)
    77             with timeout(self._plan['timeout']):
    78                 result = self._get_result(url)
    79         finally:
    80             self._browser_driver.close_browsers()
    81             self._http_server_driver.kill_server()
    82 
    83         return json.loads(result)
     64        raise NotImplementedError('BenchmarkRunner is an abstract class and shouldn\'t be instantiated.')
    8465
    8566    def _run_benchmark(self, count, web_root):
     
    119100
    120101    def execute(self):
    121         with BenchmarkBuilder(self._plan_name, self._plan) as web_root:
     102        with BenchmarkBuilder(self._plan_name, self._plan, self.name) as web_root:
    122103            self._run_benchmark(int(self._plan['count']), web_root)
    123104
  • TabularUnified trunk/Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py

    r209090 r219857  
    88import sys
    99
    10 from benchmark_runner import BenchmarkRunner
    1110from browser_driver.browser_driver_factory import BrowserDriverFactory
     11from webdriver_benchmark_runner import WebDriverBenchmarkRunner
     12from webserver_benchmark_runner import WebServerBenchmarkRunner
    1213
    1314
    1415_log = logging.getLogger(__name__)
     16benchmark_runner_subclasses = {
     17    WebDriverBenchmarkRunner.name: WebDriverBenchmarkRunner,
     18    WebServerBenchmarkRunner.name: WebServerBenchmarkRunner,
     19}
    1520
    1621
     
    3742    parser.add_argument('--count', dest='countOverride', type=int, help='Number of times to run the benchmark. e.g. 5')
    3843    parser.add_argument('--device-id', dest='device_id', default=None)
     44    parser.add_argument('--driver', dest='driver', default=WebServerBenchmarkRunner.name, choices=benchmark_runner_subclasses.keys())
    3945    parser.add_argument('--no-adjust-unit', dest='scale_unit', action='store_false')
    4046    mutual_group = parser.add_mutually_exclusive_group(required=True)
     
    8995            _log.error('The following benchmark plans have failed: %s' % failed)
    9096        return len(failed)
    91     runner = BenchmarkRunner(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser, args.scale_unit, args.device_id)
     97    benchmark_runner_class = benchmark_runner_subclasses[args.driver]
     98    runner = benchmark_runner_class(args.plan, args.localCopy, args.countOverride, args.buildDir, args.output, args.platform, args.browser, args.scale_unit, args.device_id)
    9299    runner.execute()
    93100
Note: See TracChangeset for help on using the changeset viewer.