Index: tools/telemetry/telemetry/story/story.py |
diff --git a/tools/telemetry/telemetry/story/story.py b/tools/telemetry/telemetry/story/story.py |
deleted file mode 100644 |
index 760661e72316d60ab61f0cb5a73de28610c2423a..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/story/story.py |
+++ /dev/null |
@@ -1,119 +0,0 @@ |
-# 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 re |
- |
-from telemetry.story import shared_state as shared_state_module |
- |
-_next_story_id = 0 |
- |
- |
-class Story(object): |
- """A class styled on unittest.TestCase for creating story tests. |
- |
- Tests should override Run to maybe start the application and perform actions |
- on it. To share state between different tests, one can define a |
- shared_state which contains hooks that will be called before and |
- after mutiple stories run and in between runs. |
- |
- Args: |
- shared_state_class: subclass of telemetry.story.shared_state.SharedState. |
- name: string name of this story that can be used for identifying this story |
- in results output. |
- labels: A list or set of string labels that are used for filtering. See |
- story.story_filter for more information. |
- is_local: If True, the story does not require network. |
- """ |
- |
- def __init__(self, shared_state_class, name='', labels=None, |
- is_local=False, make_javascript_deterministic=True): |
- """ |
- Args: |
- make_javascript_deterministic: Whether JavaScript performed on |
- the page is made deterministic across multiple runs. This |
- requires that the web content is served via Web Page Replay |
- to take effect. This setting does not affect stories containing no web |
- content or where the HTTP MIME type is not text/html.See also: |
- _InjectScripts method in third_party/webpagereplay/httpclient.py. |
- """ |
- assert issubclass(shared_state_class, |
- shared_state_module.SharedState) |
- self._shared_state_class = shared_state_class |
- self._name = name |
- global _next_story_id |
- self._id = _next_story_id |
- _next_story_id += 1 |
- if labels is None: |
- labels = set([]) |
- elif isinstance(labels, list): |
- labels = set(labels) |
- else: |
- assert isinstance(labels, set) |
- self._labels = labels |
- 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 |
- |
- @property |
- def shared_state_class(self): |
- return self._shared_state_class |
- |
- @property |
- def id(self): |
- return self._id |
- |
- @property |
- def name(self): |
- return self._name |
- |
- def AsDict(self): |
- """Converts a story object to a dict suitable for JSON output.""" |
- d = { |
- 'id': self._id, |
- } |
- if self._name: |
- d['name'] = self._name |
- return d |
- |
- @property |
- def file_safe_name(self): |
- """A version of display_name that's safe to use as a filename. |
- |
- The default implementation sanitizes special characters with underscores, |
- but it's okay to override it with a more specific implementation in |
- subclasses. |
- """ |
- # This fail-safe implementation is safe for subclasses to override. |
- return re.sub('[^a-zA-Z0-9]', '_', self.display_name) |
- |
- @property |
- def display_name(self): |
- if self.name: |
- return self.name |
- else: |
- return self.__class__.__name__ |
- |
- @property |
- def is_local(self): |
- """Returns True iff this story does not require network.""" |
- return self._is_local |
- |
- @property |
- def serving_dir(self): |
- """Returns the absolute path to a directory with hash files to data that |
- should be updated from cloud storage, or None if no files need to be |
- updated. |
- """ |
- return None |
- |
- @property |
- def make_javascript_deterministic(self): |
- return self._make_javascript_deterministic |