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..0803a948885255e8f880943e96d096ab02c35a0e 100644 |
--- a/tools/perf/benchmarks/blink_perf.py |
+++ b/tools/perf/benchmarks/blink_perf.py |
@@ -4,11 +4,13 @@ |
import os |
+from benchmarks import pywebsocket_server |
from telemetry import benchmark |
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 +19,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 +61,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 +119,26 @@ 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 WillRunUserStory(self, page): |
+ super(_SharedPywebsocketPageState, self).WillRunUserStory(page) |
+ |
+ # Start a pywebsocket server if not already running. |
+ if not self.browser.GetRunningLocalServer( |
+ pywebsocket_server.PywebsocketServer, None): |
nednguyen
2015/04/06 17:34:02
Can you explain why we need this check?
hiroshige
2015/04/08 07:47:25
This is to avoid multiple instances of pywebsocket
nednguyen
2015/04/08 15:08:26
https://code.google.com/p/chromium/codesearch#chro
aiolos (Not reviewing)
2015/04/08 17:32:56
+1. You should only have logic that should be run
hiroshige
2015/04/09 09:11:42
Done (I'm not sure this is correct way to get plat
|
+ self.browser.StartLocalServer(pywebsocket_server.PywebsocketServer()) |
+ |
+ |
class BlinkPerfAnimation(benchmark.Benchmark): |
tag = 'animation' |
test = _BlinkPerfMeasurement |
@@ -306,3 +331,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) |