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

Side by Side Diff: appengine/findit/handlers/test/build_failure_test.py

Issue 1836293002: [Findit] Adding central config test class for unit tests (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 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/handlers/config.py ('k') | appengine/findit/handlers/test/config_test.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 os 5 import os
6 import re 6 import re
7 7
8 from google.appengine.ext import testbed 8 from google.appengine.ext import testbed
9
9 import webapp2 10 import webapp2
10 import webtest 11 import webtest
11 12
12 from testing_utils import testing
13
14 from handlers import build_failure 13 from handlers import build_failure
15 from handlers import handlers_util 14 from handlers import handlers_util
16 from handlers import result_status 15 from handlers import result_status
17 from model.wf_analysis import WfAnalysis 16 from model.wf_analysis import WfAnalysis
18 from model import wf_analysis_status 17 from model import wf_analysis_status
18 from model.wf_analysis import WfAnalysis
19 from waterfall import buildbot 19 from waterfall import buildbot
20 from waterfall import waterfall_config 20 from waterfall.test import wf_testcase
21
22 21
23 # Root directory appengine/findit. 22 # Root directory appengine/findit.
24 ROOT_DIR = os.path.join(os.path.dirname(__file__), 23 ROOT_DIR = os.path.join(os.path.dirname(__file__),
25 os.path.pardir, os.path.pardir) 24 os.path.pardir, os.path.pardir)
26 25
27 SAMPLE_TRY_JOB_INFO = { 26 SAMPLE_TRY_JOB_INFO = {
28 'm/b/119': { 27 'm/b/119': {
29 'step1 on platform':{ 28 'step1 on platform':{
30 'try_jobs': [ 29 'try_jobs': [
31 { 30 {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 'commit_position': '2', 92 'commit_position': '2',
94 'review_url': 'url_2' 93 'review_url': 'url_2'
95 } 94 }
96 } 95 }
97 ] 96 ]
98 } 97 }
99 } 98 }
100 } 99 }
101 100
102 101
103 class BuildFailureTest(testing.AppengineTestCase): 102 class BuildFailureTest(wf_testcase.WaterfallTestCase):
104 app_module = webapp2.WSGIApplication([ 103 app_module = webapp2.WSGIApplication([
105 ('/build-failure', build_failure.BuildFailure), 104 ('/build-failure', build_failure.BuildFailure),
106 ], debug=True) 105 ], debug=True)
107 106
108 def setUp(self): 107 def setUp(self):
109 super(BuildFailureTest, self).setUp() 108 super(BuildFailureTest, self).setUp()
110 109
111 # Setup clean task queues. 110 # Setup clean task queues.
112 self.testbed.init_taskqueue_stub(root_path=ROOT_DIR) 111 self.testbed.init_taskqueue_stub(root_path=ROOT_DIR)
113 self.taskqueue_stub = self.testbed.get_stub(testbed.TASKQUEUE_SERVICE_NAME) 112 self.taskqueue_stub = self.testbed.get_stub(testbed.TASKQUEUE_SERVICE_NAME)
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 def testInvalidBuildUrl(self): 148 def testInvalidBuildUrl(self):
150 build_url = 'abc' 149 build_url = 'abc'
151 self.assertRaisesRegexp( 150 self.assertRaisesRegexp(
152 webtest.app.AppError, 151 webtest.app.AppError,
153 re.compile('.*501 Not Implemented.*Url "%s" ' 152 re.compile('.*501 Not Implemented.*Url "%s" '
154 'is not pointing to a build.*' % build_url, 153 'is not pointing to a build.*' % build_url,
155 re.MULTILINE | re.DOTALL), 154 re.MULTILINE | re.DOTALL),
156 self.test_app.get, '/build-failure', params={'url': build_url}) 155 self.test_app.get, '/build-failure', params={'url': build_url})
157 156
158 def testNonAdminCanViewAnalysisOfFailureOnUnsupportedMaster(self): 157 def testNonAdminCanViewAnalysisOfFailureOnUnsupportedMaster(self):
159 master_name = 'm' 158 master_name = 'm2'
160 builder_name = 'b 1' 159 builder_name = 'b 1'
161 build_number = 123 160 build_number = 123
162 build_url = buildbot.CreateBuildUrl( 161 build_url = buildbot.CreateBuildUrl(
163 master_name, builder_name, build_number) 162 master_name, builder_name, build_number)
164 163
165 def MockMasterIsSupported(*_):
166 return False
167 self.mock(waterfall_config, 'MasterIsSupported',
168 MockMasterIsSupported)
169
170 analysis = WfAnalysis.Create(master_name, builder_name, build_number) 164 analysis = WfAnalysis.Create(master_name, builder_name, build_number)
171 analysis.status = wf_analysis_status.ANALYZED 165 analysis.status = wf_analysis_status.ANALYZED
172 analysis.put() 166 analysis.put()
173 167
174 response = self.test_app.get('/build-failure', 168 response = self.test_app.get('/build-failure',
175 params={'url': build_url}) 169 params={'url': build_url})
176 self.assertEquals(200, response.status_int) 170 self.assertEquals(200, response.status_int)
177 self.assertEqual(0, len(self.taskqueue_stub.get_filtered_tasks())) 171 self.assertEqual(0, len(self.taskqueue_stub.get_filtered_tasks()))
178 172
179 def testNonAdminCannotRequestAnalysisOfFailureOnUnsupportedMaster(self): 173 def testNonAdminCannotRequestAnalysisOfFailureOnUnsupportedMaster(self):
180 master_name = 'm' 174 master_name = 'm2'
181 builder_name = 'b 1' 175 builder_name = 'b 1'
182 build_number = 123 176 build_number = 123
183 build_url = buildbot.CreateBuildUrl( 177 build_url = buildbot.CreateBuildUrl(
184 master_name, builder_name, build_number) 178 master_name, builder_name, build_number)
185 179
186 def MockMasterIsSupported(*_):
187 return False
188 self.mock(waterfall_config, 'MasterIsSupported', MockMasterIsSupported)
189
190 self.assertRaisesRegexp( 180 self.assertRaisesRegexp(
191 webtest.app.AppError, 181 webtest.app.AppError,
192 re.compile('.*501 Not Implemented.*Master "%s" ' 182 re.compile('.*501 Not Implemented.*Master "%s" '
193 'is not supported yet.*' % master_name, 183 'is not supported yet.*' % master_name,
194 re.MULTILINE | re.DOTALL), 184 re.MULTILINE | re.DOTALL),
195 self.test_app.get, '/build-failure', params={'url': build_url}) 185 self.test_app.get, '/build-failure', params={'url': build_url})
196 186
197 def testAdminCanRequestAnalysisOfFailureOnUnsupportedMaster(self): 187 def testAdminCanRequestAnalysisOfFailureOnUnsupportedMaster(self):
198 master_name = 'm' 188 master_name = 'm2'
199 builder_name = 'b' 189 builder_name = 'b'
200 build_number = 123 190 build_number = 123
201 build_url = buildbot.CreateBuildUrl( 191 build_url = buildbot.CreateBuildUrl(
202 master_name, builder_name, build_number) 192 master_name, builder_name, build_number)
203 193
204 def MockMasterIsSupported(*_):
205 return False
206 self.mock(waterfall_config, 'MasterIsSupported', MockMasterIsSupported)
207
208 self.mock_current_user(user_email='test@chromium.org', is_admin=True) 194 self.mock_current_user(user_email='test@chromium.org', is_admin=True)
209 195
210 response = self.test_app.get('/build-failure', params={'url': build_url}) 196 response = self.test_app.get('/build-failure', params={'url': build_url})
211 self.assertEquals(200, response.status_int) 197 self.assertEquals(200, response.status_int)
212 198
213 self.assertEqual(1, len(self.taskqueue_stub.get_filtered_tasks())) 199 self.assertEqual(1, len(self.taskqueue_stub.get_filtered_tasks()))
214 200
215 def testAnyoneCanRequestAnalysisOfFailureOnSupportedMaster(self): 201 def testAnyoneCanRequestAnalysisOfFailureOnSupportedMaster(self):
216 master_name = 'm' 202 master_name = 'm'
217 builder_name = 'b 1' 203 builder_name = 'b 1'
218 build_number = 123 204 build_number = 123
219 build_url = buildbot.CreateBuildUrl( 205 build_url = buildbot.CreateBuildUrl(
220 master_name, builder_name, build_number) 206 master_name, builder_name, build_number)
221 207
222 def MockMasterIsSupported(*_):
223 return True
224 self.mock(waterfall_config, 'MasterIsSupported', MockMasterIsSupported)
225
226 response = self.test_app.get('/build-failure', params={'url': build_url}) 208 response = self.test_app.get('/build-failure', params={'url': build_url})
227 self.assertEquals(200, response.status_int) 209 self.assertEquals(200, response.status_int)
228 210
229 self.assertEqual(1, len(self.taskqueue_stub.get_filtered_tasks())) 211 self.assertEqual(1, len(self.taskqueue_stub.get_filtered_tasks()))
230 212
231 def testGetOrganizedAnalysisResultBySuspectedCLNonSwarming(self): 213 def testGetOrganizedAnalysisResultBySuspectedCLNonSwarming(self):
232 analysis_result = { 214 analysis_result = {
233 'failures': [ 215 'failures': [
234 { 216 {
235 'step_name': 'a', 217 'step_name': 'a',
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 'tests': [], 609 'tests': [],
628 'first_failure': 120, 610 'first_failure': 120,
629 'last_pass': 119, 611 'last_pass': 119,
630 'supported': True 612 'supported': True
631 } 613 }
632 ] 614 ]
633 } 615 }
634 } 616 }
635 } 617 }
636 self.assertEqual(expected_result, result) 618 self.assertEqual(expected_result, result)
OLDNEW
« no previous file with comments | « appengine/findit/handlers/config.py ('k') | appengine/findit/handlers/test/config_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698