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

Unified Diff: telemetry/telemetry/story/story_set.py

Issue 2153513002: [Telemetry] Ensure that story display names are unique (Closed) Base URL: git@github.com:catapult-project/catapult.git@master
Patch Set: fix typo Created 4 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
« no previous file with comments | « telemetry/telemetry/story/story.py ('k') | telemetry/telemetry/story/story_set_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: telemetry/telemetry/story/story_set.py
diff --git a/telemetry/telemetry/story/story_set.py b/telemetry/telemetry/story/story_set.py
index 667cbd01ebb7b9b3114da16ae16933335b97f9ef..757c6d0abea7182a0857803893d7465f14448c9a 100644
--- a/telemetry/telemetry/story/story_set.py
+++ b/telemetry/telemetry/story/story_set.py
@@ -31,7 +31,8 @@ class StorySet(object):
containing hash files for non-wpr archive data stored in cloud
storage.
"""
- self.stories = []
+ self._stories = []
+ self._story_names_and_grouping_keys = set()
self._archive_data_file = archive_data_file
self._wpr_archive_info = None
archive_info.AssertValidCloudStorageBucket(cloud_storage_bucket)
@@ -96,16 +97,31 @@ class StorySet(object):
os.path.join(self.base_dir, self.archive_data_file), self.bucket)
return self._wpr_archive_info
+ @property
+ def stories(self):
+ return self._stories
+
def AddStory(self, story):
assert isinstance(story, story_module.Story)
- self.stories.append(story)
+ assert self._IsUnique(story), ('Tried to add story with duplicate display '
+ 'name %s. Story display names should be '
+ 'unique.' % story.display_name)
+ self._stories.append(story)
+ self._story_names_and_grouping_keys.add(
+ story.display_name_and_grouping_key_tuple)
+
+ def _IsUnique(self, story):
+ return (story.display_name_and_grouping_key_tuple not in
+ self._story_names_and_grouping_keys)
def RemoveStory(self, story):
"""Removes a Story.
Allows the stories to be filtered.
"""
- self.stories.remove(story)
+ self._stories.remove(story)
+ self._story_names_and_grouping_keys.remove(
+ story.display_name_and_grouping_key_tuple)
@classmethod
def Name(cls):
@@ -152,4 +168,4 @@ class StorySet(object):
return self.stories[key]
def __setitem__(self, key, value):
- self.stories[key] = value
+ self._stories[key] = value
« no previous file with comments | « telemetry/telemetry/story/story.py ('k') | telemetry/telemetry/story/story_set_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698