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

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

Issue 779383002: Move WPR-related attributes to UserStorySet. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 6 years 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
index 8da02a4043413cf67ad5b6118194e197e46fff6a..a6771fd6adf762e163f7824b369c7310d9b19601 100644
--- a/tools/telemetry/telemetry/user_story/user_story_set.py
+++ b/tools/telemetry/telemetry/user_story/user_story_set.py
@@ -2,12 +2,62 @@
# 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.page import page_set_archive_info
class UserStorySet(object):
- def __init__(self):
+ """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):
+ """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).
+ """
self.user_stories = []
+ self._archive_data_file = archive_data_file
+ self._wpr_archive_info = None
+ page_set_archive_info.AssertValidCloudStorageBucket(cloud_storage_bucket)
+ self._cloud_storage_bucket = cloud_storage_bucket
+ self._base_dir = os.path.dirname(inspect.getfile(self.__class__))
+
+ @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 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 = (
+ page_set_archive_info.PageSetArchiveInfo.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)
@@ -37,6 +87,11 @@ class UserStorySet(object):
def ShuffleAndFilterUserStorySet(self, finder_options):
pass
+ def WprFilePathForUserStory(self, story):
+ if not self.wpr_archive_info:
+ return None
+ return self.wpr_archive_info.WprFilePathForUserStory(story)
+
def __iter__(self):
return self.user_stories.__iter__()

Powered by Google App Engine
This is Rietveld 408576698