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

Side by Side Diff: appengine/findit/waterfall/flake/test/flake_analysis_service_test.py

Issue 2438673004: [Findit] Post analysis results of flakes to bug filed by chromium-try-flakes. (Closed)
Patch Set: Created 4 years, 2 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 from datetime import datetime 5 from datetime import datetime
6 import mock 6 import mock
7 7
8 from common import constants 8 from common import constants
9 from model.flake.flake_analysis_request import BuildStep 9 from model.flake.flake_analysis_request import BuildStep
10 from model.flake.flake_analysis_request import FlakeAnalysisRequest 10 from model.flake.flake_analysis_request import FlakeAnalysisRequest
11 from waterfall.flake import flake_analysis_service 11 from waterfall.flake import flake_analysis_service
12 from waterfall.test import wf_testcase 12 from waterfall.test import wf_testcase
13 from waterfall.test_info import TestInfo
13 14
14 15
15 class FlakeAnalysisServiceTest(wf_testcase.WaterfallTestCase): 16 class FlakeAnalysisServiceTest(wf_testcase.WaterfallTestCase):
16 17
17 def testCheckFlakeSwarmedAndSupportedWhenNotSupported(self): 18 def testCheckFlakeSwarmedAndSupportedWhenNotSupported(self):
18 request = FlakeAnalysisRequest.Create('flake', False, 123) 19 request = FlakeAnalysisRequest.Create('flake', False, 123)
19 step1 = BuildStep.Create('m', 'b1', 10, 's', datetime(2016, 10, 01)) 20 step1 = BuildStep.Create('m', 'b1', 10, 's', datetime(2016, 10, 01))
20 step1.swarmed = False 21 step1.swarmed = False
21 step1.supported = False 22 step1.supported = False
22 step2 = BuildStep.Create('m', 'b2', 10, 's', datetime(2016, 10, 01)) 23 step2 = BuildStep.Create('m', 'b2', 10, 's', datetime(2016, 10, 01))
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 def CheckForNewAnalysis(*_): 218 def CheckForNewAnalysis(*_):
218 step.wf_master_name = 'wf_m' 219 step.wf_master_name = 'wf_m'
219 step.wf_builder_name = 'wf_b' 220 step.wf_builder_name = 'wf_b'
220 step.wf_build_number = 100 221 step.wf_build_number = 100
221 step.wf_step_name = 'wf_s' 222 step.wf_step_name = 'wf_s'
222 return 1, step 223 return 1, step
223 224
224 mocked_analysis = mock.Mock(key='key') 225 mocked_analysis = mock.Mock(key='key')
225 mocked_request = mock.Mock() 226 mocked_request = mock.Mock()
226 227
228 normalized_test = TestInfo('wf_m', 'wf_b', 100, 'wf_s', 'flake')
229 original_test = TestInfo('m', 'b', 80, 's', 'flake')
230
227 with mock.patch.object( 231 with mock.patch.object(
228 flake_analysis_service, '_CheckForNewAnalysis', 232 flake_analysis_service, '_CheckForNewAnalysis',
229 side_effect=CheckForNewAnalysis) as ( 233 side_effect=CheckForNewAnalysis) as (
230 mocked_CheckForNewAnalysis), mock.patch.object( 234 mocked_CheckForNewAnalysis), mock.patch.object(
231 flake_analysis_service.initialize_flake_pipeline, 235 flake_analysis_service.initialize_flake_pipeline,
232 'ScheduleAnalysisIfNeeded', return_value=mocked_analysis) as ( 236 'ScheduleAnalysisIfNeeded', return_value=mocked_analysis) as (
233 mocked_ScheduleAnalysisIfNeeded), mock.patch.object( 237 mocked_ScheduleAnalysisIfNeeded), mock.patch.object(
234 flake_analysis_service.FlakeAnalysisRequest, 238 flake_analysis_service.FlakeAnalysisRequest,
235 'GetVersion', return_value=mocked_request) as mocked_GetVersion: 239 'GetVersion', return_value=mocked_request) as mocked_GetVersion:
236 self.assertTrue(flake_analysis_service.ScheduleAnalysisForFlake( 240 self.assertTrue(flake_analysis_service.ScheduleAnalysisForFlake(
237 request, 'test@chromium.org', True)) 241 request, 'test@chromium.org', True))
238 mocked_CheckForNewAnalysis.assert_called_once_with(request) 242 mocked_CheckForNewAnalysis.assert_called_once_with(request)
239 mocked_ScheduleAnalysisIfNeeded.assert_called_once_with( 243 mocked_ScheduleAnalysisIfNeeded.assert_called_once_with(
240 'wf_m', 'wf_b', 100, 'wf_s', 'flake', 244 normalized_test, original_test, bug_id=123,
241 allow_new_analysis=True, manually_triggered=False, 245 allow_new_analysis=True, manually_triggered=False,
242 queue_name=constants.WATERFALL_ANALYSIS_QUEUE) 246 queue_name=constants.WATERFALL_ANALYSIS_QUEUE)
243 mocked_GetVersion.assert_called_once_with(key='flake', version=1) 247 mocked_GetVersion.assert_called_once_with(key='flake', version=1)
244 mocked_request.assert_has_calls([ 248 mocked_request.assert_has_calls([
245 mock.call.analyses.append('key'), 249 mock.call.analyses.append('key'),
246 mock.call.put(), 250 mock.call.put(),
247 ]) 251 ])
248 252
249 @mock.patch.object( 253 @mock.patch.object(
250 flake_analysis_service.step_mapper, 'FindMatchingWaterfallStep') 254 flake_analysis_service.step_mapper, 'FindMatchingWaterfallStep')
251 def testAuthorizedAccessAndNewAnalysisNeededButNotTriggered(self, _mock): 255 def testAuthorizedAccessAndNewAnalysisNeededButNotTriggered(self, _mock):
252 step = BuildStep.Create('m', 'b', 80, 's', datetime(2016, 10, 20)) 256 step = BuildStep.Create('m', 'b', 80, 's', datetime(2016, 10, 20))
253 request = FlakeAnalysisRequest.Create('flake', False, 123) 257 request = FlakeAnalysisRequest.Create('flake', False, 123)
254 request.build_steps = [step] 258 request.build_steps = [step]
255 259
256 def CheckForNewAnalysis(*_): 260 def CheckForNewAnalysis(*_):
257 step.wf_master_name = 'wf_m' 261 step.wf_master_name = 'wf_m'
258 step.wf_builder_name = 'wf_b' 262 step.wf_builder_name = 'wf_b'
259 step.wf_build_number = 100 263 step.wf_build_number = 100
260 step.wf_step_name = 'wf_s' 264 step.wf_step_name = 'wf_s'
261 return 1, step 265 return 1, step
262 266
267 normalized_test = TestInfo('wf_m', 'wf_b', 100, 'wf_s', 'flake')
268 original_test = TestInfo('m', 'b', 80, 's', 'flake')
263 with mock.patch.object( 269 with mock.patch.object(
264 flake_analysis_service, '_CheckForNewAnalysis', 270 flake_analysis_service, '_CheckForNewAnalysis',
265 side_effect=CheckForNewAnalysis) as ( 271 side_effect=CheckForNewAnalysis) as (
266 mocked_CheckForNewAnalysis), mock.patch.object( 272 mocked_CheckForNewAnalysis), mock.patch.object(
267 flake_analysis_service.initialize_flake_pipeline, 273 flake_analysis_service.initialize_flake_pipeline,
268 'ScheduleAnalysisIfNeeded', return_value=None) as ( 274 'ScheduleAnalysisIfNeeded', return_value=None) as (
269 mocked_ScheduleAnalysisIfNeeded), mock.patch.object( 275 mocked_ScheduleAnalysisIfNeeded), mock.patch.object(
270 flake_analysis_service.FlakeAnalysisRequest, 276 flake_analysis_service.FlakeAnalysisRequest,
271 'GetVersion', return_value=None) as mocked_GetVersion: 277 'GetVersion', return_value=None) as mocked_GetVersion:
272 self.assertFalse(flake_analysis_service.ScheduleAnalysisForFlake( 278 self.assertFalse(flake_analysis_service.ScheduleAnalysisForFlake(
273 request, 'test@chromium.org', True)) 279 request, 'test@chromium.org', True))
274 mocked_CheckForNewAnalysis.assert_called_once_with(request) 280 mocked_CheckForNewAnalysis.assert_called_once_with(request)
275 mocked_ScheduleAnalysisIfNeeded.assert_called_once_with( 281 mocked_ScheduleAnalysisIfNeeded.assert_called_once_with(
276 'wf_m', 'wf_b', 100, 'wf_s', 'flake', 282 normalized_test, original_test, bug_id=123,
277 allow_new_analysis=True, manually_triggered=False, 283 allow_new_analysis=True, manually_triggered=False,
278 queue_name=constants.WATERFALL_ANALYSIS_QUEUE) 284 queue_name=constants.WATERFALL_ANALYSIS_QUEUE)
279 mocked_GetVersion.assert_not_called() 285 mocked_GetVersion.assert_not_called()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698