コード例 #1
0
 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)
コード例 #2
0
 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)
コード例 #3
0
 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')
コード例 #4
0
 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)
コード例 #5
0
 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))
コード例 #6
0
 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)
コード例 #7
0
 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))
コード例 #8
0
 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)
コード例 #9
0
 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)
コード例 #10
0
 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)
コード例 #11
0
    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)
コード例 #12
0
 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)
コード例 #13
0
 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
コード例 #14
0
    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)
コード例 #15
0
 def testBadStoryFilterExcludeRegexRaises(self):
     with self.assertRaises(re.error):
         story_filter_module.StoryFilter(story_filter_exclude='+')
コード例 #16
0
 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)
コード例 #17
0
 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)
コード例 #18
0
 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)
コード例 #19
0
 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)
コード例 #20
0
 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)
コード例 #21
0
 def testStoryIndexRangeInvalidRange(self):
     with self.assertRaises(ValueError):
         story_filter = story_filter_module.StoryFilter(shard_indexes='3-1')
         story_filter.FilterStories(self.stories)
コード例 #22
0
 def testMismatchedStoryShardArgEndAndBegin(self):
     with self.assertRaises(ValueError):
         story_filter_module.StoryFilter(shard_end_index=2,
                                         shard_begin_index=3)
コード例 #23
0
 def testStoryIndexRangeRangeOverLap(self):
     with self.assertRaises(ValueError):
         story_filter = story_filter_module.StoryFilter(
             shard_indexes='0-2,1-3')
         story_filter.FilterStories(self.stories)
コード例 #24
0
 def testBadStoryShardArgEnd(self):
     with self.assertRaises(ValueError):
         story_filter_module.StoryFilter(shard_end_index=-1)
コード例 #25
0
 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)
コード例 #26
0
 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)
コード例 #27
0
 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)
コード例 #28
0
 def testStoryIndexRangeOutOfOrder(self):
     with self.assertRaises(ValueError):
         story_filter = story_filter_module.StoryFilter(
             shard_indexes='2,0-2')
         story_filter.FilterStories(self.stories)