| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 json | 5 import json |
| 6 | 6 |
| 7 import endpoints | 7 import endpoints |
| 8 from google.appengine.api import taskqueue | 8 from google.appengine.api import taskqueue |
| 9 | 9 |
| 10 from testing_utils import testing | 10 from testing_utils import testing |
| 11 | 11 |
| 12 import findit_api | 12 import findit_api |
| 13 from findit_api import FindItApi | 13 from findit_api import FindItApi |
| 14 from model.wf_analysis import WfAnalysis | 14 from model.wf_analysis import WfAnalysis |
| 15 from model import wf_analysis_status | 15 from model import analysis_status |
| 16 from waterfall import waterfall_config | 16 from waterfall import waterfall_config |
| 17 | 17 |
| 18 | 18 |
| 19 class FinditApiTest(testing.EndpointsTestCase): | 19 class FinditApiTest(testing.EndpointsTestCase): |
| 20 api_service_cls = FindItApi | 20 api_service_cls = FindItApi |
| 21 | 21 |
| 22 def setUp(self): | 22 def setUp(self): |
| 23 super(FinditApiTest, self).setUp() | 23 super(FinditApiTest, self).setUp() |
| 24 self.taskqueue_requests = [] | 24 self.taskqueue_requests = [] |
| 25 def Mocked_taskqueue_add(**kwargs): | 25 def Mocked_taskqueue_add(**kwargs): |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 'builds': [ | 102 'builds': [ |
| 103 { | 103 { |
| 104 'master_url': master_url, | 104 'master_url': master_url, |
| 105 'builder_name': builder_name, | 105 'builder_name': builder_name, |
| 106 'build_number': build_number | 106 'build_number': build_number |
| 107 } | 107 } |
| 108 ] | 108 ] |
| 109 } | 109 } |
| 110 | 110 |
| 111 analysis = WfAnalysis.Create(master_name, builder_name, build_number) | 111 analysis = WfAnalysis.Create(master_name, builder_name, build_number) |
| 112 analysis.status = wf_analysis_status.ERROR | 112 analysis.status = analysis_status.ERROR |
| 113 analysis.result = { | 113 analysis.result = { |
| 114 'failures': [ | 114 'failures': [ |
| 115 { | 115 { |
| 116 'step_name': 'test', | 116 'step_name': 'test', |
| 117 'first_failure': 3, | 117 'first_failure': 3, |
| 118 'last_pass': 1, | 118 'last_pass': 1, |
| 119 'suspected_cls': [ | 119 'suspected_cls': [ |
| 120 { | 120 { |
| 121 'repo_name': 'chromium', | 121 'repo_name': 'chromium', |
| 122 'revision': 'git_hash', | 122 'revision': 'git_hash', |
| (...skipping 23 matching lines...) Expand all Loading... |
| 146 'builds': [ | 146 'builds': [ |
| 147 { | 147 { |
| 148 'master_url': master_url, | 148 'master_url': master_url, |
| 149 'builder_name': builder_name, | 149 'builder_name': builder_name, |
| 150 'build_number': build_number | 150 'build_number': build_number |
| 151 } | 151 } |
| 152 ] | 152 ] |
| 153 } | 153 } |
| 154 | 154 |
| 155 analysis = WfAnalysis.Create(master_name, builder_name, build_number) | 155 analysis = WfAnalysis.Create(master_name, builder_name, build_number) |
| 156 analysis.status = wf_analysis_status.ANALYZING | 156 analysis.status = analysis_status.RUNNING |
| 157 analysis.result = None | 157 analysis.result = None |
| 158 analysis.put() | 158 analysis.put() |
| 159 | 159 |
| 160 expected_result = [] | 160 expected_result = [] |
| 161 | 161 |
| 162 self._MockMasterIsSupported(supported=True) | 162 self._MockMasterIsSupported(supported=True) |
| 163 | 163 |
| 164 response = self.call_api('AnalyzeBuildFailures', body=builds) | 164 response = self.call_api('AnalyzeBuildFailures', body=builds) |
| 165 self.assertEqual(200, response.status_int) | 165 self.assertEqual(200, response.status_int) |
| 166 self.assertEqual(expected_result, response.json_body.get('results', [])) | 166 self.assertEqual(expected_result, response.json_body.get('results', [])) |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 { | 212 { |
| 213 'repo_name': 'chromium', | 213 'repo_name': 'chromium', |
| 214 'revision': 'git_hash', | 214 'revision': 'git_hash', |
| 215 'commit_position': 123, | 215 'commit_position': 123, |
| 216 } | 216 } |
| 217 ] | 217 ] |
| 218 }, | 218 }, |
| 219 ] | 219 ] |
| 220 | 220 |
| 221 analysis = WfAnalysis.Create(master_name, builder_name, build_number) | 221 analysis = WfAnalysis.Create(master_name, builder_name, build_number) |
| 222 analysis.status = wf_analysis_status.ANALYZING | 222 analysis.status = analysis_status.RUNNING |
| 223 analysis.result = analysis_result | 223 analysis.result = analysis_result |
| 224 analysis.put() | 224 analysis.put() |
| 225 | 225 |
| 226 response = self.call_api('AnalyzeBuildFailures', body=builds) | 226 response = self.call_api('AnalyzeBuildFailures', body=builds) |
| 227 self.assertEqual(200, response.status_int) | 227 self.assertEqual(200, response.status_int) |
| 228 self.assertEqual(expected_results, response.json_body['results']) | 228 self.assertEqual(expected_results, response.json_body['results']) |
| 229 | 229 |
| 230 def testAnalysisFindingNoSuspectedCLsIsNotReturned(self): | 230 def testAnalysisFindingNoSuspectedCLsIsNotReturned(self): |
| 231 master_name = 'm' | 231 master_name = 'm' |
| 232 builder_name = 'b' | 232 builder_name = 'b' |
| 233 build_number = 5 | 233 build_number = 5 |
| 234 | 234 |
| 235 master_url = 'https://build.chromium.org/p/%s' % master_name | 235 master_url = 'https://build.chromium.org/p/%s' % master_name |
| 236 builds = { | 236 builds = { |
| 237 'builds': [ | 237 'builds': [ |
| 238 { | 238 { |
| 239 'master_url': master_url, | 239 'master_url': master_url, |
| 240 'builder_name': builder_name, | 240 'builder_name': builder_name, |
| 241 'build_number': build_number | 241 'build_number': build_number |
| 242 } | 242 } |
| 243 ] | 243 ] |
| 244 } | 244 } |
| 245 | 245 |
| 246 analysis = WfAnalysis.Create(master_name, builder_name, build_number) | 246 analysis = WfAnalysis.Create(master_name, builder_name, build_number) |
| 247 analysis.status = wf_analysis_status.ANALYZED | 247 analysis.status = analysis_status.COMPLETED |
| 248 analysis.result = { | 248 analysis.result = { |
| 249 'failures': [ | 249 'failures': [ |
| 250 { | 250 { |
| 251 'step_name': 'test', | 251 'step_name': 'test', |
| 252 'first_failure': 3, | 252 'first_failure': 3, |
| 253 'last_pass': 1, | 253 'last_pass': 1, |
| 254 'suspected_cls': [] | 254 'suspected_cls': [] |
| 255 } | 255 } |
| 256 ] | 256 ] |
| 257 } | 257 } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 275 'builds': [ | 275 'builds': [ |
| 276 { | 276 { |
| 277 'master_url': master_url, | 277 'master_url': master_url, |
| 278 'builder_name': builder_name, | 278 'builder_name': builder_name, |
| 279 'build_number': build_number | 279 'build_number': build_number |
| 280 } | 280 } |
| 281 ] | 281 ] |
| 282 } | 282 } |
| 283 | 283 |
| 284 analysis = WfAnalysis.Create(master_name, builder_name, build_number) | 284 analysis = WfAnalysis.Create(master_name, builder_name, build_number) |
| 285 analysis.status = wf_analysis_status.ANALYZED | 285 analysis.status = analysis_status.COMPLETED |
| 286 analysis.result = { | 286 analysis.result = { |
| 287 'failures': [ | 287 'failures': [ |
| 288 { | 288 { |
| 289 'step_name': 'test', | 289 'step_name': 'test', |
| 290 'first_failure': 3, | 290 'first_failure': 3, |
| 291 'last_pass': 1, | 291 'last_pass': 1, |
| 292 'suspected_cls': [ | 292 'suspected_cls': [ |
| 293 { | 293 { |
| 294 'build_number': 2, | 294 'build_number': 2, |
| 295 'repo_name': 'chromium', | 295 'repo_name': 'chromium', |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 'builds': [ | 357 'builds': [ |
| 358 { | 358 { |
| 359 'master_url': master_url, | 359 'master_url': master_url, |
| 360 'builder_name': builder_name, | 360 'builder_name': builder_name, |
| 361 'build_number': build_number | 361 'build_number': build_number |
| 362 } | 362 } |
| 363 ] | 363 ] |
| 364 } | 364 } |
| 365 | 365 |
| 366 analysis = WfAnalysis.Create(master_name, builder_name, build_number) | 366 analysis = WfAnalysis.Create(master_name, builder_name, build_number) |
| 367 analysis.status = wf_analysis_status.ANALYZED | 367 analysis.status = analysis_status.COMPLETED |
| 368 analysis.result = { | 368 analysis.result = { |
| 369 'failures': [ | 369 'failures': [ |
| 370 { | 370 { |
| 371 'step_name': 'a', | 371 'step_name': 'a', |
| 372 'first_failure': 4, | 372 'first_failure': 4, |
| 373 'last_pass': 3, | 373 'last_pass': 3, |
| 374 'suspected_cls': [ | 374 'suspected_cls': [ |
| 375 { | 375 { |
| 376 'build_number': 4, | 376 'build_number': 4, |
| 377 'repo_name': 'chromium', | 377 'repo_name': 'chromium', |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 546 'master_name': master_name, | 546 'master_name': master_name, |
| 547 'builder_name': builder_name, | 547 'builder_name': builder_name, |
| 548 'build_number': build_number, | 548 'build_number': build_number, |
| 549 'failed_steps': [], | 549 'failed_steps': [], |
| 550 }, | 550 }, |
| 551 ] | 551 ] |
| 552 } | 552 } |
| 553 self.assertEqual( | 553 self.assertEqual( |
| 554 expected_payload_json, | 554 expected_payload_json, |
| 555 json.loads(self.taskqueue_requests[0].get('payload'))) | 555 json.loads(self.taskqueue_requests[0].get('payload'))) |
| OLD | NEW |