| 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 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 self.mock(swarming_util, 'GetSwarmingTaskResultById', | 140 self.mock(swarming_util, 'GetSwarmingTaskResultById', |
| 141 self._MockedGetSwarmingTaskResultById) | 141 self._MockedGetSwarmingTaskResultById) |
| 142 | 142 |
| 143 def testCheckTestsRunStatusesNoOutPutJson(self): | 143 def testCheckTestsRunStatusesNoOutPutJson(self): |
| 144 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs( | 144 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs( |
| 145 self.pipeline, self.master_name, self.builder_name, | 145 self.pipeline, self.master_name, self.builder_name, |
| 146 self.build_number, self.step_name, self.build_number, | 146 self.build_number, self.step_name, self.build_number, |
| 147 self.test_name) | 147 self.test_name) |
| 148 tests_statuses = ( | 148 tests_statuses = ( |
| 149 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses( | 149 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses( |
| 150 self.pipeline, None, *call_params | 150 self.pipeline, None, *call_params)) |
| 151 )) | |
| 152 self.assertEqual({}, tests_statuses) | 151 self.assertEqual({}, tests_statuses) |
| 153 | 152 |
| 154 def testCheckTestsRunStatuses(self): | 153 def testCheckTestsRunStatuses(self): |
| 155 analysis = MasterFlakeAnalysis.Create( | 154 analysis = MasterFlakeAnalysis.Create( |
| 156 self.master_name, self.builder_name, | 155 self.master_name, self.builder_name, |
| 157 self.build_number, self.step_name, self.test_name) | 156 self.build_number, self.step_name, self.test_name) |
| 158 analysis.put() | 157 analysis.Save() |
| 159 | 158 |
| 160 task = FlakeSwarmingTask.Create( | 159 task = FlakeSwarmingTask.Create( |
| 161 self.master_name, self.builder_name, | 160 self.master_name, self.builder_name, |
| 162 self.build_number, self.step_name, self.test_name) | 161 self.build_number, self.step_name, self.test_name) |
| 163 task.put() | 162 task.put() |
| 164 | 163 |
| 165 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs( | 164 call_params = ProcessFlakeSwarmingTaskResultPipeline._GetArgs( |
| 166 self.pipeline, self.master_name, self.builder_name, | 165 self.pipeline, self.master_name, self.builder_name, |
| 167 self.build_number, self.step_name, self.build_number, | 166 self.build_number, self.step_name, self.build_number, |
| 168 self.test_name) | 167 self.test_name) |
| 169 | 168 |
| 170 tests_statuses = ( | 169 tests_statuses = ( |
| 171 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses( | 170 ProcessFlakeSwarmingTaskResultPipeline._CheckTestsRunStatuses( |
| 172 self.pipeline, | 171 self.pipeline, |
| 173 _SAMPLE_FAILURE_LOG, *call_params)) | 172 _SAMPLE_FAILURE_LOG, *call_params)) |
| 174 self.assertEqual(_EXPECTED_TESTS_STATUESE, tests_statuses) | 173 self.assertEqual(_EXPECTED_TEST_STATUS, tests_statuses) |
| 175 | 174 |
| 176 def testCheckTestsRunStatusesWhenTestNotExist(self): | 175 def testCheckTestsRunStatusesWhenTestDoesNotExist(self): |
| 177 test_name = 'TestSuite1.new_test' | 176 test_name = 'TestSuite1.new_test' |
| 178 analysis = MasterFlakeAnalysis.Create( | 177 analysis = MasterFlakeAnalysis.Create( |
| 179 self.master_name, self.builder_name, | 178 self.master_name, self.builder_name, |
| 180 self.build_number, self.step_name, test_name) | 179 self.build_number, self.step_name, test_name) |
| 181 analysis.put() | 180 analysis.Save() |
| 182 | 181 |
| 183 task = FlakeSwarmingTask.Create( | 182 task = FlakeSwarmingTask.Create( |
| 184 self.master_name, self.builder_name, | 183 self.master_name, self.builder_name, |
| 185 self.build_number, self.step_name, test_name) | 184 self.build_number, self.step_name, test_name) |
| 186 task.put() | 185 task.put() |
| 187 | 186 |
| 188 pipeline = ProcessFlakeSwarmingTaskResultPipeline() | 187 pipeline = ProcessFlakeSwarmingTaskResultPipeline() |
| 189 tests_statuses = pipeline._CheckTestsRunStatuses( | 188 tests_statuses = pipeline._CheckTestsRunStatuses( |
| 190 _SAMPLE_FAILURE_LOG, self.master_name, self.builder_name, | 189 _SAMPLE_FAILURE_LOG, self.master_name, self.builder_name, |
| 191 self.build_number, self.step_name, self.build_number, test_name) | 190 self.build_number, self.step_name, self.build_number, test_name) |
| 192 | 191 |
| 193 self.assertEqual(_EXPECTED_TESTS_STATUESE, tests_statuses) | 192 self.assertEqual(_EXPECTED_TEST_STATUS, tests_statuses) |
| 194 | 193 |
| 195 task = FlakeSwarmingTask.Get( | 194 task = FlakeSwarmingTask.Get( |
| 196 self.master_name, self.builder_name, | 195 self.master_name, self.builder_name, |
| 197 self.build_number, self.step_name, test_name) | 196 self.build_number, self.step_name, test_name) |
| 198 self.assertEqual(0, task.tries) | 197 self.assertEqual(0, task.tries) |
| 199 self.assertEqual(0, task.successes) | 198 self.assertEqual(0, task.successes) |
| 200 | 199 |
| 201 analysis = MasterFlakeAnalysis.Get( | 200 analysis = MasterFlakeAnalysis.GetVersion( |
| 202 self.master_name, self.builder_name, | 201 self.master_name, self.builder_name, |
| 203 self.build_number, self.step_name, test_name) | 202 self.build_number, self.step_name, test_name) |
| 204 self.assertTrue(analysis.success_rates[-1] < 0) | 203 self.assertTrue(analysis.pass_rates[-1] < 0) |
| 205 | 204 |
| 206 def _MockedGetSwarmingTaskFailureLog(self, *_): | 205 def _MockedGetSwarmingTaskFailureLog(self, *_): |
| 207 return _SAMPLE_FAILURE_LOG | 206 return _SAMPLE_FAILURE_LOG |
| 208 | 207 |
| 209 def testProcessFlakeSwarmingTaskResultPipeline(self): | 208 def testProcessFlakeSwarmingTaskResultPipeline(self): |
| 210 | 209 |
| 211 self.mock(swarming_util, 'GetSwarmingTaskFailureLog', | 210 self.mock(swarming_util, 'GetSwarmingTaskFailureLog', |
| 212 self._MockedGetSwarmingTaskFailureLog) | 211 self._MockedGetSwarmingTaskFailureLog) |
| 213 | 212 |
| 214 task = FlakeSwarmingTask.Create( | 213 task = FlakeSwarmingTask.Create( |
| 215 self.master_name, self.builder_name, | 214 self.master_name, self.builder_name, |
| 216 self.build_number, self.step_name, self.test_name) | 215 self.build_number, self.step_name, self.test_name) |
| 217 task.task_id = 'task_id1' | 216 task.task_id = 'task_id1' |
| 218 task.put() | 217 task.put() |
| 219 | 218 |
| 220 analysis = MasterFlakeAnalysis.Create( | 219 analysis = MasterFlakeAnalysis.Create( |
| 221 self.master_name, self.builder_name, | 220 self.master_name, self.builder_name, |
| 222 self.build_number, self.step_name, self.test_name) | 221 self.build_number, self.step_name, self.test_name) |
| 223 analysis.put() | 222 analysis.Save() |
| 224 | 223 |
| 225 pipeline = ProcessFlakeSwarmingTaskResultPipeline() | 224 pipeline = ProcessFlakeSwarmingTaskResultPipeline() |
| 226 step_name, task_info = pipeline.run( | 225 step_name, task_info = pipeline.run( |
| 227 self.master_name, self.builder_name, | 226 self.master_name, self.builder_name, |
| 228 self.build_number, self.step_name, | 227 self.build_number, self.step_name, |
| 229 'task_id1', self.build_number, self.test_name) | 228 'task_id1', self.build_number, self.test_name) |
| 230 self.assertEqual('abc_tests', task_info) | 229 self.assertEqual('abc_tests', task_info) |
| 231 self.assertEqual(self.step_name, step_name) | 230 self.assertEqual(self.step_name, step_name) |
| 232 | 231 |
| 233 task = FlakeSwarmingTask.Get( | 232 task = FlakeSwarmingTask.Get( |
| 234 self.master_name, self.builder_name, self.build_number, | 233 self.master_name, self.builder_name, self.build_number, |
| 235 self.step_name, self.test_name) | 234 self.step_name, self.test_name) |
| 236 | 235 |
| 237 self.assertEqual(analysis_status.COMPLETED, task.status) | 236 self.assertEqual(analysis_status.COMPLETED, task.status) |
| 238 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses) | 237 self.assertEqual(_EXPECTED_TEST_STATUS, task.tests_statuses) |
| 239 | 238 |
| 240 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), | 239 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), |
| 241 task.created_time) | 240 task.created_time) |
| 242 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), | 241 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), |
| 243 task.started_time) | 242 task.started_time) |
| 244 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), | 243 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), |
| 245 task.completed_time) | 244 task.completed_time) |
| 246 | 245 |
| 247 def testProcessFlakeSwarmingTaskResultPipelineTaskNotRunning(self): | 246 def testProcessFlakeSwarmingTaskResultPipelineTaskNotRunning(self): |
| 248 task = FlakeSwarmingTask.Create( | 247 task = FlakeSwarmingTask.Create( |
| 249 self.master_name, self.builder_name, | 248 self.master_name, self.builder_name, |
| 250 self.build_number, self.step_name, self.test_name) | 249 self.build_number, self.step_name, self.test_name) |
| 251 task.task_id = 'task_id2' | 250 task.task_id = 'task_id2' |
| 252 task.put() | 251 task.put() |
| 253 | 252 |
| 254 analysis = MasterFlakeAnalysis.Create( | 253 analysis = MasterFlakeAnalysis.Create( |
| 255 self.master_name, self.builder_name, | 254 self.master_name, self.builder_name, |
| 256 self.build_number, self.step_name, self.test_name) | 255 self.build_number, self.step_name, self.test_name) |
| 257 analysis.put() | 256 analysis.Save() |
| 258 | 257 |
| 259 pipeline = ProcessFlakeSwarmingTaskResultPipeline() | 258 pipeline = ProcessFlakeSwarmingTaskResultPipeline() |
| 260 step_name, task_info = pipeline.run( | 259 step_name, task_info = pipeline.run( |
| 261 self.master_name, self.builder_name, | 260 self.master_name, self.builder_name, |
| 262 self.build_number, self.step_name, | 261 self.build_number, self.step_name, |
| 263 'task_id2', self.build_number, self.test_name) | 262 'task_id2', self.build_number, self.test_name) |
| 264 self.assertEqual(None, task_info) | 263 self.assertEqual(None, task_info) |
| 265 self.assertEqual(self.step_name, step_name) | 264 self.assertEqual(self.step_name, step_name) |
| 266 | 265 |
| 267 task = FlakeSwarmingTask.Get( | 266 task = FlakeSwarmingTask.Get( |
| (...skipping 22 matching lines...) Expand all Loading... |
| 290 self.build_number, self.step_name, | 289 self.build_number, self.step_name, |
| 291 'task_id1', self.build_number, self.test_name) | 290 'task_id1', self.build_number, self.test_name) |
| 292 self.assertEqual('abc_tests', task_info) | 291 self.assertEqual('abc_tests', task_info) |
| 293 self.assertEqual(self.step_name, step_name) | 292 self.assertEqual(self.step_name, step_name) |
| 294 | 293 |
| 295 task = FlakeSwarmingTask.Get( | 294 task = FlakeSwarmingTask.Get( |
| 296 self.master_name, self.builder_name, self.build_number, | 295 self.master_name, self.builder_name, self.build_number, |
| 297 self.step_name, self.test_name) | 296 self.step_name, self.test_name) |
| 298 self.assertEqual(analysis_status.ERROR, task.status) | 297 self.assertEqual(analysis_status.ERROR, task.status) |
| 299 self.assertEqual({}, task.tests_statuses) | 298 self.assertEqual({}, task.tests_statuses) |
| OLD | NEW |