| 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 import mock | 6 import mock |
| 7 import re | 7 import re |
| 8 | 8 |
| 9 import webapp2 | 9 import webapp2 |
| 10 import webtest | 10 import webtest |
| 11 | 11 |
| 12 from google.appengine.api import users | 12 from google.appengine.api import users |
| 13 | 13 |
| 14 from handlers.flake import check_flake | 14 from handlers.flake import check_flake |
| 15 from handlers.flake.check_flake import CheckFlake | 15 from handlers.flake.check_flake import CheckFlake |
| 16 from model import analysis_status | 16 from model import analysis_status |
| 17 from model.analysis_status import STATUS_TO_DESCRIPTION | 17 from model.analysis_status import STATUS_TO_DESCRIPTION |
| 18 from model.flake.flake_analysis_request import BuildStep |
| 18 from model.flake.flake_analysis_request import FlakeAnalysisRequest | 19 from model.flake.flake_analysis_request import FlakeAnalysisRequest |
| 19 from model.flake.master_flake_analysis import DataPoint | 20 from model.flake.master_flake_analysis import DataPoint |
| 20 from model.flake.master_flake_analysis import MasterFlakeAnalysis | 21 from model.flake.master_flake_analysis import MasterFlakeAnalysis |
| 21 from waterfall.flake import flake_analysis_service | 22 from waterfall.flake import flake_analysis_service |
| 22 from waterfall.test import wf_testcase | 23 from waterfall.test import wf_testcase |
| 23 | 24 |
| 24 | 25 |
| 25 class CheckFlakeTest(wf_testcase.WaterfallTestCase): | 26 class CheckFlakeTest(wf_testcase.WaterfallTestCase): |
| 26 app_module = webapp2.WSGIApplication([ | 27 app_module = webapp2.WSGIApplication([ |
| 27 ('/waterfall/check-flake', check_flake.CheckFlake), | 28 ('/waterfall/check-flake', check_flake.CheckFlake), |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 previous_analysis.data_points.append(data_point) | 160 previous_analysis.data_points.append(data_point) |
| 160 previous_analysis.status = analysis_status.COMPLETED | 161 previous_analysis.status = analysis_status.COMPLETED |
| 161 previous_analysis.suspected_flake_build_number = 100 | 162 previous_analysis.suspected_flake_build_number = 100 |
| 162 previous_analysis.request_time = datetime.datetime(2016, 10, 01, 12, 10, 00) | 163 previous_analysis.request_time = datetime.datetime(2016, 10, 01, 12, 10, 00) |
| 163 previous_analysis.start_time = datetime.datetime(2016, 10, 01, 12, 10, 05) | 164 previous_analysis.start_time = datetime.datetime(2016, 10, 01, 12, 10, 05) |
| 164 previous_analysis.end_time = datetime.datetime(2016, 10, 01, 13, 10, 00) | 165 previous_analysis.end_time = datetime.datetime(2016, 10, 01, 13, 10, 00) |
| 165 previous_analysis.algorithm_parameters = {'iterations_to_rerun': 100} | 166 previous_analysis.algorithm_parameters = {'iterations_to_rerun': 100} |
| 166 previous_analysis.Save() | 167 previous_analysis.Save() |
| 167 | 168 |
| 168 previous_request = FlakeAnalysisRequest.Create(test_name, False, None) | 169 previous_request = FlakeAnalysisRequest.Create(test_name, False, None) |
| 169 previous_request.AddBuildStep( | 170 build_step = BuildStep.Create( |
| 170 master_name, builder_name, build_number, step_name, None) | 171 master_name, builder_name, build_number, step_name, None) |
| 172 build_step.wf_master_name = build_step.master_name |
| 173 build_step.wf_builder_name = build_step.builder_name |
| 174 build_step.wf_build_number = build_step.build_number |
| 175 build_step.wf_step_name = build_step.step_name |
| 176 previous_request.build_steps.append(build_step) |
| 171 previous_request.analyses.append(previous_analysis.key) | 177 previous_request.analyses.append(previous_analysis.key) |
| 172 previous_request.Save() | 178 previous_request.Save() |
| 173 | 179 |
| 174 response = self.test_app.get('/waterfall/check-flake', params={ | 180 response = self.test_app.get('/waterfall/check-flake', params={ |
| 175 'master_name': master_name, | 181 'master_name': master_name, |
| 176 'builder_name': builder_name, | 182 'builder_name': builder_name, |
| 177 'build_number': build_number, | 183 'build_number': build_number, |
| 178 'step_name': step_name, | 184 'step_name': step_name, |
| 179 'test_name': test_name, | 185 'test_name': test_name, |
| 180 'format': 'json'}) | 186 'format': 'json'}) |
| (...skipping 30 matching lines...) Expand all Loading... |
| 211 builder_name = 'b' | 217 builder_name = 'b' |
| 212 build_number = 123 | 218 build_number = 123 |
| 213 step_name = 's' | 219 step_name = 's' |
| 214 test_name = 't' | 220 test_name = 't' |
| 215 | 221 |
| 216 previous_request = FlakeAnalysisRequest.Create(test_name, False, None) | 222 previous_request = FlakeAnalysisRequest.Create(test_name, False, None) |
| 217 previous_request.AddBuildStep( | 223 previous_request.AddBuildStep( |
| 218 master_name, builder_name, build_number, step_name, None) | 224 master_name, builder_name, build_number, step_name, None) |
| 219 previous_request.swarmed = False | 225 previous_request.swarmed = False |
| 220 previous_request.supported = False | 226 previous_request.supported = False |
| 221 previous_request.Save() | |
| 222 | 227 |
| 223 self.assertRaisesRegexp( | 228 self.assertRaisesRegexp( |
| 224 webtest.app.AppError, | 229 webtest.app.AppError, |
| 225 re.compile('.*not supported.*', re.MULTILINE | re.DOTALL), | 230 re.compile('.*not supported.*', re.MULTILINE | re.DOTALL), |
| 226 self.test_app.get, | 231 self.test_app.get, |
| 227 '/waterfall/check-flake', | 232 '/waterfall/check-flake', |
| 228 params={ | 233 params={ |
| 229 'master_name': master_name, | 234 'master_name': master_name, |
| 230 'builder_name': builder_name, | 235 'builder_name': builder_name, |
| 231 'build_number': build_number, | 236 'build_number': build_number, |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 'm', 'b', '1', None, 't', '').get('data', {}).get('error_message'), | 301 'm', 'b', '1', None, 't', '').get('data', {}).get('error_message'), |
| 297 'Step name must be specified') | 302 'Step name must be specified') |
| 298 self.assertEqual( | 303 self.assertEqual( |
| 299 CheckFlake()._ValidateInput( | 304 CheckFlake()._ValidateInput( |
| 300 'm', 'b', '1', 's', None, '').get('data', {}).get('error_message'), | 305 'm', 'b', '1', 's', None, '').get('data', {}).get('error_message'), |
| 301 'Test name must be specified') | 306 'Test name must be specified') |
| 302 self.assertEqual( | 307 self.assertEqual( |
| 303 CheckFlake()._ValidateInput( | 308 CheckFlake()._ValidateInput( |
| 304 'm', 'b', '1', 's', 't', 'a').get('data', {}).get('error_message'), | 309 'm', 'b', '1', 's', 't', 'a').get('data', {}).get('error_message'), |
| 305 'Bug id (optional) must be an int') | 310 'Bug id (optional) must be an int') |
| OLD | NEW |