def testNoFilter(self): a = FakeStory('a') b = FakeStory('b') stories = (a, b) story_filter = story_filter_module.StoryFilter() output = story_filter.FilterStories(stories) self.assertEqual(list(stories), output)
def testTagsAllMatch(self): a = FakeStory('a', {'1', '2'}) b = FakeStory('b', {'1', '2'}) stories = (a, b) story_filter = story_filter_module.StoryFilter(story_tag_filter='1,2') output = story_filter.FilterStories(stories) self.assertEqual(list(stories), output)
def testDisabledStory(self): story = FakeStory() expectations = FakeExpectations(stories_to_disable=[story.name]) story_filter = story_filter_module.StoryFilter( expectations=expectations, run_disabled_stories=False) self.assertEqual(story_filter.ShouldSkip(story), 'fake reason')
def testSimple(self): a = FakeStory('a') foo = FakeStory('foo') # pylint: disable=blacklisted-name stories = (a, foo) story_filter = story_filter_module.StoryFilter(story_filter='foo') output = story_filter.FilterStories(stories) self.assertEqual([foo], output)
def testEnabledStory(self): story = FakeStory() expectations = FakeExpectations(stories_to_disable=[]) story_filter = story_filter_module.StoryFilter( expectations=expectations, run_disabled_stories=False) self.assertFalse(story_filter.ShouldSkip(story))
def testExcludetagTakesPriority(self): x = FakeStory('x', {'1'}) y = FakeStory('y', {'1', '2'}) stories = (x, y) story_filter = story_filter_module.StoryFilter( story_tag_filter='1', story_tag_filter_exclude='2') output = story_filter.FilterStories(stories) self.assertEqual([x], output)
def testDisabledStory_StoryFlag(self): story = FakeStory('a_name') expectations = FakeExpectations(stories_to_disable=[story.name]) story_filter = story_filter_module.StoryFilter( expectations=expectations, run_disabled_stories=False, stories=['a_name']) self.assertFalse(story_filter.ShouldSkip(story))
def testNoMatch(self): a = FakeStory('a') foo = FakeStory('foo') # pylint: disable=blacklisted-name foobar = FakeStory('foobar') stories = (a, foo, foobar) story_filter = story_filter_module.StoryFilter(story_filter='1234') output = story_filter.FilterStories(stories) self.assertEqual([], output)
def testAbridgedStorySetTag(self): x = FakeStory('x', {'1'}) y = FakeStory('y', {'1', '2'}) stories = (x, y) story_filter = story_filter_module.StoryFilter( abridged_story_set_tag='2') output = story_filter.FilterStories(stories) self.assertEqual([y], output)
def testExcludeTakesPriority(self): a = FakeStory('a') foo = FakeStory('foo') # pylint: disable=blacklisted-name foobar = FakeStory('foobar') stories = (a, foo, foobar) story_filter = story_filter_module.StoryFilter( story_filter='foo', story_filter_exclude='bar') output = story_filter.FilterStories(stories) self.assertEqual([foo], output)
def testStoryShardEndWraps(self): """This is needed since benchmarks may change size. When they change size, we will not immediately write new shard maps for them. """ story_filter = story_filter_module.StoryFilter(shard_end_index=5) output = story_filter.FilterStories(self.stories) self.assertEqual(list(self.stories), output)
def testStoryFlag(self): a = FakeStory('a') b = FakeStory('b') c = FakeStory('c') d = FakeStory('d') stories = (a, b, c, d) story_filter = story_filter_module.StoryFilter(stories=['a', 'c']) output = story_filter.FilterStories(stories) self.assertEqual([a, c], output)
def stories(self): if self._stories != None: return self._stories else: story_set = benchmark_utils.GetBenchmarkStorySet(self.benchmark()) abridged_story_set_tag = ( story_set.GetAbridgedStorySetTagFilter() if self.abridged else None) story_filter_obj = story_filter.StoryFilter( abridged_story_set_tag=abridged_story_set_tag) stories = story_filter_obj.FilterStories(story_set) self._stories = [story.name for story in stories] return self._stories
def testAbridgeBeforeShardIndexing(self): """Test that the abridged story set tag gets applied before indexing. Shard maps on the chromium side allow us to distribute runtime evenly across shards so that we minimize waterfall cycle time. If we abridge after we select indexes then we cannot control how many stories is on each shard. """ x = FakeStory('x', {'t'}) y = FakeStory('y') z = FakeStory('z', {'t'}) stories = (x, y, z) story_filter = story_filter_module.StoryFilter( abridged_story_set_tag='t', shard_end_index=2) output = story_filter.FilterStories(stories) self.assertEqual([x, z], output)
def testBadStoryFilterExcludeRegexRaises(self): with self.assertRaises(re.error): story_filter_module.StoryFilter(story_filter_exclude='+')
def testStoryIndexRangeOpenBegin(self): story_filter = story_filter_module.StoryFilter(shard_indexes='-3') output = story_filter.FilterStories(self.stories) self.assertEqual([self.s1, self.s2, self.s3], output)
def testStoryIndexRangeOpenEnd(self): story_filter = story_filter_module.StoryFilter(shard_indexes='1-') output = story_filter.FilterStories(self.stories) self.assertEqual([self.s2, self.s3, self.s4, self.s5], output)
def testStoryIndexRangeSingles(self): story_filter = story_filter_module.StoryFilter(shard_indexes='1,3') output = story_filter.FilterStories(self.stories) self.assertEqual([self.s2, self.s4], output)
def testStoryFlag_InvalidStory(self): a = FakeStory('a') stories = (a, ) story_filter = story_filter_module.StoryFilter(stories=['a', 'c']) with self.assertRaises(ValueError): story_filter.FilterStories(stories)
def testStoryIndexRangeCombinations(self): story_filter = story_filter_module.StoryFilter(shard_indexes='0,2-') output = story_filter.FilterStories(self.stories) self.assertEqual([self.s1, self.s3, self.s4, self.s5], output)
def testStoryIndexRangeInvalidRange(self): with self.assertRaises(ValueError): story_filter = story_filter_module.StoryFilter(shard_indexes='3-1') story_filter.FilterStories(self.stories)
def testMismatchedStoryShardArgEndAndBegin(self): with self.assertRaises(ValueError): story_filter_module.StoryFilter(shard_end_index=2, shard_begin_index=3)
def testStoryIndexRangeRangeOverLap(self): with self.assertRaises(ValueError): story_filter = story_filter_module.StoryFilter( shard_indexes='0-2,1-3') story_filter.FilterStories(self.stories)
def testBadStoryShardArgEnd(self): with self.assertRaises(ValueError): story_filter_module.StoryFilter(shard_end_index=-1)
def testStoryShardBeginWraps(self): story_filter = story_filter_module.StoryFilter(shard_begin_index=-1) output = story_filter.FilterStories(self.stories) self.assertEqual(list(self.stories), output)
def testStoryShardBoth(self): story_filter = story_filter_module.StoryFilter(shard_begin_index=1, shard_end_index=2) output = story_filter.FilterStories(self.stories) self.assertEqual([self.s2], output)
def testStoryShardBegin(self): story_filter = story_filter_module.StoryFilter(shard_begin_index=1) output = story_filter.FilterStories(self.stories) self.assertEqual([self.s2, self.s3], output)
def testStoryIndexRangeOutOfOrder(self): with self.assertRaises(ValueError): story_filter = story_filter_module.StoryFilter( shard_indexes='2,0-2') story_filter.FilterStories(self.stories)