diff options
author | nednguyen <nednguyen@google.com> | 2015-08-27 03:07:42 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-27 10:08:13 +0000 |
commit | 71394d35928cd827ba04e7867195903e690e609b (patch) | |
tree | f1c66b13e37701209d59ef5eb550b25f90f5f09d /tools | |
parent | 8851d21affe2ef237350991988d17f727766a529 (diff) | |
download | chromium_src-71394d35928cd827ba04e7867195903e690e609b.zip chromium_src-71394d35928cd827ba04e7867195903e690e609b.tar.gz chromium_src-71394d35928cd827ba04e7867195903e690e609b.tar.bz2 |
[Telemetry] Introduce Run abstract method in story's API.
Move shared_page_state's page run logic to page.Run()
BUG=470147
Review URL: https://codereview.chromium.org/1313383003
Cr-Commit-Position: refs/heads/master@{#345833}
Diffstat (limited to 'tools')
-rw-r--r-- | tools/telemetry/telemetry/internal/story_runner_unittest.py | 7 | ||||
-rw-r--r-- | tools/telemetry/telemetry/page/__init__.py | 10 | ||||
-rw-r--r-- | tools/telemetry/telemetry/page/shared_page_state.py | 19 | ||||
-rw-r--r-- | tools/telemetry/telemetry/story/story.py | 8 |
4 files changed, 28 insertions, 16 deletions
diff --git a/tools/telemetry/telemetry/internal/story_runner_unittest.py b/tools/telemetry/telemetry/internal/story_runner_unittest.py index 8332198..e2a5480 100644 --- a/tools/telemetry/telemetry/internal/story_runner_unittest.py +++ b/tools/telemetry/telemetry/internal/story_runner_unittest.py @@ -102,6 +102,9 @@ class DummyLocalStory(story_module.Story): super(DummyLocalStory, self).__init__( shared_state_class, name=name) + def Run(self, shared_state): + pass + @property def is_local(self): return True @@ -588,7 +591,7 @@ class StoryRunnerTest(unittest.TestCase): self._current_story = story def RunStory(self, results): - self._current_story.Run() + self._current_story.Run(self) def DidRunStory(self, results): pass @@ -606,7 +609,7 @@ class StoryRunnerTest(unittest.TestCase): is_local=True) self.was_run = False - def Run(self): + def Run(self, shared_state): self.was_run = True raise page_test.Failure diff --git a/tools/telemetry/telemetry/page/__init__.py b/tools/telemetry/telemetry/page/__init__.py index 229b9b2..b4d9a25 100644 --- a/tools/telemetry/telemetry/page/__init__.py +++ b/tools/telemetry/telemetry/page/__init__.py @@ -11,6 +11,7 @@ from telemetry import story from catapult_base import cloud_storage from telemetry.internal.util import path from telemetry.page import shared_page_state +from telemetry.page import action_runner as action_runner_module class Page(story.Story): @@ -68,6 +69,15 @@ class Page(story.Story): if startup_url_scheme == 'file': raise ValueError('startup_url with local file scheme is not supported') + def Run(self, shared_state): + current_tab = shared_state.current_tab + shared_state.page_test.WillNavigateToPage(self, current_tab) + shared_state.page_test.RunNavigateSteps(self, current_tab) + shared_state.page_test.DidNavigateToPage(self, current_tab) + action_runner = action_runner_module.ActionRunner( + current_tab, skip_waits=self.skip_waits) + self.RunPageInteractions(action_runner) + def RunNavigateSteps(self, action_runner): url = self.file_path_url_with_scheme if self.is_file else self.url action_runner.Navigate( diff --git a/tools/telemetry/telemetry/page/shared_page_state.py b/tools/telemetry/telemetry/page/shared_page_state.py index 7508b68..e6295bf 100644 --- a/tools/telemetry/telemetry/page/shared_page_state.py +++ b/tools/telemetry/telemetry/page/shared_page_state.py @@ -18,7 +18,6 @@ from telemetry.internal.browser import browser_info as browser_info_module from telemetry.internal.platform.profiler import profiler_finder from telemetry.internal.util import exception_formatter from telemetry.internal.util import file_handle -from telemetry.page import action_runner as action_runner_module from telemetry.page import page_test from telemetry import story from telemetry.util import wpr_modes @@ -274,22 +273,18 @@ class SharedPageState(story.SharedState): if self._test.clear_cache_before_each_run: self._current_tab.ClearCache(force=True) - def _ImplicitPageNavigation(self): - """Executes the implicit navigation that occurs for every page iteration. + @property + def current_tab(self): + return self._current_tab - This function will be called once per page before any actions are executed. - """ - self._test.WillNavigateToPage(self._current_page, self._current_tab) - self._test.RunNavigateSteps(self._current_page, self._current_tab) - self._test.DidNavigateToPage(self._current_page, self._current_tab) + @property + def page_test(self): + return self._test def RunStory(self, results): try: self._PreparePage() - self._ImplicitPageNavigation() - action_runner = action_runner_module.ActionRunner( - self._current_tab, skip_waits=self._current_page.skip_waits) - self._current_page.RunPageInteractions(action_runner) + self._current_page.Run(self) self._test.ValidateAndMeasurePage( self._current_page, self._current_tab, results) except exceptions.Error: diff --git a/tools/telemetry/telemetry/story/story.py b/tools/telemetry/telemetry/story/story.py index f2ebbbb..760661e 100644 --- a/tools/telemetry/telemetry/story/story.py +++ b/tools/telemetry/telemetry/story/story.py @@ -4,7 +4,7 @@ import re -from telemetry.story import shared_state +from telemetry.story import shared_state as shared_state_module _next_story_id = 0 @@ -38,7 +38,7 @@ class Story(object): _InjectScripts method in third_party/webpagereplay/httpclient.py. """ assert issubclass(shared_state_class, - shared_state.SharedState) + shared_state_module.SharedState) self._shared_state_class = shared_state_class self._name = name global _next_story_id @@ -54,6 +54,10 @@ class Story(object): self._is_local = is_local self._make_javascript_deterministic = make_javascript_deterministic + def Run(self, shared_state): + """Execute the interactions with the applications and/or platforms.""" + raise NotImplementedError + @property def labels(self): return self._labels |