| 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 testing_utils import testing | 7 from testing_utils import testing |
| 8 | 8 |
| 9 from model import wf_analysis_status | 9 from model import wf_analysis_status |
| 10 from model.wf_swarming_task import WfSwarmingTask | 10 from model.wf_swarming_task import WfSwarmingTask |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 } | 118 } |
| 119 | 119 |
| 120 | 120 |
| 121 class ProcessSwarmingTaskResultPipelineTest(testing.AppengineTestCase): | 121 class ProcessSwarmingTaskResultPipelineTest(testing.AppengineTestCase): |
| 122 | 122 |
| 123 def _MockedGetSwarmingTaskResultById(self, task_id, _): | 123 def _MockedGetSwarmingTaskResultById(self, task_id, _): |
| 124 swarming_task_results = { | 124 swarming_task_results = { |
| 125 'task_id1': { | 125 'task_id1': { |
| 126 'state': 'COMPLETED', | 126 'state': 'COMPLETED', |
| 127 'tags': [ | 127 'tags': [ |
| 128 'priority:25' | 128 'priority:25', |
| 129 'ref_name:abc_tests' |
| 129 ], | 130 ], |
| 130 'outputs_ref': { | 131 'outputs_ref': { |
| 131 'isolatedserver': _ISOLATED_SERVER, | 132 'isolatedserver': _ISOLATED_SERVER, |
| 132 'namespace': 'default-gzip', | 133 'namespace': 'default-gzip', |
| 133 'isolated': 'shard1_isolated' | 134 'isolated': 'shard1_isolated' |
| 134 }, | 135 }, |
| 135 'created_ts': '2016-02-10T18:32:06.538220', | 136 'created_ts': '2016-02-10T18:32:06.538220', |
| 136 'started_ts': '2016-02-10T18:32:09.090550', | 137 'started_ts': '2016-02-10T18:32:09.090550', |
| 137 'completed_ts': '2016-02-10T18:33:09' | 138 'completed_ts': '2016-02-10T18:33:09' |
| 138 }, | 139 }, |
| 139 'task_id2': { | 140 'task_id2': { |
| 140 'state': 'TIMED_OUT', | 141 'state': 'TIMED_OUT', |
| 141 'outputs_ref': None | 142 'outputs_ref': None |
| 142 } | 143 } |
| 143 } | 144 } |
| 144 | 145 |
| 145 mocked_result = swarming_task_results[task_id] | 146 mocked_result = swarming_task_results[task_id] |
| 146 return mocked_result | 147 return mocked_result |
| 147 | 148 |
| 148 def setUp(self): | 149 def setUp(self): |
| 149 super(ProcessSwarmingTaskResultPipelineTest, self).setUp() | 150 super(ProcessSwarmingTaskResultPipelineTest, self).setUp() |
| 150 self.master_name = 'm' | 151 self.master_name = 'm' |
| 151 self.builder_name = 'b' | 152 self.builder_name = 'b' |
| 152 self.build_number = 121 | 153 self.build_number = 121 |
| 153 self.step_name = 'abc_tests' | 154 self.step_name = 'abc_tests on platform' |
| 154 def _MockGetSwarmingSettings(): | 155 def _MockGetSwarmingSettings(): |
| 155 return _MOCK_SWARMING_SETTINGS | 156 return _MOCK_SWARMING_SETTINGS |
| 156 self.mock(waterfall_config, 'GetSwarmingSettings', _MockGetSwarmingSettings) | 157 self.mock(waterfall_config, 'GetSwarmingSettings', _MockGetSwarmingSettings) |
| 157 self.mock(swarming_util, 'GetSwarmingTaskResultById', | 158 self.mock(swarming_util, 'GetSwarmingTaskResultById', |
| 158 self._MockedGetSwarmingTaskResultById) | 159 self._MockedGetSwarmingTaskResultById) |
| 159 | 160 |
| 160 def testCheckTestsRunStatusesNoOutPutJson(self): | 161 def testCheckTestsRunStatusesNoOutPutJson(self): |
| 161 tests_statuses = ( | 162 tests_statuses = ( |
| 162 process_swarming_task_result_pipeline._CheckTestsRunStatuses(None)) | 163 process_swarming_task_result_pipeline._CheckTestsRunStatuses(None)) |
| 163 self.assertEqual({}, tests_statuses) | 164 self.assertEqual({}, tests_statuses) |
| (...skipping 11 matching lines...) Expand all Loading... |
| 175 task_id = 'task_id1' | 176 task_id = 'task_id1' |
| 176 | 177 |
| 177 self.mock(swarming_util, 'GetSwarmingTaskFailureLog', | 178 self.mock(swarming_util, 'GetSwarmingTaskFailureLog', |
| 178 self._MockedGetSwarmingTaskFailureLog) | 179 self._MockedGetSwarmingTaskFailureLog) |
| 179 | 180 |
| 180 WfSwarmingTask.Create( | 181 WfSwarmingTask.Create( |
| 181 self.master_name, self.builder_name, | 182 self.master_name, self.builder_name, |
| 182 self.build_number, self.step_name).put() | 183 self.build_number, self.step_name).put() |
| 183 | 184 |
| 184 pipeline = ProcessSwarmingTaskResultPipeline() | 185 pipeline = ProcessSwarmingTaskResultPipeline() |
| 185 step_name, classified_tests = pipeline.run( | 186 step_name, task_info = pipeline.run( |
| 186 self.master_name, self.builder_name, | 187 self.master_name, self.builder_name, |
| 187 self.build_number, self.step_name, task_id) | 188 self.build_number, self.step_name, task_id) |
| 188 | 189 |
| 189 self.assertEqual(_EXPECTED_CLASSIFIED_TESTS, classified_tests) | 190 self.assertEqual(self.step_name, step_name) |
| 191 self.assertEqual('abc_tests', task_info[0]) |
| 192 self.assertEqual(_EXPECTED_CLASSIFIED_TESTS, task_info[1]) |
| 190 | 193 |
| 191 task = WfSwarmingTask.Get( | 194 task = WfSwarmingTask.Get( |
| 192 self.master_name, self.builder_name, self.build_number, self.step_name) | 195 self.master_name, self.builder_name, self.build_number, self.step_name) |
| 193 | 196 |
| 194 self.assertEqual(self.step_name, step_name) | |
| 195 self.assertEqual(wf_analysis_status.ANALYZED, task.status) | 197 self.assertEqual(wf_analysis_status.ANALYZED, task.status) |
| 196 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses) | 198 self.assertEqual(_EXPECTED_TESTS_STATUESE, task.tests_statuses) |
| 197 self.assertEqual(_EXPECTED_CLASSIFIED_TESTS, task.classified_tests) | 199 self.assertEqual(_EXPECTED_CLASSIFIED_TESTS, task.classified_tests) |
| 198 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), | 200 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 6, 538220), |
| 199 task.created_time) | 201 task.created_time) |
| 200 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), | 202 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 32, 9, 90550), |
| 201 task.started_time) | 203 task.started_time) |
| 202 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), | 204 self.assertEqual(datetime.datetime(2016, 2, 10, 18, 33, 9), |
| 203 task.completed_time) | 205 task.completed_time) |
| 204 | 206 |
| 205 | 207 |
| 206 def testProcessSwarmingTaskResultPipelineTaskNotRunning(self): | 208 def testProcessSwarmingTaskResultPipelineTaskNotRunning(self): |
| 207 task_id = 'task_id2' | 209 task_id = 'task_id2' |
| 208 | 210 |
| 209 WfSwarmingTask.Create( | 211 WfSwarmingTask.Create( |
| 210 self.master_name, self.builder_name, | 212 self.master_name, self.builder_name, |
| 211 self.build_number, self.step_name).put() | 213 self.build_number, self.step_name).put() |
| 212 | 214 |
| 213 pipeline = ProcessSwarmingTaskResultPipeline() | 215 pipeline = ProcessSwarmingTaskResultPipeline() |
| 214 step_name, classified_tests = pipeline.run( | 216 step_name, task_info = pipeline.run( |
| 215 self.master_name, self.builder_name, | 217 self.master_name, self.builder_name, |
| 216 self.build_number, self.step_name, task_id) | 218 self.build_number, self.step_name, task_id) |
| 217 | 219 |
| 218 self.assertEqual({}, classified_tests) | 220 self.assertEqual(self.step_name, step_name) |
| 221 self.assertIsNone(task_info[0]) |
| 222 self.assertEqual({}, task_info[1]) |
| 219 | 223 |
| 220 task = WfSwarmingTask.Get( | 224 task = WfSwarmingTask.Get( |
| 221 self.master_name, self.builder_name, self.build_number, self.step_name) | 225 self.master_name, self.builder_name, self.build_number, self.step_name) |
| 222 | 226 |
| 223 self.assertEqual(wf_analysis_status.ERROR, task.status) | 227 self.assertEqual(wf_analysis_status.ERROR, task.status) |
| 224 self.assertEqual({}, task.tests_statuses) | 228 self.assertEqual({}, task.tests_statuses) |
| 225 self.assertEqual({}, task.classified_tests) | 229 self.assertEqual({}, task.classified_tests) |
| 226 self.assertEqual(self.step_name, step_name) | |
| 227 | 230 |
| 228 def testProcessSwarmingTaskResultPipelineTaskTimeOut(self): | 231 def testProcessSwarmingTaskResultPipelineTaskTimeOut(self): |
| 229 task_id = 'task_id2' | 232 task_id = 'task_id1' |
| 230 old_mock_timeout = _MOCK_SWARMING_SETTINGS['task_timeout_hours'] | 233 old_mock_timeout = _MOCK_SWARMING_SETTINGS['task_timeout_hours'] |
| 231 _MOCK_SWARMING_SETTINGS['task_timeout_hours'] = -1 | 234 _MOCK_SWARMING_SETTINGS['task_timeout_hours'] = -1 |
| 232 | 235 |
| 233 WfSwarmingTask.Create( | 236 WfSwarmingTask.Create( |
| 234 self.master_name, self.builder_name, | 237 self.master_name, self.builder_name, |
| 235 self.build_number, self.step_name).put() | 238 self.build_number, self.step_name).put() |
| 236 | 239 |
| 237 pipeline = ProcessSwarmingTaskResultPipeline() | 240 pipeline = ProcessSwarmingTaskResultPipeline() |
| 238 step_name, classified_tests = pipeline.run( | 241 step_name, task_info = pipeline.run( |
| 239 self.master_name, self.builder_name, | 242 self.master_name, self.builder_name, |
| 240 self.build_number, self.step_name, task_id) | 243 self.build_number, self.step_name, task_id) |
| 241 | 244 |
| 242 self.assertEqual({}, classified_tests) | 245 self.assertEqual(self.step_name, step_name) |
| 246 self.assertEqual('abc_tests', task_info[0]) |
| 247 self.assertEqual({}, task_info[1]) |
| 243 | 248 |
| 244 task = WfSwarmingTask.Get( | 249 task = WfSwarmingTask.Get( |
| 245 self.master_name, self.builder_name, self.build_number, self.step_name) | 250 self.master_name, self.builder_name, self.build_number, self.step_name) |
| 246 | 251 |
| 247 self.assertEqual(wf_analysis_status.ERROR, task.status) | 252 self.assertEqual(wf_analysis_status.ERROR, task.status) |
| 248 self.assertEqual({}, task.tests_statuses) | 253 self.assertEqual({}, task.tests_statuses) |
| 249 self.assertEqual({}, task.classified_tests) | 254 self.assertEqual({}, task.classified_tests) |
| 250 self.assertEqual(self.step_name, step_name) | |
| 251 | 255 |
| 252 _MOCK_SWARMING_SETTINGS['task_timeout_hours'] = old_mock_timeout | 256 _MOCK_SWARMING_SETTINGS['task_timeout_hours'] = old_mock_timeout |
| OLD | NEW |