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) |