Index: tools/perf/page_sets/idle_multi_tab_cases.py |
diff --git a/tools/perf/page_sets/idle_multi_tab_cases.py b/tools/perf/page_sets/idle_multi_tab_cases.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f71c2b4759e0790157af522e4867b8151bfdf0f4 |
--- /dev/null |
+++ b/tools/perf/page_sets/idle_multi_tab_cases.py |
@@ -0,0 +1,64 @@ |
+# Copyright 2015 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import os |
+ |
+from telemetry.page import page_set as page_set_module |
+ |
+from page_sets import top_pages |
+from page_sets import top_7_stress |
+ |
+def SpawnTab(action_runner): |
Sami
2015/05/20 15:52:19
nit: Two blank lines between toplevel items please
ulan
2015/05/20 16:14:42
Done.
|
+ return action_runner.EvaluateJavaScript("__telemetry_spawn_tab()") |
Sami
2015/05/20 15:52:19
nit: single quotes for strings
ulan
2015/05/20 16:14:42
Done.
|
+ |
+def CloseTab(action_runner, tab): |
Sami
2015/05/20 15:52:19
_CloseTab
ulan
2015/05/20 16:14:42
Done.
|
+ action_runner.EvaluateJavaScript("__telemetry_close_tab(" + str(tab) + ")") |
Sami
2015/05/20 15:52:19
Ditto about quotes.
ulan
2015/05/20 16:14:42
Done.
|
+ |
+def _CreateIdleMultiTabPageClass(base_page_cls, base_js): |
+ class DerivedIdleMultiTabPage(base_page_cls): # pylint: disable=W0232 |
+ |
+ def RunPageInteractions(self, action_runner): |
+ MAX_TABS = 10 |
+ action_runner.ExecuteJavaScript(base_js) |
+ tabs = {} |
+ # Slowly open tabs. |
+ for tab in xrange(MAX_TABS): |
+ tabs[tab] = SpawnTab(action_runner) |
+ action_runner.Wait(2) |
+ action_runner.Wait(20) |
+ # Slowly close tabs. |
+ for tab in xrange(MAX_TABS): |
+ CloseTab(action_runner, tabs[tab]) |
+ action_runner.Wait(2) |
+ action_runner.Wait(30) |
+ # Quikly open tabs. |
Sami
2015/05/20 15:52:20
typo: Quickly
ulan
2015/05/20 16:14:43
Done.
|
+ for tab in xrange(MAX_TABS): |
+ tabs[tab] = SpawnTab(action_runner) |
+ action_runner.Wait(20) |
+ # Quikly close tabs. |
Sami
2015/05/20 15:52:20
Ditto.
ulan
2015/05/20 16:14:42
Done.
|
+ for tab in xrange(MAX_TABS): |
+ CloseTab(action_runner, tabs[tab]) |
+ action_runner.Wait(30) |
+ return DerivedIdleMultiTabPage |
+ |
+ |
+class IdleMultiTabCasesPageSet(page_set_module.PageSet): |
+ |
+ """ Pages for testing GC efficiency on idle pages. """ |
+ |
+ def __init__(self): |
+ super(IdleMultiTabCasesPageSet, self).__init__( |
+ user_agent_type='desktop', |
+ archive_data_file='data/top_25.json', |
+ bucket=page_set_module.PARTNER_BUCKET) |
+ with open(os.path.join(os.path.dirname(__file__), |
+ 'idle_multi_tab_cases.js')) as f: |
+ base_js = f.read() |
+ pages = [ |
+ top_pages.GoogleDocPage, |
+ top_7_stress.GmailPage, |
+ top_7_stress.GooglePlusPage, |
+ ] |
+ for page in pages: |
+ self.AddUserStory(_CreateIdleMultiTabPageClass(page, base_js)(self)) |