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

Side by Side Diff: appengine/findit/waterfall/flake/test/recursive_flake_pipeline_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 common.pipeline_wrapper import pipeline_handlers 9 from common.pipeline_wrapper import pipeline_handlers
10 from model import analysis_status 10 from model import analysis_status
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 rfp = RecursiveFlakePipeline( 155 rfp = RecursiveFlakePipeline(
156 master_name, builder_name, build_number, step_name, test_name, 156 master_name, builder_name, build_number, step_name, test_name,
157 analysis.version_number, master_build_number, 157 analysis.version_number, master_build_number,
158 flakiness_algorithm_results_dict=flakiness_algorithm_results_dict) 158 flakiness_algorithm_results_dict=flakiness_algorithm_results_dict)
159 159
160 rfp.start(queue_name=queue_name) 160 rfp.start(queue_name=queue_name)
161 self.execute_queued_tasks() 161 self.execute_queued_tasks()
162 162
163 @mock.patch.object( 163 @mock.patch.object(
164 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) 164 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None)
165 def testNextBuildPipelineForNewRecursionFirstFlake(self, _mocked_eta_func): 165 @mock.patch.object(
166 recursive_flake_pipeline, '_UpdateBugWithResult', return_value=None)
167 def testNextBuildPipelineForNewRecursionFirstFlake(self, *_):
166 master_name = 'm' 168 master_name = 'm'
167 builder_name = 'b' 169 builder_name = 'b'
168 master_build_number = 100 170 master_build_number = 100
169 build_number = 100 171 build_number = 100
170 step_name = 's' 172 step_name = 's'
171 test_name = 't' 173 test_name = 't'
172 test_result_future = 'trf' 174 test_result_future = 'trf'
173 flakiness_algorithm_results_dict = { 175 flakiness_algorithm_results_dict = {
174 'flakes_in_a_row': 0, 176 'flakes_in_a_row': 0,
175 'stable_in_a_row': 0, 177 'stable_in_a_row': 0,
(...skipping 25 matching lines...) Expand all
201 203
202 NextBuildNumberPipeline.run( 204 NextBuildNumberPipeline.run(
203 NextBuildNumberPipeline(), master_name, builder_name, 205 NextBuildNumberPipeline(), master_name, builder_name,
204 master_build_number, build_number, step_name, test_name, 206 master_build_number, build_number, step_name, test_name,
205 analysis.version_number, test_result_future, 207 analysis.version_number, test_result_future,
206 flakiness_algorithm_results_dict) 208 flakiness_algorithm_results_dict)
207 self.assertEquals(flakiness_algorithm_results_dict['flakes_in_a_row'], 1) 209 self.assertEquals(flakiness_algorithm_results_dict['flakes_in_a_row'], 1)
208 210
209 @mock.patch.object( 211 @mock.patch.object(
210 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) 212 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None)
211 def testNextBuildPipelineForNewRecursionFirstStable(self, _mocked_eta_func): 213 @mock.patch.object(
214 recursive_flake_pipeline, '_UpdateBugWithResult', return_value=None)
215 def testNextBuildPipelineForNewRecursionFirstStable(self, *_):
212 master_name = 'm' 216 master_name = 'm'
213 builder_name = 'b' 217 builder_name = 'b'
214 master_build_number = 100 218 master_build_number = 100
215 build_number = 100 219 build_number = 100
216 step_name = 's' 220 step_name = 's'
217 test_name = 't' 221 test_name = 't'
218 test_result_future = 'trf' 222 test_result_future = 'trf'
219 flakiness_algorithm_results_dict = { 223 flakiness_algorithm_results_dict = {
220 'flakes_in_a_row': 0, 224 'flakes_in_a_row': 0,
221 'stable_in_a_row': 0, 225 'stable_in_a_row': 0,
(...skipping 23 matching lines...) Expand all
245 249
246 NextBuildNumberPipeline.run( 250 NextBuildNumberPipeline.run(
247 NextBuildNumberPipeline(), master_name, builder_name, 251 NextBuildNumberPipeline(), master_name, builder_name,
248 master_build_number, build_number, step_name, 252 master_build_number, build_number, step_name,
249 test_name, analysis.version_number, test_result_future, 253 test_name, analysis.version_number, test_result_future,
250 flakiness_algorithm_results_dict) 254 flakiness_algorithm_results_dict)
251 self.assertEquals(flakiness_algorithm_results_dict['stable_in_a_row'], 1) 255 self.assertEquals(flakiness_algorithm_results_dict['stable_in_a_row'], 1)
252 256
253 @mock.patch.object( 257 @mock.patch.object(
254 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) 258 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None)
255 def testNextBuildPipelineForNewRecursionFlakeInARow(self, _mocked_eta_func): 259 @mock.patch.object(
260 recursive_flake_pipeline, '_UpdateBugWithResult', return_value=None)
261 def testNextBuildPipelineForNewRecursionFlakeInARow(self, *_):
256 master_name = 'm' 262 master_name = 'm'
257 builder_name = 'b' 263 builder_name = 'b'
258 master_build_number = 100 264 master_build_number = 100
259 build_number = 100 265 build_number = 100
260 step_name = 's' 266 step_name = 's'
261 test_name = 't' 267 test_name = 't'
262 test_result_future = 'trf' 268 test_result_future = 'trf'
263 flakiness_algorithm_results_dict = { 269 flakiness_algorithm_results_dict = {
264 'flakes_in_a_row': 0, 270 'flakes_in_a_row': 0,
265 'stable_in_a_row': 4, 271 'stable_in_a_row': 4,
(...skipping 24 matching lines...) Expand all
290 296
291 NextBuildNumberPipeline.run( 297 NextBuildNumberPipeline.run(
292 NextBuildNumberPipeline(), master_name, builder_name, 298 NextBuildNumberPipeline(), master_name, builder_name,
293 master_build_number, build_number, step_name, 299 master_build_number, build_number, step_name,
294 test_name, analysis.version_number, test_result_future, 300 test_name, analysis.version_number, test_result_future,
295 flakiness_algorithm_results_dict) 301 flakiness_algorithm_results_dict)
296 self.assertEquals(flakiness_algorithm_results_dict['stabled_out'], True) 302 self.assertEquals(flakiness_algorithm_results_dict['stabled_out'], True)
297 303
298 @mock.patch.object( 304 @mock.patch.object(
299 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) 305 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None)
300 def testNextBuildPipelineForNewRecursionStableInARow(self, _mocked_eta_func): 306 @mock.patch.object(
307 recursive_flake_pipeline, '_UpdateBugWithResult', return_value=None)
308 def testNextBuildPipelineForNewRecursionStableInARow(self, *_):
301 master_name = 'm' 309 master_name = 'm'
302 builder_name = 'b' 310 builder_name = 'b'
303 master_build_number = 100 311 master_build_number = 100
304 build_number = 100 312 build_number = 100
305 step_name = 's' 313 step_name = 's'
306 test_name = 't' 314 test_name = 't'
307 test_result_future = 'trf' 315 test_result_future = 'trf'
308 flakiness_algorithm_results_dict = { 316 flakiness_algorithm_results_dict = {
309 'flakes_in_a_row': 4, 317 'flakes_in_a_row': 4,
310 'stable_in_a_row': 0, 318 'stable_in_a_row': 0,
(...skipping 24 matching lines...) Expand all
335 343
336 NextBuildNumberPipeline.run( 344 NextBuildNumberPipeline.run(
337 NextBuildNumberPipeline(), master_name, builder_name, 345 NextBuildNumberPipeline(), master_name, builder_name,
338 master_build_number, build_number, step_name, 346 master_build_number, build_number, step_name,
339 test_name, analysis.version_number, test_result_future, 347 test_name, analysis.version_number, test_result_future,
340 flakiness_algorithm_results_dict) 348 flakiness_algorithm_results_dict)
341 self.assertEquals(flakiness_algorithm_results_dict['flaked_out'], True) 349 self.assertEquals(flakiness_algorithm_results_dict['flaked_out'], True)
342 350
343 @mock.patch.object( 351 @mock.patch.object(
344 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) 352 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None)
345 def testNextBuildPipelineForNewRecursionLessThanLastBuildNumber( 353 @mock.patch.object(
346 self, _mocked_eta_func): 354 recursive_flake_pipeline, '_UpdateBugWithResult', return_value=None)
355 def testNextBuildPipelineForNewRecursionLessThanLastBuildNumber(self, *_):
347 master_name = 'm' 356 master_name = 'm'
348 builder_name = 'b' 357 builder_name = 'b'
349 master_build_number = 100 358 master_build_number = 100
350 build_number = 100 359 build_number = 100
351 step_name = 's' 360 step_name = 's'
352 test_name = 't' 361 test_name = 't'
353 test_result_future = 'trf' 362 test_result_future = 'trf'
354 flakiness_algorithm_results_dict = { 363 flakiness_algorithm_results_dict = {
355 'flakes_in_a_row': 0, 364 'flakes_in_a_row': 0,
356 'stable_in_a_row': 0, 365 'stable_in_a_row': 0,
(...skipping 29 matching lines...) Expand all
386 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run) 395 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run)
387 NextBuildNumberPipeline.run( 396 NextBuildNumberPipeline.run(
388 NextBuildNumberPipeline(), master_name, builder_name, 397 NextBuildNumberPipeline(), master_name, builder_name,
389 master_build_number, build_number, step_name, test_name, 398 master_build_number, build_number, step_name, test_name,
390 analysis.version_number, test_result_future, 399 analysis.version_number, test_result_future,
391 flakiness_algorithm_results_dict) 400 flakiness_algorithm_results_dict)
392 self.assertFalse(queue_name['x']) 401 self.assertFalse(queue_name['x'])
393 402
394 @mock.patch.object( 403 @mock.patch.object(
395 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) 404 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None)
396 def testNextBuildPipelineForFailedSwarmingTask(self, _mocked_eta_func): 405 @mock.patch.object(
406 recursive_flake_pipeline, '_UpdateBugWithResult', return_value=None)
407 def testNextBuildPipelineForFailedSwarmingTask(self, *_):
397 master_name = 'm' 408 master_name = 'm'
398 builder_name = 'b' 409 builder_name = 'b'
399 master_build_number = 100 410 master_build_number = 100
400 build_number = 100 411 build_number = 100
401 step_name = 's' 412 step_name = 's'
402 test_name = 't' 413 test_name = 't'
403 test_result_future = 'trf' 414 test_result_future = 'trf'
404 flakiness_algorithm_results_dict = { 415 flakiness_algorithm_results_dict = {
405 'flakes_in_a_row': 0, 416 'flakes_in_a_row': 0,
406 'stable_in_a_row': 0, 417 'stable_in_a_row': 0,
(...skipping 29 matching lines...) Expand all
436 self.mock( 447 self.mock(
437 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run) 448 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run)
438 NextBuildNumberPipeline.run( 449 NextBuildNumberPipeline.run(
439 NextBuildNumberPipeline(), master_name, builder_name, 450 NextBuildNumberPipeline(), master_name, builder_name,
440 master_build_number, build_number, step_name, test_name, 1, 451 master_build_number, build_number, step_name, test_name, 1,
441 test_result_future, flakiness_algorithm_results_dict) 452 test_result_future, flakiness_algorithm_results_dict)
442 self.assertFalse(queue_name['x']) 453 self.assertFalse(queue_name['x'])
443 454
444 @mock.patch.object( 455 @mock.patch.object(
445 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) 456 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None)
446 def testNextBuildPipelineForNewRecursionStabledFlakedOut( 457 @mock.patch.object(
447 self, _mocked_eta_func): 458 recursive_flake_pipeline, '_UpdateBugWithResult', return_value=None)
459 def testNextBuildPipelineForNewRecursionStabledFlakedOut(self, *_):
448 master_name = 'm' 460 master_name = 'm'
449 builder_name = 'b' 461 builder_name = 'b'
450 master_build_number = 100 462 master_build_number = 100
451 build_number = 100 463 build_number = 100
452 step_name = 's' 464 step_name = 's'
453 test_name = 't' 465 test_name = 't'
454 test_result_future = 'trf' 466 test_result_future = 'trf'
455 queue_name = constants.DEFAULT_QUEUE 467 queue_name = constants.DEFAULT_QUEUE
456 flakiness_algorithm_results_dict = { 468 flakiness_algorithm_results_dict = {
457 'flakes_in_a_row': 4, 469 'flakes_in_a_row': 4,
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 'upper_boundary': 110, 702 'upper_boundary': 110,
691 'lower_boundary_result': 'STABLE', 703 'lower_boundary_result': 'STABLE',
692 'sequential_run_index': 1 704 'sequential_run_index': 1
693 } 705 }
694 next_run = sequential_next_run(analysis, flakiness_algorithm_results_dict) 706 next_run = sequential_next_run(analysis, flakiness_algorithm_results_dict)
695 self.assertEqual(next_run, 102) 707 self.assertEqual(next_run, 102)
696 self.assertEqual(analysis.suspected_flake_build_number, None) 708 self.assertEqual(analysis.suspected_flake_build_number, None)
697 709
698 @mock.patch.object( 710 @mock.patch.object(
699 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) 711 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None)
700 def testNextBuildPipelineStabledOutFlakedOutFirstTime(self, _mocked_eta_func): 712 @mock.patch.object(
713 recursive_flake_pipeline, '_UpdateBugWithResult', return_value=None)
714 def testNextBuildPipelineStabledOutFlakedOutFirstTime(self, *_):
701 master_name = 'm' 715 master_name = 'm'
702 builder_name = 'b' 716 builder_name = 'b'
703 master_build_number = 100 717 master_build_number = 100
704 build_number = 100 718 build_number = 100
705 step_name = 's' 719 step_name = 's'
706 test_name = 't' 720 test_name = 't'
707 test_result_future = 'trf' 721 test_result_future = 'trf'
708 flakiness_algorithm_results_dict = { 722 flakiness_algorithm_results_dict = {
709 'flakes_in_a_row': 0, 723 'flakes_in_a_row': 0,
710 'stable_in_a_row': 0, 724 'stable_in_a_row': 0,
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 pipeline = NextBuildNumberPipeline() 880 pipeline = NextBuildNumberPipeline()
867 pipeline.run( 881 pipeline.run(
868 master_name, builder_name, 882 master_name, builder_name,
869 master_build_number, build_number, step_name, test_name, 883 master_build_number, build_number, step_name, test_name,
870 analysis.version_number, test_result_future, 884 analysis.version_number, test_result_future,
871 flakiness_algorithm_results_dict) 885 flakiness_algorithm_results_dict)
872 886
873 analysis = MasterFlakeAnalysis.GetVersion( 887 analysis = MasterFlakeAnalysis.GetVersion(
874 master_name, builder_name, master_build_number, step_name, test_name) 888 master_name, builder_name, master_build_number, step_name, test_name)
875 self.assertEqual(analysis_status.COMPLETED, analysis.status) 889 self.assertEqual(analysis_status.COMPLETED, analysis.status)
890
891 @mock.patch(
892 'waterfall.flake.recursive_flake_pipeline.PostCommentToBugPipeline')
893 def testUpdateBugWithResultWithoutAttachedBug(self, _):
894 master_name = 'm'
895 builder_name = 'b'
896 master_build_number = 100
897 step_name = 's'
898 test_name = 't'
899 analysis = MasterFlakeAnalysis.Create(
900 master_name, builder_name, master_build_number, step_name, test_name)
901 self.assertFalse(
902 recursive_flake_pipeline._UpdateBugWithResult(analysis, None))
903
904 @mock.patch(
905 'waterfall.flake.recursive_flake_pipeline.PostCommentToBugPipeline')
906 def testUpdateBugWithResultWithAttachedBug(self, mocked_pipeline):
907 mocked_target = mock.Mock()
908 mocked_pipeline.attach_mock(mocked_target, 'target')
909 master_name = 'm'
910 builder_name = 'b'
911 master_build_number = 100
912 step_name = 's'
913 test_name = 't'
914 analysis = MasterFlakeAnalysis.Create(
915 master_name, builder_name, master_build_number, step_name, test_name)
916 analysis.bug_id = 123
917 analysis.original_master_name = 'om'
918 analysis.original_builder_name = 'ob'
919 analysis.original_step_name = 'os'
920 self.assertTrue(
921 recursive_flake_pipeline._UpdateBugWithResult(analysis, 'queue'))
922 calls = mocked_pipeline.mock_calls
923 self.assertEqual(2, len(calls))
924
925 _, args, __ = calls[0]
926 bug_id, comment, labels = args
927 self.assertEqual(123, bug_id)
928 self.assertEqual(['AnalyzedByFindit'], labels)
929 self.assertTrue('om / ob / os' in comment)
930
931 self.assertEqual(mock.call().start(queue_name='queue'), calls[1])
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698