| 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 import datetime | 5 import datetime |
| 6 | 6 |
| 7 from model import analysis_status | 7 from model import analysis_status |
| 8 from model.flake.flake_swarming_task import FlakeSwarmingTask | 8 from model.flake.flake_swarming_task import FlakeSwarmingTask |
| 9 from model.flake.master_flake_analysis import MasterFlakeAnalysis | 9 from model.flake.master_flake_analysis import MasterFlakeAnalysis |
| 10 from waterfall import swarming_util | 10 from waterfall import swarming_util |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 'other_info': 'N/A' | 76 'other_info': 'N/A' |
| 77 }, | 77 }, |
| 78 { | 78 { |
| 79 'status': 'FAILURE', | 79 'status': 'FAILURE', |
| 80 'other_info': 'N/A' | 80 'other_info': 'N/A' |
| 81 } | 81 } |
| 82 ] | 82 ] |
| 83 } | 83 } |
| 84 ] | 84 ] |
| 85 } | 85 } |
| 86 _EXPECTED_TESTS_STATUESE = { | 86 _EXPECTED_TEST_STATUS = { |
| 87 'TestSuite1.test1': { | 87 'TestSuite1.test1': { |
| 88 'total_run': 2, | 88 'total_run': 2, |
| 89 'SUCCESS': 2 | 89 'SUCCESS': 2 |
| 90 }, | 90 }, |
| 91 'TestSuite1.test2': { | 91 'TestSuite1.test2': { |
| 92 'total_run': 4, | 92 'total_run': 4, |
| 93 'SUCCESS': 2, | 93 'SUCCESS': 2, |
| 94 'FAILURE': 2 | 94 'FAILURE': 2 |
| 95 }, | 95 }, |
| 96 'TestSuite1.test3': { | 96 'TestSuite1.test3': { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 | 164 |
| 165 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs( | 165 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs( |
| 166 self.pipeline, self.master_name, self.builder_name, | 166 self.pipeline, self.master_name, self.builder_name, |
| 167 self.build_number, self.step_name, self.build_number, | 167 self.build_number, self.step_name, self.build_number, |
| 168 self.test_name) | 168 self.test_name) |
| 169 | 169 |
| 170 tests_statuses = ( | 170 tests_statuses = ( |
| 171 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses( | 171 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses( |
| 172 self.pipeline, | 172 self.pipeline, |
| 173 _SAMPLE_FAILURE_LOG, *call_params)) | 173 _SAMPLE_FAILURE_LOG, *call_params)) |
| 174 self.assertEqual(_EXPECTED_TESTS_STATUESE, tests_statuses) | 174 self.assertEqual(_EXPECTED_TEST_STATUS, tests_statuses) |
| 175 | 175 |
| 176 def testCheckTestsRunStatusesWhenTestNotExist(self): | 176 def testCheckTestsRunStatusesWhenTestDoesNotExist(self): |
| 177 test_name = 'TestSuite1.new_test' | 177 test_name = 'TestSuite1.new_test' |
| 178 analysis = MasterFlakeAnalysis.Create( | 178 analysis = MasterFlakeAnalysis.Create( |
| 179 self.master_name, self.builder_name, | 179 self.master_name, self.builder_name, |
| 180 self.build_number, self.step_name, test_name) | 180 self.build_number, self.step_name, test_name) |
| 181 analysis.put() | 181 analysis.put() |
| 182 | 182 |
| 183 task = FlakeSwarmingTask.Create( | 183 task = FlakeSwarmingTask.Create( |
| 184 self.master_name, self.builder_name, | 184 self.master_name, self.builder_name, |
| 185 self.build_number, self.step_name, test_name) | 185 self.build_number, self.step_name, test_name) |
| 186 task.put() | 186 task.put() |
| 187 | 187 |
| 188 pipeline = ProcessFlakeSwarmingTaskResultPipeline() | 188 pipeline = ProcessFlakeSwarmingTaskResultPipeline() |
| 189 tests_statuses = pipeline._CheckTestsRunStatuses( | 189 tests_statuses = pipeline._CheckTestsRunStatuses( |
| 190 _SAMPLE_FAILURE_LOG, self.master_name, self.builder_name, | 190 _SAMPLE_FAILURE_LOG, self.master_name, self.builder_name, |
| 191 self.build_number, self.step_name, self.build_number, test_name) | 191 self.build_number, self.step_name, self.build_number, test_name) |
| 192 | 192 |
| 193 self.assertEqual(_EXPECTED_TESTS_STATUESE, tests_statuses) | 193 self.assertEqual(_EXPECTED_TEST_STATUS, tests_statuses) |
| 194 | 194 |
| 195 task = FlakeSwarmingTask.Get( | 195 task = FlakeSwarmingTask.Get( |
| 196 self.master_name, self.builder_name, | 196 self.master_name, self.builder_name, |
| 197 self.build_number, self.step_name, test_name) | 197 self.build_number, self.step_name, test_name) |
| 198 self.assertEqual(0, task.tries) | 198 self.assertEqual(0, task.tries) |
| 199 self.assertEqual(0, task.successes) | 199 self.assertEqual(0, task.successes) |
| 200 | 200 |
| 201 analysis = MasterFlakeAnalysis.Get( | 201 analysis = MasterFlakeAnalysis.Get( |
| 202 self.master_name, self.builder_name, | 202 self.master_name, self.builder_name, |
| 203 self.build_number, self.step_name, test_name) | 203 self.build_number, self.step_name, test_name) |
| 204 self.assertTrue(analysis.success_rates[-1] < 0) | 204 self.assertTrue(analysis.pass_rates[-1] < 0) |
| 205 | 205 |
| 206 def _MockedGetSwarmingTaskFailureLog(self, *_): | 206 def _MockedGetSwarmingTaskFailureLog(self, *_): |
| 207 return _SAMPLE_FAILURE_LOG | 207 return _SAMPLE_FAILURE_LOG |
| 208 | 208 |
| 209 def testProcessFlakeSwarmingTaskResultPipeline(self): | 209 def testProcessFlakeSwarmingTaskResultPipeline(self): |
| 210 | 210 |
| 211 self.mock(swarming_util, 'GetSwarmingTaskFailureLog', | 211 self.mock(swarming_util, 'GetSwarmingTaskFailureLog', |
| 212 self._MockedGetSwarmingTaskFailureLog) | 212 self._MockedGetSwarmingTaskFailureLog) |
| 213 | 213 |
| 214 task = FlakeSwarmingTask.Create( | 214 task = FlakeSwarmingTask.Create( |
| (...skipping 13 matching lines...) Expand all Loading... |
| 228 self.build_number, self.step_name, | 228 self.build_number, self.step_name, |
| 229 'task_id1', self.build_number, self.test_name) | 229 'task_id1', self.build_number, self.test_name) |
| 230 self.assertEqual('abc_tests', task_info) | 230 self.assertEqual('abc_tests', task_info) |
| 231 self.assertEqual(self.step_name, step_name) | 231 self.assertEqual(self.step_name, step_name) |
| 232 | 232 |
| 233 task = FlakeSwarmingTask.Get( | 233 task = FlakeSwarmingTask.Get( |
| 234 self.master_name, self.builder_name, self.build_number, | 234 self.master_name, self.builder_name, self.build_number, |
| 235 self.step_name, self.test_name) | 235 self.step_name, self.test_name) |
| 236 | 236 |
| 237 self.assertEqual(analysis_status.COMPLETED, task.status) | 237 self.assertEqual(analysis_status.COMPLETED, task.status) |
| 238 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses) | 238 self.assertEqual(_EXPECTED_TEST_STATUS, task.tests_statuses) |
| 239 | 239 |
| 240 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), | 240 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), |
| 241 task.created_time) | 241 task.created_time) |
| 242 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), | 242 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), |
| 243 task.started_time) | 243 task.started_time) |
| 244 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), | 244 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), |
| 245 task.completed_time) | 245 task.completed_time) |
| 246 | 246 |
| 247 def testProcessFlakeSwarmingTaskResultPipelineTaskNotRunning(self): | 247 def testProcessFlakeSwarmingTaskResultPipelineTaskNotRunning(self): |
| 248 task = FlakeSwarmingTask.Create( | 248 task = FlakeSwarmingTask.Create( |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 self.build_number, self.step_name, | 290 self.build_number, self.step_name, |
| 291 'task_id1', self.build_number, self.test_name) | 291 'task_id1', self.build_number, self.test_name) |
| 292 self.assertEqual('abc_tests', task_info) | 292 self.assertEqual('abc_tests', task_info) |
| 293 self.assertEqual(self.step_name, step_name) | 293 self.assertEqual(self.step_name, step_name) |
| 294 | 294 |
| 295 task = FlakeSwarmingTask.Get( | 295 task = FlakeSwarmingTask.Get( |
| 296 self.master_name, self.builder_name, self.build_number, | 296 self.master_name, self.builder_name, self.build_number, |
| 297 self.step_name, self.test_name) | 297 self.step_name, self.test_name) |
| 298 self.assertEqual(analysis_status.ERROR, task.status) | 298 self.assertEqual(analysis_status.ERROR, task.status) |
| 299 self.assertEqual({}, task.tests_statuses) | 299 self.assertEqual({}, task.tests_statuses) |
| OLD | NEW |