summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authornednguyen <nednguyen@google.com>2015-08-27 03:07:42 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-27 10:08:13 +0000
commit71394d35928cd827ba04e7867195903e690e609b (patch)
treef1c66b13e37701209d59ef5eb550b25f90f5f09d /tools
parent8851d21affe2ef237350991988d17f727766a529 (diff)
downloadchromium_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.py7
-rw-r--r--tools/telemetry/telemetry/page/__init__.py10
-rw-r--r--tools/telemetry/telemetry/page/shared_page_state.py19
-rw-r--r--tools/telemetry/telemetry/story/story.py8
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