Changeset 219857 in webkit
- Timestamp:
- Jul 24, 2017, 9:10:00 PM (8 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/Tools/ChangeLog ¶
r219854 r219857 1 2017-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 1 31 2017-07-24 Matthew Stewart <matthew_r_stewart@apple.com> 2 32 -
TabularUnified trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_builder.py ¶
r219854 r219857 9 9 import tarfile 10 10 11 from webkitpy.benchmark_runner.utils import get_path_from_project_root, force_remove 11 12 from zipfile import ZipFile 12 from webkitpy.benchmark_runner.utils import get_path_from_project_root, force_remove13 13 14 14 … … 17 17 18 18 class BenchmarkBuilder(object): 19 def __init__(self, name, plan ):19 def __init__(self, name, plan, driver): 20 20 self._name = name 21 21 self._plan = plan 22 self._driver = driver 22 23 23 24 def __enter__(self): -
TabularUnified trunk/Tools/Scripts/webkitpy/benchmark_runner/benchmark_runner.py ¶
r211549 r219857 16 16 from benchmark_results import BenchmarkResults 17 17 from browser_driver.browser_driver_factory import BrowserDriverFactory 18 from http_server_driver.http_server_driver_factory import HTTPServerDriverFactory19 from utils import timeout20 18 21 19 … … 24 22 25 23 class BenchmarkRunner(object): 24 name = 'benchmark_runner' 26 25 27 26 def __init__(self, plan_file, local_copy, count_override, build_dir, output_file, platform, browser, scale_unit=True, device_id=None): … … 38 37 self._plan['count'] = count_override 39 38 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)42 39 self._build_dir = os.path.abspath(build_dir) if build_dir else None 43 40 self._output_file = output_file … … 64 61 return plan_file 65 62 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 result70 71 63 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.') 84 65 85 66 def _run_benchmark(self, count, web_root): … … 119 100 120 101 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: 122 103 self._run_benchmark(int(self._plan['count']), web_root) 123 104 -
TabularUnified trunk/Tools/Scripts/webkitpy/benchmark_runner/run_benchmark.py ¶
r209090 r219857 8 8 import sys 9 9 10 from benchmark_runner import BenchmarkRunner11 10 from browser_driver.browser_driver_factory import BrowserDriverFactory 11 from webdriver_benchmark_runner import WebDriverBenchmarkRunner 12 from webserver_benchmark_runner import WebServerBenchmarkRunner 12 13 13 14 14 15 _log = logging.getLogger(__name__) 16 benchmark_runner_subclasses = { 17 WebDriverBenchmarkRunner.name: WebDriverBenchmarkRunner, 18 WebServerBenchmarkRunner.name: WebServerBenchmarkRunner, 19 } 15 20 16 21 … … 37 42 parser.add_argument('--count', dest='countOverride', type=int, help='Number of times to run the benchmark. e.g. 5') 38 43 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()) 39 45 parser.add_argument('--no-adjust-unit', dest='scale_unit', action='store_false') 40 46 mutual_group = parser.add_mutually_exclusive_group(required=True) … … 89 95 _log.error('The following benchmark plans have failed: %s' % failed) 90 96 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) 92 99 runner.execute() 93 100
Note:
See TracChangeset
for help on using the changeset viewer.