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

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

Issue 2075423002: [Findit] Group failures by culprit and send notification to codereview. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Clean up. Created 4 years, 5 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
« no previous file with comments | « appengine/findit/waterfall/test/identify_try_job_culprit_pipeline_test.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 # found in the LICENSE file.
4
5 from common.git_repository import GitRepository
6 from common.rietveld import Rietveld
7 from model import analysis_status as status
8 from model.wf_culprit import WfCulprit
9 from waterfall import send_notification_for_culprit_pipeline
10 from waterfall.send_notification_for_culprit_pipeline import (
11 SendNotificationForCulpritPipeline)
12 from waterfall.test import wf_testcase
13
14
15 class SendNotificationForCulpritPipelineTest(wf_testcase.WaterfallTestCase):
16
17 def _MockRietveldAndGitRepository(self, mocked_url, rietveld_requests):
18 def Mocked_GetChangeLog(*_):
19 class MockedChangeLog(object):
20 @property
21 def code_review_url(self):
22 return mocked_url
23 return MockedChangeLog()
24 self.mock(GitRepository, 'GetChangeLog', Mocked_GetChangeLog)
25 def Mocked_Rietveld_PostMessage(_, url, message):
26 rietveld_requests.append((url, message))
27 return True
28 self.mock(Rietveld, 'PostMessage', Mocked_Rietveld_PostMessage)
29
30 def testShouldNotSendNotificationForSingleFailedBuild(self):
31 self.assertFalse(
32 send_notification_for_culprit_pipeline._ShouldSendNotification(
33 'm', 'b1', 1, 'chromium', 'r1'))
34 culprit = WfCulprit.Get('chromium', 'r1')
35 self.assertIsNotNone(culprit)
36 self.assertEqual([['m', 'b1', 1]], culprit.builds)
37
38 def testShouldNotSendNotificationForSameFailedBuild(self):
39 self.assertFalse(
40 send_notification_for_culprit_pipeline._ShouldSendNotification(
41 'm', 'b2', 2, 'chromium', 'r2'))
42 self.assertFalse(
43 send_notification_for_culprit_pipeline._ShouldSendNotification(
44 'm', 'b2', 2, 'chromium', 'r2'))
45 culprit = WfCulprit.Get('chromium', 'r2')
46 self.assertIsNotNone(culprit)
47 self.assertEqual([['m', 'b2', 2]], culprit.builds)
48
49 def testShouldSendNotificationForSecondFailedBuild(self):
50 self.assertFalse(
51 send_notification_for_culprit_pipeline._ShouldSendNotification(
52 'm', 'b31', 31, 'chromium', 'r3'))
53 self.assertTrue(
54 send_notification_for_culprit_pipeline._ShouldSendNotification(
55 'm', 'b32', 32, 'chromium', 'r3'))
56 culprit = WfCulprit.Get('chromium', 'r3')
57 self.assertIsNotNone(culprit)
58 self.assertEqual(status.RUNNING, culprit.cr_notification_status)
59 self.assertEqual([['m', 'b31', 31], ['m', 'b32', 32]], culprit.builds)
60
61 def testShouldNotSendNotificationForFirstFailedBuildCycle(self):
62 rietveld_requests = []
63 self._MockRietveldAndGitRepository('url', rietveld_requests)
64
65 pipeline = SendNotificationForCulpritPipeline()
66 self.assertFalse(pipeline.run('m', 'b4', 4, 'chromium', 'r4'))
67 self.assertEqual(0, len(rietveld_requests))
68
69 def testShouldNotSendNotificationIfNoCodeReview(self):
70 rietveld_requests = []
71 self._MockRietveldAndGitRepository(None, rietveld_requests)
72 culprit = WfCulprit.Create('chromium', 'r5')
73 culprit.builds.append(['m', 'b51', 51])
74 culprit.put()
75
76 pipeline = SendNotificationForCulpritPipeline()
77 self.assertFalse(pipeline.run('m', 'b52', 52, 'chromium', 'r5'))
78 self.assertEqual(0, len(rietveld_requests))
79
80 def testSendNotificationSuccess(self):
81 rietveld_requests = []
82 self._MockRietveldAndGitRepository('url', rietveld_requests)
83 culprit = WfCulprit.Create('chromium', 'r6')
84 culprit.builds.append(['m', 'b61', 61])
85 culprit.put()
86
87 pipeline = SendNotificationForCulpritPipeline()
88 self.assertTrue(pipeline.run('m', 'b62', 62, 'chromium', 'r6'))
89 self.assertEqual(1, len(rietveld_requests))
OLDNEW
« no previous file with comments | « appengine/findit/waterfall/test/identify_try_job_culprit_pipeline_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698