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

Powered by Google App Engine
This is Rietveld 408576698