Chromium Code Reviews| Index: tools/perf/benchmarks/blink_perf.py |
| diff --git a/tools/perf/benchmarks/blink_perf.py b/tools/perf/benchmarks/blink_perf.py |
| index dfb16534923970bd93b0f914fb290f3c7bbd0bab..039632d9b6cdaed45efd417548b475459cab31ad 100644 |
| --- a/tools/perf/benchmarks/blink_perf.py |
| +++ b/tools/perf/benchmarks/blink_perf.py |
| @@ -4,11 +4,15 @@ |
| import os |
| +from benchmarks import pywebsocket_server |
| from telemetry import benchmark |
| +from telemetry.core import local_server |
| +from telemetry.core import platform as platform_module |
| from telemetry.core import util |
| from telemetry import page as page_module |
| from telemetry.page import page_set |
| from telemetry.page import page_test |
| +from telemetry.page import shared_page_state |
| from telemetry.value import list_of_scalar_values |
| @@ -17,7 +21,9 @@ BLINK_PERF_BASE_DIR = os.path.join(util.GetChromiumSrcDir(), |
| SKIPPED_FILE = os.path.join(BLINK_PERF_BASE_DIR, 'Skipped') |
| -def CreatePageSetFromPath(path, skipped_file): |
| +def CreatePageSetFromPath( |
| + path, skipped_file, |
| + shared_page_state_class=shared_page_state.SharedPageState): |
| assert os.path.exists(path) |
| page_urls = [] |
| @@ -57,7 +63,8 @@ def CreatePageSetFromPath(path, skipped_file): |
| ps = page_set.PageSet(file_path=os.getcwd()+os.sep, |
| serving_dirs=serving_dirs) |
| for url in page_urls: |
| - ps.AddUserStory(page_module.Page(url, ps, ps.base_dir)) |
| + ps.AddUserStory(page_module.Page( |
| + url, ps, ps.base_dir, shared_page_state_class=shared_page_state_class)) |
| return ps |
| @@ -114,6 +121,32 @@ class _BlinkPerfFullFrameMeasurement(_BlinkPerfMeasurement): |
| options.AppendExtraBrowserArgs(['--expose-internals-for-testing']) |
| +class _BlinkPerfPywebsocketMeasurement(_BlinkPerfMeasurement): |
| + def CustomizeBrowserOptions(self, options): |
| + super(_BlinkPerfPywebsocketMeasurement, self).CustomizeBrowserOptions( |
| + options) |
| + # Cross-origin accesses are needed to run benchmarks spanning two servers, |
| + # the Telemetry's HTTP server and the pywebsocket server. |
| + options.AppendExtraBrowserArgs(['--disable-web-security']) |
| + |
| + |
| +class _SharedPywebsocketPageState(shared_page_state.SharedPageState): |
| + """Runs a pywebsocket server.""" |
| + def __init__(self, test, finder_options, user_story_set): |
| + super(_SharedPywebsocketPageState, self).__init__( |
| + test, finder_options, user_story_set) |
| + platform = platform_module.GetHostPlatform() |
| + backend = platform._platform_backend # pylint: disable=W0212 |
|
nednguyen
2015/04/09 15:41:51
No don't do this, platform_backend is not a public
hiroshige
2015/04/23 08:41:57
Done.
|
| + self._local_server_controller = local_server.LocalServerController( |
| + backend) |
| + self._local_server_controller.StartServer( |
| + pywebsocket_server.PywebsocketServer()) |
| + |
| + def TearDownState(self, results): |
| + super(_SharedPywebsocketPageState, self).TearDownState(results) |
| + self._local_server_controller.Close() |
| + |
| + |
| class BlinkPerfAnimation(benchmark.Benchmark): |
| tag = 'animation' |
| test = _BlinkPerfMeasurement |
| @@ -306,3 +339,17 @@ class BlinkPerfXMLHttpRequest(benchmark.Benchmark): |
| def CreatePageSet(self, options): |
| path = os.path.join(BLINK_PERF_BASE_DIR, 'XMLHttpRequest') |
| return CreatePageSetFromPath(path, SKIPPED_FILE) |
| + |
| + |
| +class BlinkPerfPywebsocket(benchmark.Benchmark): |
| + tag = 'pywebsocket' |
| + test = _BlinkPerfPywebsocketMeasurement |
| + |
| + @classmethod |
| + def Name(cls): |
| + return 'blink_perf.pywebsocket' |
| + |
| + def CreatePageSet(self, options): |
| + path = os.path.join(BLINK_PERF_BASE_DIR, 'Pywebsocket') |
| + return CreatePageSetFromPath(path, SKIPPED_FILE, |
| + shared_page_state_class=_SharedPywebsocketPageState) |