Chromium Code Reviews| 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)) |