| Index: appengine/findit/handlers/flake/check_flake.py
|
| diff --git a/appengine/findit/handlers/flake/check_flake.py b/appengine/findit/handlers/flake/check_flake.py
|
| index 0390b09634037d338fe2fdf1f89838dd28fc4be3..e1d2135ef835f5d32f39a1a8a3cb8d15cf7f6942 100644
|
| --- a/appengine/findit/handlers/flake/check_flake.py
|
| +++ b/appengine/findit/handlers/flake/check_flake.py
|
| @@ -2,31 +2,73 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| -from google.appengine.api import users
|
| -
|
| -from common import constants
|
| -from common.base_handler import BaseHandler
|
| -from common.base_handler import Permission
|
| -from waterfall.flake.initialize_flake_pipeline import ScheduleAnalysisIfNeeded
|
| -
|
| -
|
| -class CheckFlake(BaseHandler):
|
| - PERMISSION_LEVEL = Permission.CORP_USER
|
| -
|
| - def HandleGet(self):
|
| - # Get input parameters.
|
| - # pylint: disable=W0612
|
| - master_name = self.request.get('master_name').strip()
|
| - builder_name = self.request.get('builder_name').strip()
|
| - build_number = int(self.request.get('build_number').strip())
|
| - step_name = self.request.get('test_target_name').strip()
|
| - test_name = self.request.get('test_name').strip()
|
| - force = (users.is_current_user_admin() and
|
| - self.request.get('force') == '1')
|
| -
|
| - ScheduleAnalysisIfNeeded(master_name, builder_name, build_number, step_name,
|
| - test_name, force=force,
|
| - queue_name=constants.WATERFALL_ANALYSIS_QUEUE)
|
| - return {
|
| - 'template': 'flake/result.html'
|
| - }
|
| +import webapp2
|
| +
|
| +from handlers.flake import check_flake
|
| +
|
| +from waterfall.test import wf_testcase
|
| +from model.flake.master_flake_analysis import MasterFlakeAnalysis
|
| +from model import analysis_status
|
| +
|
| +
|
| +class CheckFlakeTest(wf_testcase.WaterfallTestCase):
|
| + app_module = webapp2.WSGIApplication([
|
| + ('/waterfall/check-flake', check_flake.CheckFlake),
|
| + ], debug=True)
|
| +
|
| + def _CreateAndSaveMasterFlakeAnalysis(
|
| + self, master_name, builder_name, build_number,
|
| + step_name, test_name, status):
|
| + analysis = MasterFlakeAnalysis.Create(
|
| + master_name, builder_name, build_number, step_name, test_name)
|
| + analysis.status = status
|
| + analysis.put()
|
| + return analysis
|
| +
|
| + def setUp(self):
|
| + super(CheckFlakeTest, self).setUp()
|
| +
|
| + def testBasicFlowNoData(self):
|
| + master_name = 'm'
|
| + builder_name = 'b'
|
| + build_number = '123'
|
| + step_name = 's'
|
| + test_name = 't'
|
| +
|
| + self.mock_current_user(user_email='test@chromium.org', is_admin=True)
|
| +
|
| + response = self.test_app.get('/waterfall/check-flake', params={
|
| + 'master_name': master_name,
|
| + 'builder_name': builder_name,
|
| + 'build_number': build_number,
|
| + 'step_name': step_name,
|
| + 'test_name': test_name})
|
| +
|
| + self.assertEquals(200, response.status_int)
|
| +
|
| + def testBasicFlowWithData(self):
|
| + master_name = 'm'
|
| + builder_name = 'b'
|
| + build_number = '123'
|
| + step_name = 's'
|
| + test_name = 't'
|
| +
|
| + status = analysis_status.PENDING
|
| +
|
| + master_flake_analysis = self._CreateAndSaveMasterFlakeAnalysis(
|
| + master_name, builder_name, build_number, step_name,
|
| + test_name, status)
|
| + master_flake_analysis.build_numbers.append(123)
|
| + master_flake_analysis.success_rates.append(.9)
|
| + master_flake_analysis.put()
|
| +
|
| + self.mock_current_user(user_email='test@chromium.org', is_admin=True)
|
| +
|
| + response = self.test_app.get('/waterfall/check-flake', params={
|
| + 'master_name': master_name,
|
| + 'builder_name': builder_name,
|
| + 'build_number': build_number,
|
| + 'step_name': step_name,
|
| + 'test_name': test_name})
|
| +
|
| + self.assertEquals(200, response.status_int)
|
|
|