Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(280)

Unified Diff: tools/telemetry/telemetry/page/page_runner.py

Issue 19518009: Implement 'skip_navigate_on_repeat' option (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/page/page_runner.py
diff --git a/tools/telemetry/telemetry/page/page_runner.py b/tools/telemetry/telemetry/page/page_runner.py
index 1df51dec457283f4f00680c9383ec7e09c2e86ee..84ca2c0483de4241387c37c0d4d9e752267dcfac 100644
--- a/tools/telemetry/telemetry/page/page_runner.py
+++ b/tools/telemetry/telemetry/page/page_runner.py
@@ -32,6 +32,7 @@ class _RunState(object):
self._first_browser = True
self.first_page = collections.defaultdict(lambda: True)
self.profiler_dir = None
+ self.repeat_state = None
def StartBrowser(self, test, page_set, page, possible_browser,
credentials_path, archive_path):
@@ -110,12 +111,9 @@ class PageState(object):
def PreparePage(self, page, tab, test=None):
if page.is_file:
- serving_dirs, filename = page.serving_dirs_and_file
+ serving_dirs = page.serving_dirs_and_file[0]
if tab.browser.SetHTTPServerDirectories(serving_dirs) and test:
test.DidStartHTTPServer(tab)
- target_side_url = tab.browser.http_server.UrlOf(filename)
- else:
- target_side_url = page.url
if page.credentials:
if not tab.browser.credentials.LoginNeeded(tab, page.credentials):
@@ -125,6 +123,19 @@ class PageState(object):
if test:
if test.clear_cache_before_each_run:
tab.ClearCache()
+
+ def ImplicitPageNavigation(self, page, tab, test=None):
+ """Executes the implicit navigation that occurs for every page iteration.
+
+ This function will be called once per page before any actions are executed.
+ """
+ if page.is_file:
+ filename = page.serving_dirs_and_file[1]
+ target_side_url = tab.browser.http_server.UrlOf(filename)
+ else:
+ target_side_url = page.url
+
+ if test:
test.WillNavigateToPage(page, tab)
tab.Navigate(target_side_url, page.script_to_evaluate_on_commit)
if test:
@@ -181,7 +192,7 @@ def _PrepareAndRunPage(test, page_set, expectations, options, page,
state.browser.platform, page)
try:
- _RunPage(test, page, state.tab, expectation,
+ _RunPage(test, page, state, expectation,
results_for_current_run, options)
_CheckThermalThrottling(state.browser.platform)
except exceptions.TabCrashException:
@@ -262,19 +273,19 @@ def Run(test, page_set, expectations, options):
try:
test.WillRunTest(state.tab)
- repeat_state = page_runner_repeat.PageRunnerRepeatState(
- options.repeat_options)
+ state.repeat_state = page_runner_repeat.PageRunnerRepeatState(
+ options.repeat_options)
- repeat_state.WillRunPageSet()
- while repeat_state.ShouldRepeatPageSet():
+ state.repeat_state.WillRunPageSet()
+ while state.repeat_state.ShouldRepeatPageSet():
for page in pages:
- repeat_state.WillRunPage()
- while repeat_state.ShouldRepeatPage():
+ state.repeat_state.WillRunPage()
+ while state.repeat_state.ShouldRepeatPage():
# execute test on page
_PrepareAndRunPage(test, page_set, expectations, options, page,
credentials_path, possible_browser, results, state)
- repeat_state.DidRunPage()
- repeat_state.DidRunPageSet()
+ state.repeat_state.DidRunPage()
+ state.repeat_state.DidRunPageSet()
test.DidRunTest(state.tab, results)
finally:
@@ -356,13 +367,16 @@ def _CheckArchives(page_set, pages, results):
pages_missing_archive_path + pages_missing_archive_data]
-def _RunPage(test, page, tab, expectation, results, options):
+def _RunPage(test, page, state, expectation, results, options):
logging.info('Running %s' % page.url)
page_state = PageState()
+ tab = state.tab
try:
page_state.PreparePage(page, tab, test)
+ if state.repeat_state.ShouldNavigate(options.skip_navigate_on_repeat):
+ page_state.ImplicitPageNavigation(page, tab, test)
test.Run(options, page, tab, results)
util.CloseConnections(tab)
except page_test.Failure:
« no previous file with comments | « tools/telemetry/telemetry/core/browser_options.py ('k') | tools/telemetry/telemetry/page/page_runner_repeat.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698