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

Unified Diff: tools/telemetry/telemetry/user_story/user_story_set.py

Issue 1126443002: Move user_story.user_story_set to story.story_set (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 7 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/user_story/user_story_set.py
diff --git a/tools/telemetry/telemetry/user_story/user_story_set.py b/tools/telemetry/telemetry/user_story/user_story_set.py
deleted file mode 100644
index d18941cccca675cdf16feb9340268effb4876b89..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/user_story/user_story_set.py
+++ /dev/null
@@ -1,160 +0,0 @@
-# Copyright 2014 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 inspect
-import os
-
-from telemetry import user_story as user_story_module
-from telemetry.util import cloud_storage
-from telemetry.wpr import archive_info
-
-PUBLIC_BUCKET = cloud_storage.PUBLIC_BUCKET
-PARTNER_BUCKET = cloud_storage.PARTNER_BUCKET
-INTERNAL_BUCKET = cloud_storage.INTERNAL_BUCKET
-
-
-class UserStorySet(object):
- """A collection of user story.
-
- A typical usage of UserStorySet would be to subclass it and then calling
- AddUserStory for each UserStory.
- """
-
- def __init__(self, archive_data_file='', cloud_storage_bucket=None,
- base_dir=None, serving_dirs=None):
- """Creates a new UserStorySet.
-
- Args:
- archive_data_file: The path to Web Page Replay's archive data, relative
- to self.base_dir.
- cloud_storage_bucket: The cloud storage bucket used to download
- Web Page Replay's archive data. Valid values are: None,
- PUBLIC_BUCKET, PARTNER_BUCKET, or INTERNAL_BUCKET (defined
- in telemetry.util.cloud_storage).
- serving_dirs: A set of paths, relative to self.base_dir, to directories
- containing hash files for non-wpr archive data stored in cloud
- storage.
- """
- self.user_stories = []
- self._archive_data_file = archive_data_file
- self._wpr_archive_info = None
- archive_info.AssertValidCloudStorageBucket(cloud_storage_bucket)
- self._cloud_storage_bucket = cloud_storage_bucket
- if base_dir:
- if not os.path.isdir(base_dir):
- raise ValueError('Invalid directory path of base_dir: %s' % base_dir)
- self._base_dir = base_dir
- else:
- self._base_dir = os.path.dirname(inspect.getfile(self.__class__))
- # Convert any relative serving_dirs to absolute paths.
- self._serving_dirs = set(os.path.realpath(os.path.join(self.base_dir, d))
- for d in serving_dirs or [])
-
- @property
- def allow_mixed_story_states(self):
- """True iff UserStories are allowed to have different StoryState classes.
-
- There are no checks in place for determining if SharedStates are
- being assigned correctly to all UserStorys in a given UserStorySet. The
- majority of test cases should not need the ability to have multiple
- ShareduserStoryStates, and usually implies you should be writing multiple
- benchmarks instead. We provide errors to avoid accidentally assigning
- or defaulting to the wrong SharedState.
- Override at your own risk. Here be dragons.
- """
- return False
-
- @property
- def file_path(self):
- return inspect.getfile(self.__class__).replace('.pyc', '.py')
-
- @property
- def base_dir(self):
- """The base directory to resolve archive_data_file.
-
- This defaults to the directory containing the UserStorySet instance's class.
- """
- return self._base_dir
-
- @property
- def serving_dirs(self):
- all_serving_dirs = self._serving_dirs.copy()
- for user_story in self.user_stories:
- if user_story.serving_dir:
- all_serving_dirs.add(user_story.serving_dir)
- return all_serving_dirs
-
- @property
- def archive_data_file(self):
- return self._archive_data_file
-
- @property
- def bucket(self):
- return self._cloud_storage_bucket
-
- @property
- def wpr_archive_info(self):
- """Lazily constructs wpr_archive_info if it's not set and returns it."""
- if self.archive_data_file and not self._wpr_archive_info:
- self._wpr_archive_info = archive_info.WprArchiveInfo.FromFile(
- os.path.join(self.base_dir, self.archive_data_file), self.bucket)
- return self._wpr_archive_info
-
- def AddUserStory(self, user_story):
- assert isinstance(user_story, user_story_module.UserStory)
- self.user_stories.append(user_story)
-
- def RemoveUserStory(self, user_story):
- """Removes a UserStory.
-
- Allows the user stories to be filtered.
- """
- self.user_stories.remove(user_story)
-
- @classmethod
- def Name(cls):
- """Returns the string name of this UserStorySet.
- Note that this should be a classmethod so benchmark_runner script can match
- user story class with its name specified in the run command:
- 'Run <User story test name> <User story class name>'
- """
- return cls.__module__.split('.')[-1]
-
- @classmethod
- def Description(cls):
- """Return a string explaining in human-understandable terms what this
- user story represents.
- Note that this should be a classmethod so benchmark_runner script can
- display user stories' names along their descriptions in the list command.
- """
- if cls.__doc__:
- return cls.__doc__.splitlines()[0]
- else:
- return ''
-
- def WprFilePathForUserStory(self, story):
- """Convenient function to retrieve WPR archive file path.
-
- Args:
- user_story: The UserStory to lookup.
-
- Returns:
- The WPR archive file path for the given UserStory, if found.
- Otherwise, return None.
- """
- if not self.wpr_archive_info:
- return None
- return self.wpr_archive_info.WprFilePathForUserStory(story)
-
- def __iter__(self):
- return self.user_stories.__iter__()
-
- def __len__(self):
- return len(self.user_stories)
-
- def __getitem__(self, key):
- return self.user_stories[key]
-
- def __setitem__(self, key, value):
- self.user_stories[key] = value

Powered by Google App Engine
This is Rietveld 408576698