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

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

Issue 790673005: Move max_failures option from PageTest to benchmark. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments. 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
« no previous file with comments | « tools/telemetry/telemetry/user_story/user_story_runner.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/user_story/user_story_runner_unittest.py
diff --git a/tools/telemetry/telemetry/user_story/user_story_runner_unittest.py b/tools/telemetry/telemetry/user_story/user_story_runner_unittest.py
index b3b90378c8cbe0f0e0caa39860b5eb72bebc3a8c..30f54f199a01aae689501778135e4623e635abce 100644
--- a/tools/telemetry/telemetry/user_story/user_story_runner_unittest.py
+++ b/tools/telemetry/telemetry/user_story/user_story_runner_unittest.py
@@ -59,7 +59,6 @@ class TestSharedUserStoryState(shared_user_story_state.SharedUserStoryState):
def RunUserStory(self, results):
self._test.RunPage(self._current_user_story, None, results)
-
def DidRunUserStory(self, results):
pass
@@ -412,7 +411,7 @@ class UserStoryRunnerTest(unittest.TestCase):
def testCheckArchives(self):
uss = user_story_set.UserStorySet()
uss.AddUserStory(page_module.Page(
- 'http://www.testurl.com', self, uss.base_dir))
+ 'http://www.testurl.com', uss, uss.base_dir))
# Page set missing archive_data_file.
self.assertFalse(user_story_runner._CheckArchives(
uss.archive_data_file, uss.wpr_archive_info, uss.user_stories))
@@ -420,7 +419,7 @@ class UserStoryRunnerTest(unittest.TestCase):
uss = user_story_set.UserStorySet(
archive_data_file='missing_archive_data_file.json')
uss.AddUserStory(page_module.Page(
- 'http://www.testurl.com', self, uss.base_dir))
+ 'http://www.testurl.com', uss, uss.base_dir))
# Page set missing json file specified in archive_data_file.
self.assertFalse(user_story_runner._CheckArchives(
uss.archive_data_file, uss.wpr_archive_info, uss.user_stories))
@@ -429,12 +428,12 @@ class UserStoryRunnerTest(unittest.TestCase):
archive_data_file='../../unittest_data/test.json',
cloud_storage_bucket=cloud_storage.PUBLIC_BUCKET)
uss.AddUserStory(page_module.Page(
- 'http://www.testurl.com', self, uss.base_dir))
+ 'http://www.testurl.com', uss, uss.base_dir))
# Page set with valid archive_data_file.
self.assertTrue(user_story_runner._CheckArchives(
uss.archive_data_file, uss.wpr_archive_info, uss.user_stories))
uss.AddUserStory(page_module.Page(
- 'http://www.google.com', self, uss.base_dir))
+ 'http://www.google.com', uss, uss.base_dir))
# Page set with an archive_data_file which exists but is missing a page.
self.assertFalse(user_story_runner._CheckArchives(
uss.archive_data_file, uss.wpr_archive_info, uss.user_stories))
@@ -443,10 +442,91 @@ class UserStoryRunnerTest(unittest.TestCase):
archive_data_file='../../unittest_data/test_missing_wpr_file.json',
cloud_storage_bucket=cloud_storage.PUBLIC_BUCKET)
uss.AddUserStory(page_module.Page(
- 'http://www.testurl.com', self, uss.base_dir))
+ 'http://www.testurl.com', uss, uss.base_dir))
uss.AddUserStory(page_module.Page(
- 'http://www.google.com', self, uss.base_dir))
+ 'http://www.google.com', uss, uss.base_dir))
# Page set with an archive_data_file which exists and contains all pages
# but fails to find a wpr file.
self.assertFalse(user_story_runner._CheckArchives(
uss.archive_data_file, uss.wpr_archive_info, uss.user_stories))
+
+
+ def _testMaxFailuresOptionIsRespectedAndOverridable(
+ self, num_failing_user_stories, runner_max_failures, options_max_failures,
+ expected_num_failures):
+ class SimpleSharedUserStoryState(
+ shared_user_story_state.SharedUserStoryState):
+ _fake_platform = FakePlatform()
+ _current_user_story = None
+
+ @property
+ def platform(self):
+ return self._fake_platform
+
+ def WillRunUserStory(self, story):
+ self._current_user_story = story
+
+ def RunUserStory(self, results):
+ self._current_user_story.Run()
+
+ def DidRunUserStory(self, results):
+ pass
+
+ def GetTestExpectationAndSkipValue(self, expectations):
+ return 'pass', None
+
+ def TearDownState(self, results):
+ pass
+
+ class FailingUserStory(user_story.UserStory):
+ def __init__(self):
+ super(FailingUserStory, self).__init__(
+ shared_user_story_state_class=SimpleSharedUserStoryState,
+ is_local=True)
+ self.was_run = False
+
+ def Run(self):
+ self.was_run = True
+ raise page_test.Failure
+
+ self.SuppressExceptionFormatting()
+
+ uss = user_story_set.UserStorySet()
+ for _ in range(num_failing_user_stories):
+ uss.AddUserStory(FailingUserStory())
+
+ options = _GetOptionForUnittest()
+ options.output_formats = ['none']
+ options.suppress_gtest_report = True
+ if options_max_failures:
+ options.max_failures = options_max_failures
+
+ results = results_options.CreateResults(EmptyMetadataForTest(), options)
+ user_story_runner.Run(
+ DummyTest(), uss, test_expectations.TestExpectations(), options,
+ results, max_failures=runner_max_failures)
+ self.assertEquals(0, GetNumberOfSuccessfulPageRuns(results))
+ self.assertEquals(expected_num_failures, len(results.failures))
+ for ii, story in enumerate(uss.user_stories):
+ self.assertEqual(story.was_run, ii < expected_num_failures)
+
+ def testMaxFailuresNotSpecified(self):
+ self._testMaxFailuresOptionIsRespectedAndOverridable(
+ num_failing_user_stories=5, runner_max_failures=None,
+ options_max_failures=None, expected_num_failures=5)
+
+ def testMaxFailuresSpecifiedToRun(self):
+ # Runs up to max_failures+1 failing tests before stopping, since
+ # every tests after max_failures failures have been encountered
+ # may all be passing.
+ self._testMaxFailuresOptionIsRespectedAndOverridable(
+ num_failing_user_stories=5, runner_max_failures=3,
+ options_max_failures=None, expected_num_failures=4)
+
+ def testMaxFailuresOption(self):
+ # Runs up to max_failures+1 failing tests before stopping, since
+ # every tests after max_failures failures have been encountered
+ # may all be passing.
+ self._testMaxFailuresOptionIsRespectedAndOverridable(
+ num_failing_user_stories=5, runner_max_failures=3,
+ options_max_failures=1, expected_num_failures=2)
« no previous file with comments | « tools/telemetry/telemetry/user_story/user_story_runner.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698