Chromium Code Reviews| Index: appengine/findit/waterfall/test/send_notification_for_culprit_pipeline_test.py |
| diff --git a/appengine/findit/waterfall/test/send_notification_for_culprit_pipeline_test.py b/appengine/findit/waterfall/test/send_notification_for_culprit_pipeline_test.py |
| index ef647ad33cf509dd8c5b3928862187a8cd3d93e4..4eb67b943dc44a49e6fdc02b61853cb39a4e0ef2 100644 |
| --- a/appengine/findit/waterfall/test/send_notification_for_culprit_pipeline_test.py |
| +++ b/appengine/findit/waterfall/test/send_notification_for_culprit_pipeline_test.py |
| @@ -2,6 +2,8 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| +import datetime |
| + |
| from common.git_repository import GitRepository |
| from common.rietveld import Rietveld |
| from model import analysis_status as status |
| @@ -12,25 +14,41 @@ from waterfall.send_notification_for_culprit_pipeline import ( |
| from waterfall.test import wf_testcase |
| +_MOCKED_DATETIME_UTCNOW = datetime.datetime(2016, 06, 28, 12, 44, 00) |
| +_MOCKED_COMMIT_TIME = datetime.datetime(2016, 06, 28, 12, 40, 00) |
| + |
| class SendNotificationForCulpritPipelineTest(wf_testcase.WaterfallTestCase): |
| - def _MockRietveldAndGitRepository(self, mocked_url, rietveld_requests): |
| + def _MockRietveld(self, rietveld_requests): |
| + def Mocked_Rietveld_PostMessage(_, url, message): |
| + rietveld_requests.append((url, message)) |
| + return True |
| + self.mock(Rietveld, 'PostMessage', Mocked_Rietveld_PostMessage) |
| + |
| + def _MockGitRepository(self, mocked_url): |
| def Mocked_GetChangeLog(*_): |
| class MockedChangeLog(object): |
| @property |
| def code_review_url(self): |
| return mocked_url |
| + @property |
| + def committer_time(self): |
| + return _MOCKED_COMMIT_TIME |
| return MockedChangeLog() |
| self.mock(GitRepository, 'GetChangeLog', Mocked_GetChangeLog) |
| - def Mocked_Rietveld_PostMessage(_, url, message): |
| - rietveld_requests.append((url, message)) |
| - return True |
| - self.mock(Rietveld, 'PostMessage', Mocked_Rietveld_PostMessage) |
| + |
| + def _MockDatetimeUtcNow(self, mocked_utcnow): |
|
chanli
2016/06/30 20:23:42
This should be trivial: I noticed that for all _Mo
stgao
2016/06/30 22:37:45
Done.
|
| + class Mocked_Datetime(object): |
| + @staticmethod |
| + def utcnow(): |
| + return mocked_utcnow |
| + self.mock(send_notification_for_culprit_pipeline, |
| + 'datetime', Mocked_Datetime) |
| def testShouldNotSendNotificationForSingleFailedBuild(self): |
| self.assertFalse( |
| send_notification_for_culprit_pipeline._ShouldSendNotification( |
| - 'm', 'b1', 1, 'chromium', 'r1')) |
| + 'm', 'b1', 1, 'chromium', 'r1', 2, False)) |
| culprit = WfCulprit.Get('chromium', 'r1') |
| self.assertIsNotNone(culprit) |
| self.assertEqual([['m', 'b1', 1]], culprit.builds) |
| @@ -38,10 +56,10 @@ class SendNotificationForCulpritPipelineTest(wf_testcase.WaterfallTestCase): |
| def testShouldNotSendNotificationForSameFailedBuild(self): |
| self.assertFalse( |
| send_notification_for_culprit_pipeline._ShouldSendNotification( |
| - 'm', 'b2', 2, 'chromium', 'r2')) |
| + 'm', 'b2', 2, 'chromium', 'r2', 2, False)) |
| self.assertFalse( |
| send_notification_for_culprit_pipeline._ShouldSendNotification( |
| - 'm', 'b2', 2, 'chromium', 'r2')) |
| + 'm', 'b2', 2, 'chromium', 'r2', 2, False)) |
| culprit = WfCulprit.Get('chromium', 'r2') |
| self.assertIsNotNone(culprit) |
| self.assertEqual([['m', 'b2', 2]], culprit.builds) |
| @@ -49,10 +67,10 @@ class SendNotificationForCulpritPipelineTest(wf_testcase.WaterfallTestCase): |
| def testShouldSendNotificationForSecondFailedBuild(self): |
| self.assertFalse( |
| send_notification_for_culprit_pipeline._ShouldSendNotification( |
| - 'm', 'b31', 31, 'chromium', 'r3')) |
| + 'm', 'b31', 31, 'chromium', 'r3', 2, False)) |
| self.assertTrue( |
| send_notification_for_culprit_pipeline._ShouldSendNotification( |
| - 'm', 'b32', 32, 'chromium', 'r3')) |
| + 'm', 'b32', 32, 'chromium', 'r3', 2, False)) |
| culprit = WfCulprit.Get('chromium', 'r3') |
| self.assertIsNotNone(culprit) |
| self.assertEqual(status.RUNNING, culprit.cr_notification_status) |
| @@ -60,7 +78,9 @@ class SendNotificationForCulpritPipelineTest(wf_testcase.WaterfallTestCase): |
| def testShouldNotSendNotificationForFirstFailedBuildCycle(self): |
| rietveld_requests = [] |
| - self._MockRietveldAndGitRepository('url', rietveld_requests) |
| + self._MockRietveld(rietveld_requests) |
| + self._MockGitRepository('url') |
| + self._MockDatetimeUtcNow(_MOCKED_DATETIME_UTCNOW) |
| pipeline = SendNotificationForCulpritPipeline() |
| self.assertFalse(pipeline.run('m', 'b4', 4, 'chromium', 'r4')) |
| @@ -68,7 +88,9 @@ class SendNotificationForCulpritPipelineTest(wf_testcase.WaterfallTestCase): |
| def testShouldNotSendNotificationIfNoCodeReview(self): |
| rietveld_requests = [] |
| - self._MockRietveldAndGitRepository(None, rietveld_requests) |
| + self._MockRietveld(rietveld_requests) |
| + self._MockGitRepository(None) |
| + self._MockDatetimeUtcNow(_MOCKED_DATETIME_UTCNOW) |
| culprit = WfCulprit.Create('chromium', 'r5') |
| culprit.builds.append(['m', 'b51', 51]) |
| culprit.put() |
| @@ -79,7 +101,9 @@ class SendNotificationForCulpritPipelineTest(wf_testcase.WaterfallTestCase): |
| def testSendNotificationSuccess(self): |
| rietveld_requests = [] |
| - self._MockRietveldAndGitRepository('url', rietveld_requests) |
| + self._MockRietveld(rietveld_requests) |
| + self._MockGitRepository('url') |
| + self._MockDatetimeUtcNow(_MOCKED_DATETIME_UTCNOW) |
| culprit = WfCulprit.Create('chromium', 'r6') |
| culprit.builds.append(['m', 'b61', 61]) |
| culprit.put() |