Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 | 6 import mock |
| 7 import pytz | |
| 8 | 7 |
| 9 from common import constants | 8 from common import constants |
| 10 from common.pipeline_wrapper import pipeline_handlers | 9 from common.pipeline_wrapper import pipeline_handlers |
| 11 from model import analysis_status | 10 from model import analysis_status |
| 12 from model.flake.flake_swarming_task import FlakeSwarmingTask | 11 from model.flake.flake_swarming_task import FlakeSwarmingTask |
| 13 from model.flake.master_flake_analysis import DataPoint | 12 from model.flake.master_flake_analysis import DataPoint |
| 14 from model.flake.master_flake_analysis import MasterFlakeAnalysis | 13 from model.flake.master_flake_analysis import MasterFlakeAnalysis |
| 15 from waterfall.flake import recursive_flake_pipeline | 14 from waterfall.flake import recursive_flake_pipeline |
| 16 from waterfall.flake.recursive_flake_pipeline import get_next_run | 15 from waterfall.flake.recursive_flake_pipeline import get_next_run |
| 17 from waterfall.flake.recursive_flake_pipeline import NextBuildNumberPipeline | 16 from waterfall.flake.recursive_flake_pipeline import NextBuildNumberPipeline |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 48 data_points.append(data_point) | 47 data_points.append(data_point) |
| 49 return data_points | 48 return data_points |
| 50 | 49 |
| 51 def testGetETAToStartAnalysisWhenManuallyTriggered(self): | 50 def testGetETAToStartAnalysisWhenManuallyTriggered(self): |
| 52 mocked_utcnow = datetime.utcnow() | 51 mocked_utcnow = datetime.utcnow() |
| 53 self.MockUTCNow(mocked_utcnow) | 52 self.MockUTCNow(mocked_utcnow) |
| 54 self.assertEqual(mocked_utcnow, | 53 self.assertEqual(mocked_utcnow, |
| 55 recursive_flake_pipeline._GetETAToStartAnalysis(True)) | 54 recursive_flake_pipeline._GetETAToStartAnalysis(True)) |
| 56 | 55 |
| 57 def testGetETAToStartAnalysisWhenTriggeredOnPSTWeekend(self): | 56 def testGetETAToStartAnalysisWhenTriggeredOnPSTWeekend(self): |
| 58 # Sunday 1pm in PST. | 57 # Sunday 1pm in PST, and Sunday 8pm in UTC. |
| 59 mocked_utcnow = datetime(2016, 9, 04, 20, 0, 0, 0, pytz.utc) | 58 mocked_pst_now = datetime(2016, 9, 04, 13, 0, 0, 0) |
| 60 self.MockUTCNow(mocked_utcnow) | 59 mocked_utc_now = datetime(2016, 9, 04, 20, 0, 0, 0) |
| 61 self.MockUTCNowWithTimezone(mocked_utcnow) | 60 self.MockUTCNow(mocked_utc_now) |
| 62 self.assertEqual(mocked_utcnow, | 61 self.MockUTCNowWithTimezone(mocked_utc_now) |
| 63 recursive_flake_pipeline._GetETAToStartAnalysis(False)) | 62 with mock.patch('common.time_util.GetDatetimeInTimezone') as timezone_func: |
| 63 timezone_func.side_effect = [mocked_pst_now, None] | |
| 64 self.assertEqual(mocked_utc_now, | |
| 65 recursive_flake_pipeline._GetETAToStartAnalysis(False)) | |
| 64 | 66 |
| 65 def testGetETAToStartAnalysisWhenTriggeredOffPeakHoursOnPSTWeekday(self): | 67 def testGetETAToStartAnalysisWhenTriggeredOffPeakHoursOnPSTWeekday(self): |
| 66 # Tuesday 1am in PST. | 68 # Tuesday 1am in PST, and Tuesday 8am in UTC. |
| 67 mocked_utcnow = datetime(2016, 9, 20, 8, 0, 0, 0, pytz.utc) | 69 mocked_pst_now = datetime(2016, 9, 20, 1, 0, 0, 0) |
| 68 self.MockUTCNow(mocked_utcnow) | 70 mocked_utc_now = datetime(2016, 9, 20, 8, 0, 0, 0) |
| 69 self.MockUTCNowWithTimezone(mocked_utcnow) | 71 self.MockUTCNow(mocked_utc_now) |
| 70 self.assertEqual(mocked_utcnow, | 72 self.MockUTCNowWithTimezone(mocked_utc_now) |
| 71 recursive_flake_pipeline._GetETAToStartAnalysis(False)) | 73 with mock.patch('common.time_util.GetDatetimeInTimezone') as timezone_func: |
| 74 timezone_func.side_effect = [mocked_pst_now, None] | |
| 75 self.assertEqual(mocked_utc_now, | |
| 76 recursive_flake_pipeline._GetETAToStartAnalysis(False)) | |
| 72 | 77 |
| 73 def testGetETAToStartAnalysisWhenTriggeredInPeakHoursOnPSTWeekday(self): | 78 def testGetETAToStartAnalysisWhenTriggeredInPeakHoursOnPSTWeekday(self): |
| 74 # Tuesday 1pm in PST. | 79 # Tuesday 1pm in PST, and Tuesday 8pm in UTC. |
| 75 mocked_utcnow = datetime(2016, 9, 20, 20, 0, 0, 0, pytz.utc) | 80 mocked_pst_now = datetime(2016, 9, 20, 13, 0, 0, 0) |
| 76 self.MockUTCNow(mocked_utcnow) | 81 mocked_utc_now = datetime(2016, 9, 20, 20, 0, 0, 0) |
| 77 self.MockUTCNowWithTimezone(mocked_utcnow) | 82 mocked_pst_eta = datetime(2016, 9, 20, 18, 0, 10, 0) # With random delay. |
|
lijeffrey
2016/10/04 18:17:49
nit: instead of saying "random" delay which makes
stgao
2016/10/04 18:27:28
Done.
| |
| 78 eta = recursive_flake_pipeline._GetETAToStartAnalysis(False) | 83 mocked_utc_eta = datetime(2016, 9, 21, 1, 0, 0, 0) # Without random delay. |
| 79 self.assertEqual(2016, eta.year) | 84 self.MockUTCNow(mocked_utc_now) |
| 80 self.assertEqual(9, eta.month) | 85 self.MockUTCNowWithTimezone(mocked_utc_now) |
| 81 self.assertEqual(21, eta.day) | 86 with mock.patch('common.time_util.GetDatetimeInTimezone') as ( |
| 82 self.assertEqual(1, eta.hour) | 87 timezone_func), mock.patch('random.randint') as random_func: |
| 83 seconds = eta.minute * 60 + eta.second | 88 timezone_func.side_effect = [mocked_pst_now, mocked_utc_eta] |
| 84 self.assertTrue(seconds >= 0 and seconds <= 30 * 60) | 89 random_func.side_effect = [10, None] |
|
lijeffrey
2016/10/04 18:17:49
nit: is this 10 the same "random" delay as in 82?
stgao
2016/10/04 18:27:28
Done.
| |
| 90 self.assertEqual(mocked_utc_eta, | |
| 91 recursive_flake_pipeline._GetETAToStartAnalysis(False)) | |
| 92 self.assertEqual(2, timezone_func.call_count) | |
| 93 self.assertEqual(mock.call('US/Pacific', mocked_utc_now), | |
| 94 timezone_func.call_args_list[0]) | |
| 95 self.assertEqual(mock.call('UTC', mocked_pst_eta), | |
| 96 timezone_func.call_args_list[1]) | |
| 85 | 97 |
| 86 def testRecursiveFlakePipeline(self): | 98 def testRecursiveFlakePipeline(self): |
| 87 master_name = 'm' | 99 master_name = 'm' |
| 88 builder_name = 'b' | 100 builder_name = 'b' |
| 89 master_build_number = 100 | 101 master_build_number = 100 |
| 90 build_number = 100 | 102 build_number = 100 |
| 91 run_build_number = 100 | 103 run_build_number = 100 |
| 92 step_name = 's' | 104 step_name = 's' |
| 93 test_name = 't' | 105 test_name = 't' |
| 94 test_result_future = 'test_result_future' | 106 test_result_future = 'test_result_future' |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 139 expected_kwargs={'manually_triggered': False}) | 151 expected_kwargs={'manually_triggered': False}) |
| 140 | 152 |
| 141 rfp = RecursiveFlakePipeline( | 153 rfp = RecursiveFlakePipeline( |
| 142 master_name, builder_name, build_number, step_name, test_name, | 154 master_name, builder_name, build_number, step_name, test_name, |
| 143 analysis.version_number, master_build_number, | 155 analysis.version_number, master_build_number, |
| 144 flakiness_algorithm_results_dict=flakiness_algorithm_results_dict) | 156 flakiness_algorithm_results_dict=flakiness_algorithm_results_dict) |
| 145 | 157 |
| 146 rfp.start(queue_name=queue_name) | 158 rfp.start(queue_name=queue_name) |
| 147 self.execute_queued_tasks() | 159 self.execute_queued_tasks() |
| 148 | 160 |
| 149 def testNextBuildPipelineForNewRecursionFirstFlake(self): | 161 @mock.patch.object( |
| 162 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) | |
| 163 def testNextBuildPipelineForNewRecursionFirstFlake(self, _mocked_eta_func): | |
| 150 master_name = 'm' | 164 master_name = 'm' |
| 151 builder_name = 'b' | 165 builder_name = 'b' |
| 152 master_build_number = 100 | 166 master_build_number = 100 |
| 153 build_number = 100 | 167 build_number = 100 |
| 154 step_name = 's' | 168 step_name = 's' |
| 155 test_name = 't' | 169 test_name = 't' |
| 156 test_result_future = 'trf' | 170 test_result_future = 'trf' |
| 157 flakiness_algorithm_results_dict = { | 171 flakiness_algorithm_results_dict = { |
| 158 'flakes_in_a_row': 0, | 172 'flakes_in_a_row': 0, |
| 159 'stable_in_a_row': 0, | 173 'stable_in_a_row': 0, |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 183 analysis.data_points.append(data_point) | 197 analysis.data_points.append(data_point) |
| 184 analysis.put() | 198 analysis.put() |
| 185 | 199 |
| 186 NextBuildNumberPipeline.run( | 200 NextBuildNumberPipeline.run( |
| 187 NextBuildNumberPipeline(), master_name, builder_name, | 201 NextBuildNumberPipeline(), master_name, builder_name, |
| 188 master_build_number, build_number, step_name, test_name, | 202 master_build_number, build_number, step_name, test_name, |
| 189 analysis.version_number, test_result_future, | 203 analysis.version_number, test_result_future, |
| 190 flakiness_algorithm_results_dict) | 204 flakiness_algorithm_results_dict) |
| 191 self.assertEquals(flakiness_algorithm_results_dict['flakes_in_a_row'], 1) | 205 self.assertEquals(flakiness_algorithm_results_dict['flakes_in_a_row'], 1) |
| 192 | 206 |
| 193 def testNextBuildPipelineForNewRecursionFirstStable(self): | 207 @mock.patch.object( |
| 208 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) | |
| 209 def testNextBuildPipelineForNewRecursionFirstStable(self, _mocked_eta_func): | |
| 194 master_name = 'm' | 210 master_name = 'm' |
| 195 builder_name = 'b' | 211 builder_name = 'b' |
| 196 master_build_number = 100 | 212 master_build_number = 100 |
| 197 build_number = 100 | 213 build_number = 100 |
| 198 step_name = 's' | 214 step_name = 's' |
| 199 test_name = 't' | 215 test_name = 't' |
| 200 test_result_future = 'trf' | 216 test_result_future = 'trf' |
| 201 flakiness_algorithm_results_dict = { | 217 flakiness_algorithm_results_dict = { |
| 202 'flakes_in_a_row': 0, | 218 'flakes_in_a_row': 0, |
| 203 'stable_in_a_row': 0, | 219 'stable_in_a_row': 0, |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 225 analysis.data_points.append(data_point) | 241 analysis.data_points.append(data_point) |
| 226 analysis.put() | 242 analysis.put() |
| 227 | 243 |
| 228 NextBuildNumberPipeline.run( | 244 NextBuildNumberPipeline.run( |
| 229 NextBuildNumberPipeline(), master_name, builder_name, | 245 NextBuildNumberPipeline(), master_name, builder_name, |
| 230 master_build_number, build_number, step_name, | 246 master_build_number, build_number, step_name, |
| 231 test_name, analysis.version_number, test_result_future, | 247 test_name, analysis.version_number, test_result_future, |
| 232 flakiness_algorithm_results_dict) | 248 flakiness_algorithm_results_dict) |
| 233 self.assertEquals(flakiness_algorithm_results_dict['stable_in_a_row'], 1) | 249 self.assertEquals(flakiness_algorithm_results_dict['stable_in_a_row'], 1) |
| 234 | 250 |
| 235 def testNextBuildPipelineForNewRecursionFlakeInARow(self): | 251 @mock.patch.object( |
| 252 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) | |
| 253 def testNextBuildPipelineForNewRecursionFlakeInARow(self, _mocked_eta_func): | |
| 236 master_name = 'm' | 254 master_name = 'm' |
| 237 builder_name = 'b' | 255 builder_name = 'b' |
| 238 master_build_number = 100 | 256 master_build_number = 100 |
| 239 build_number = 100 | 257 build_number = 100 |
| 240 step_name = 's' | 258 step_name = 's' |
| 241 test_name = 't' | 259 test_name = 't' |
| 242 test_result_future = 'trf' | 260 test_result_future = 'trf' |
| 243 flakiness_algorithm_results_dict = { | 261 flakiness_algorithm_results_dict = { |
| 244 'flakes_in_a_row': 0, | 262 'flakes_in_a_row': 0, |
| 245 'stable_in_a_row': 4, | 263 'stable_in_a_row': 4, |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 268 analysis.data_points.append(data_point) | 286 analysis.data_points.append(data_point) |
| 269 analysis.put() | 287 analysis.put() |
| 270 | 288 |
| 271 NextBuildNumberPipeline.run( | 289 NextBuildNumberPipeline.run( |
| 272 NextBuildNumberPipeline(), master_name, builder_name, | 290 NextBuildNumberPipeline(), master_name, builder_name, |
| 273 master_build_number, build_number, step_name, | 291 master_build_number, build_number, step_name, |
| 274 test_name, analysis.version_number, test_result_future, | 292 test_name, analysis.version_number, test_result_future, |
| 275 flakiness_algorithm_results_dict) | 293 flakiness_algorithm_results_dict) |
| 276 self.assertEquals(flakiness_algorithm_results_dict['stabled_out'], True) | 294 self.assertEquals(flakiness_algorithm_results_dict['stabled_out'], True) |
| 277 | 295 |
| 278 def testNextBuildPipelineForNewRecursionStableInARow(self): | 296 @mock.patch.object( |
| 297 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) | |
| 298 def testNextBuildPipelineForNewRecursionStableInARow(self, _mocked_eta_func): | |
| 279 master_name = 'm' | 299 master_name = 'm' |
| 280 builder_name = 'b' | 300 builder_name = 'b' |
| 281 master_build_number = 100 | 301 master_build_number = 100 |
| 282 build_number = 100 | 302 build_number = 100 |
| 283 step_name = 's' | 303 step_name = 's' |
| 284 test_name = 't' | 304 test_name = 't' |
| 285 test_result_future = 'trf' | 305 test_result_future = 'trf' |
| 286 flakiness_algorithm_results_dict = { | 306 flakiness_algorithm_results_dict = { |
| 287 'flakes_in_a_row': 4, | 307 'flakes_in_a_row': 4, |
| 288 'stable_in_a_row': 0, | 308 'stable_in_a_row': 0, |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 311 analysis.data_points.append(data_point) | 331 analysis.data_points.append(data_point) |
| 312 analysis.put() | 332 analysis.put() |
| 313 | 333 |
| 314 NextBuildNumberPipeline.run( | 334 NextBuildNumberPipeline.run( |
| 315 NextBuildNumberPipeline(), master_name, builder_name, | 335 NextBuildNumberPipeline(), master_name, builder_name, |
| 316 master_build_number, build_number, step_name, | 336 master_build_number, build_number, step_name, |
| 317 test_name, analysis.version_number, test_result_future, | 337 test_name, analysis.version_number, test_result_future, |
| 318 flakiness_algorithm_results_dict) | 338 flakiness_algorithm_results_dict) |
| 319 self.assertEquals(flakiness_algorithm_results_dict['flaked_out'], True) | 339 self.assertEquals(flakiness_algorithm_results_dict['flaked_out'], True) |
| 320 | 340 |
| 321 def testNextBuildPipelineForNewRecursionLessThanLastBuildNumber(self): | 341 @mock.patch.object( |
| 342 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) | |
| 343 def testNextBuildPipelineForNewRecursionLessThanLastBuildNumber( | |
| 344 self, _mocked_eta_func): | |
| 322 master_name = 'm' | 345 master_name = 'm' |
| 323 builder_name = 'b' | 346 builder_name = 'b' |
| 324 master_build_number = 100 | 347 master_build_number = 100 |
| 325 build_number = 100 | 348 build_number = 100 |
| 326 step_name = 's' | 349 step_name = 's' |
| 327 test_name = 't' | 350 test_name = 't' |
| 328 test_result_future = 'trf' | 351 test_result_future = 'trf' |
| 329 flakiness_algorithm_results_dict = { | 352 flakiness_algorithm_results_dict = { |
| 330 'flakes_in_a_row': 0, | 353 'flakes_in_a_row': 0, |
| 331 'stable_in_a_row': 0, | 354 'stable_in_a_row': 0, |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 359 | 382 |
| 360 self.mock( | 383 self.mock( |
| 361 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run) | 384 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run) |
| 362 NextBuildNumberPipeline.run( | 385 NextBuildNumberPipeline.run( |
| 363 NextBuildNumberPipeline(), master_name, builder_name, | 386 NextBuildNumberPipeline(), master_name, builder_name, |
| 364 master_build_number, build_number, step_name, test_name, | 387 master_build_number, build_number, step_name, test_name, |
| 365 analysis.version_number, test_result_future, | 388 analysis.version_number, test_result_future, |
| 366 flakiness_algorithm_results_dict) | 389 flakiness_algorithm_results_dict) |
| 367 self.assertFalse(queue_name['x']) | 390 self.assertFalse(queue_name['x']) |
| 368 | 391 |
| 369 def testNextBuildPipelineForFailedSwarmingTask(self): | 392 @mock.patch.object( |
| 393 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) | |
| 394 def testNextBuildPipelineForFailedSwarmingTask(self, _mocked_eta_func): | |
| 370 master_name = 'm' | 395 master_name = 'm' |
| 371 builder_name = 'b' | 396 builder_name = 'b' |
| 372 master_build_number = 100 | 397 master_build_number = 100 |
| 373 build_number = 100 | 398 build_number = 100 |
| 374 step_name = 's' | 399 step_name = 's' |
| 375 test_name = 't' | 400 test_name = 't' |
| 376 test_result_future = 'trf' | 401 test_result_future = 'trf' |
| 377 flakiness_algorithm_results_dict = { | 402 flakiness_algorithm_results_dict = { |
| 378 'flakes_in_a_row': 0, | 403 'flakes_in_a_row': 0, |
| 379 'stable_in_a_row': 0, | 404 'stable_in_a_row': 0, |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 407 queue_name['x'] = True # pragma: no cover | 432 queue_name['x'] = True # pragma: no cover |
| 408 | 433 |
| 409 self.mock( | 434 self.mock( |
| 410 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run) | 435 recursive_flake_pipeline.RecursiveFlakePipeline, 'start', my_mocked_run) |
| 411 NextBuildNumberPipeline.run( | 436 NextBuildNumberPipeline.run( |
| 412 NextBuildNumberPipeline(), master_name, builder_name, | 437 NextBuildNumberPipeline(), master_name, builder_name, |
| 413 master_build_number, build_number, step_name, test_name, 1, | 438 master_build_number, build_number, step_name, test_name, 1, |
| 414 test_result_future, flakiness_algorithm_results_dict) | 439 test_result_future, flakiness_algorithm_results_dict) |
| 415 self.assertFalse(queue_name['x']) | 440 self.assertFalse(queue_name['x']) |
| 416 | 441 |
| 417 def testNextBuildPipelineForNewRecursionStabledFlakedOut(self): | 442 @mock.patch.object( |
| 443 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) | |
| 444 def testNextBuildPipelineForNewRecursionStabledFlakedOut( | |
| 445 self, _mocked_eta_func): | |
| 418 master_name = 'm' | 446 master_name = 'm' |
| 419 builder_name = 'b' | 447 builder_name = 'b' |
| 420 master_build_number = 100 | 448 master_build_number = 100 |
| 421 build_number = 100 | 449 build_number = 100 |
| 422 step_name = 's' | 450 step_name = 's' |
| 423 test_name = 't' | 451 test_name = 't' |
| 424 test_result_future = 'trf' | 452 test_result_future = 'trf' |
| 425 queue_name = constants.DEFAULT_QUEUE | 453 queue_name = constants.DEFAULT_QUEUE |
| 426 flakiness_algorithm_results_dict = { | 454 flakiness_algorithm_results_dict = { |
| 427 'flakes_in_a_row': 4, | 455 'flakes_in_a_row': 4, |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 658 'last_build_number': 0, | 686 'last_build_number': 0, |
| 659 'lower_boundary': 100, | 687 'lower_boundary': 100, |
| 660 'upper_boundary': 110, | 688 'upper_boundary': 110, |
| 661 'lower_boundary_result': 'STABLE', | 689 'lower_boundary_result': 'STABLE', |
| 662 'sequential_run_index': 1 | 690 'sequential_run_index': 1 |
| 663 } | 691 } |
| 664 next_run = sequential_next_run(analysis, flakiness_algorithm_results_dict) | 692 next_run = sequential_next_run(analysis, flakiness_algorithm_results_dict) |
| 665 self.assertEqual(next_run, 102) | 693 self.assertEqual(next_run, 102) |
| 666 self.assertEqual(analysis.suspected_flake_build_number, None) | 694 self.assertEqual(analysis.suspected_flake_build_number, None) |
| 667 | 695 |
| 668 def testNextBuildPipelineStabledOutFlakedOutFirstTime(self): | 696 @mock.patch.object( |
| 697 recursive_flake_pipeline, '_GetETAToStartAnalysis', return_value=None) | |
| 698 def testNextBuildPipelineStabledOutFlakedOutFirstTime(self, _mocked_eta_func): | |
| 669 master_name = 'm' | 699 master_name = 'm' |
| 670 builder_name = 'b' | 700 builder_name = 'b' |
| 671 master_build_number = 100 | 701 master_build_number = 100 |
| 672 build_number = 100 | 702 build_number = 100 |
| 673 step_name = 's' | 703 step_name = 's' |
| 674 test_name = 't' | 704 test_name = 't' |
| 675 test_result_future = 'trf' | 705 test_result_future = 'trf' |
| 676 flakiness_algorithm_results_dict = { | 706 flakiness_algorithm_results_dict = { |
| 677 'flakes_in_a_row': 0, | 707 'flakes_in_a_row': 0, |
| 678 'stable_in_a_row': 0, | 708 'stable_in_a_row': 0, |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 834 pipeline = NextBuildNumberPipeline() | 864 pipeline = NextBuildNumberPipeline() |
| 835 pipeline.run( | 865 pipeline.run( |
| 836 master_name, builder_name, | 866 master_name, builder_name, |
| 837 master_build_number, build_number, step_name, test_name, | 867 master_build_number, build_number, step_name, test_name, |
| 838 analysis.version_number, test_result_future, | 868 analysis.version_number, test_result_future, |
| 839 flakiness_algorithm_results_dict) | 869 flakiness_algorithm_results_dict) |
| 840 | 870 |
| 841 analysis = MasterFlakeAnalysis.GetVersion( | 871 analysis = MasterFlakeAnalysis.GetVersion( |
| 842 master_name, builder_name, master_build_number, step_name, test_name) | 872 master_name, builder_name, master_build_number, step_name, test_name) |
| 843 self.assertEqual(analysis_status.COMPLETED, analysis.status) | 873 self.assertEqual(analysis_status.COMPLETED, analysis.status) |
| OLD | NEW |