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

Side by Side Diff: appengine/findit/waterfall/test/send_notification_for_culprit_pipeline_test.py

Issue 2302223002: [Findit] Change the criteria of sending notification to code review. (Closed)
Patch Set: Address comments Created 4 years, 3 months 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 unified diff | Download patch
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import datetime 5 import datetime
6 6
7 from common.git_repository import GitRepository 7 from common.git_repository import GitRepository
8 from common.rietveld import Rietveld 8 from common.rietveld import Rietveld
9 from model import analysis_status as status 9 from model import analysis_status as status
10 from model.wf_culprit import WfCulprit 10 from model.wf_culprit import WfCulprit
(...skipping 27 matching lines...) Expand all
38 return 123 38 return 123
39 39
40 return MockedChangeLog() 40 return MockedChangeLog()
41 self.mock(GitRepository, 'GetChangeLog', Mocked_GetChangeLog) 41 self.mock(GitRepository, 'GetChangeLog', Mocked_GetChangeLog)
42 42
43 def _MockBuildEndTime(self): 43 def _MockBuildEndTime(self):
44 def Mocked_GetBuildEndTime(*_): 44 def Mocked_GetBuildEndTime(*_):
45 return _MOCKED_BUILD_END_TIME 45 return _MOCKED_BUILD_END_TIME
46 self.mock(build_util, 'GetBuildEndTime', Mocked_GetBuildEndTime) 46 self.mock(build_util, 'GetBuildEndTime', Mocked_GetBuildEndTime)
47 47
48 def testShouldNotSendNotificationForSingleFailedBuild(self): 48 def testShouldNotSendNotificationForSameFailedBuild(self):
49 criteria = {
50 'time_limit_passed': False
51 }
52 self.assertTrue(
53 send_notification_for_culprit_pipeline._ShouldSendNotification(
54 'm', 'b2', 2, 'chromium', 'r2', 123, criteria))
49 self.assertFalse( 55 self.assertFalse(
50 send_notification_for_culprit_pipeline._ShouldSendNotification( 56 send_notification_for_culprit_pipeline._ShouldSendNotification(
51 'm', 'b1', 1, 'chromium', 'r1', 123, 2, False)) 57 'm', 'b2', 2, 'chromium', 'r2', 123, criteria))
52 culprit = WfCulprit.Get('chromium', 'r1')
53 self.assertIsNotNone(culprit)
54 self.assertEqual([['m', 'b1', 1]], culprit.builds)
55
56 def testShouldNotSendNotificationForSameFailedBuild(self):
57 self.assertFalse(
58 send_notification_for_culprit_pipeline._ShouldSendNotification(
59 'm', 'b2', 2, 'chromium', 'r2', 123, 2, False))
60 self.assertFalse(
61 send_notification_for_culprit_pipeline._ShouldSendNotification(
62 'm', 'b2', 2, 'chromium', 'r2', 123, 2, False))
63 culprit = WfCulprit.Get('chromium', 'r2') 58 culprit = WfCulprit.Get('chromium', 'r2')
64 self.assertIsNotNone(culprit) 59 self.assertIsNotNone(culprit)
65 self.assertEqual([['m', 'b2', 2]], culprit.builds) 60 self.assertEqual([['m', 'b2', 2]], culprit.builds)
61 self.assertEqual(status.RUNNING, culprit.cr_notification_status)
66 62
67 def testShouldSendNotificationForSecondFailedBuild(self): 63 def testShouldNotSendNotificationIfTimePassed(self):
64 criteria = {
65 'time_limit_passed': True
66 }
68 self.assertFalse( 67 self.assertFalse(
69 send_notification_for_culprit_pipeline._ShouldSendNotification( 68 send_notification_for_culprit_pipeline._ShouldSendNotification(
70 'm', 'b31', 31, 'chromium', 'r3', 123, 2, False)) 69 'm', 'b2', 2, 'chromium', 'r2', 123, criteria))
71 self.assertTrue(
72 send_notification_for_culprit_pipeline._ShouldSendNotification(
73 'm', 'b32', 32, 'chromium', 'r3', 123, 2, False))
74 culprit = WfCulprit.Get('chromium', 'r3')
75 self.assertIsNotNone(culprit)
76 self.assertEqual(status.RUNNING, culprit.cr_notification_status)
77 self.assertEqual([['m', 'b31', 31], ['m', 'b32', 32]], culprit.builds)
78
79 def testShouldNotSendNotificationForFirstFailedBuildCycle(self):
80 rietveld_requests = []
81 self._MockRietveld(rietveld_requests)
82 self._MockGitRepository('url')
83 self.MockUTCNow(_MOCKED_DATETIME_UTCNOW)
84 self._MockBuildEndTime()
85
86 pipeline = SendNotificationForCulpritPipeline()
87 self.assertFalse(pipeline.run('m', 'b4', 4, 'chromium', 'r4'))
88 self.assertEqual(0, len(rietveld_requests))
89 70
90 def testShouldNotSendNotificationIfNoCodeReview(self): 71 def testShouldNotSendNotificationIfNoCodeReview(self):
91 rietveld_requests = [] 72 rietveld_requests = []
92 self._MockRietveld(rietveld_requests) 73 self._MockRietveld(rietveld_requests)
93 self._MockGitRepository(None) 74 self._MockGitRepository(None)
94 self.MockUTCNow(_MOCKED_DATETIME_UTCNOW) 75 self.MockUTCNow(_MOCKED_DATETIME_UTCNOW)
95 self._MockBuildEndTime() 76 self._MockBuildEndTime()
96 culprit = WfCulprit.Create('chromium', 'r5', 123) 77 culprit = WfCulprit.Create('chromium', 'r5', 123)
97 culprit.builds.append(['m', 'b51', 51]) 78 culprit.builds.append(['m', 'b51', 51])
98 culprit.put() 79 culprit.put()
99 80
100 pipeline = SendNotificationForCulpritPipeline() 81 pipeline = SendNotificationForCulpritPipeline()
101 self.assertFalse(pipeline.run('m', 'b52', 52, 'chromium', 'r5')) 82 self.assertFalse(pipeline.run('m', 'b52', 52, 'chromium', 'r5'))
102 self.assertEqual(0, len(rietveld_requests)) 83 self.assertEqual(0, len(rietveld_requests))
103 84
104 def testSendNotificationSuccess(self): 85 def testSendNotificationSuccess(self):
105 rietveld_requests = [] 86 rietveld_requests = []
106 self._MockRietveld(rietveld_requests) 87 self._MockRietveld(rietveld_requests)
107 self._MockGitRepository('url') 88 self._MockGitRepository('url')
108 self.MockUTCNow(_MOCKED_DATETIME_UTCNOW) 89 self.MockUTCNow(_MOCKED_DATETIME_UTCNOW)
109 self._MockBuildEndTime() 90 self._MockBuildEndTime()
110 culprit = WfCulprit.Create('chromium', 'r6', 123) 91 culprit = WfCulprit.Create('chromium', 'r6', 123)
111 culprit.builds.append(['m', 'b61', 61]) 92 culprit.builds.append(['m', 'b61', 61])
112 culprit.put() 93 culprit.put()
113 94
114 pipeline = SendNotificationForCulpritPipeline() 95 pipeline = SendNotificationForCulpritPipeline()
115 self.assertTrue(pipeline.run('m', 'b62', 62, 'chromium', 'r6')) 96 self.assertTrue(pipeline.run('m', 'b62', 62, 'chromium', 'r6'))
116 self.assertEqual(1, len(rietveld_requests)) 97 self.assertEqual(1, len(rietveld_requests))
98
99 def testDontSendNotificationIfShouldNot(self):
100 rietveld_requests = []
101 self._MockRietveld(rietveld_requests)
102 self._MockGitRepository('url')
103 self.MockUTCNow(_MOCKED_DATETIME_UTCNOW)
104 self._MockBuildEndTime()
105 culprit = WfCulprit.Create('chromium', 'r7', 123)
106 culprit.builds.append(['m', 'b71', 71])
107 culprit.put()
108
109 pipeline = SendNotificationForCulpritPipeline()
110 self.assertFalse(pipeline.run('m', 'b71', 71, 'chromium', 'r7'))
111 self.assertEqual(0, len(rietveld_requests))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698