Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1696)

Unified Diff: appengine/findit/handlers/flake/check_flake.py

Issue 2438673004: [Findit] Post analysis results of flakes to bug filed by chromium-try-flakes. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 4e23f629df1cf44f2b2424c4509dc87b33da8bcf..11e27fd66e9a1e3594d3cf35252ae7d0b29b2b85 100644
--- a/appengine/findit/handlers/flake/check_flake.py
+++ b/appengine/findit/handlers/flake/check_flake.py
@@ -3,6 +3,7 @@
# found in the LICENSE file.
from google.appengine.api import users
+from google.appengine.ext import ndb
from common import auth_util
from common import constants
@@ -11,54 +12,63 @@ from common.base_handler import BaseHandler
from common.base_handler import Permission
from model import analysis_status
from waterfall.flake import initialize_flake_pipeline
+from waterfall.test_info import TestInfo
class CheckFlake(BaseHandler):
PERMISSION_LEVEL = Permission.ANYONE
def HandleGet(self):
- master_name = self.request.get('master_name').strip()
- builder_name = self.request.get('builder_name').strip()
- build_number = int(self.request.get('build_number', '0').strip())
- step_name = self.request.get('step_name').strip()
- test_name = self.request.get('test_name').strip()
+ key = self.request.get('key')
+ if key:
+ analysis = ndb.Key(urlsafe=key).get()
+ if not analysis: # pragma: no cover
+ return self.CreateError('Analysis of flake is not found', 404)
+ else:
+ master_name = self.request.get('master_name').strip()
+ builder_name = self.request.get('builder_name').strip()
+ build_number = int(self.request.get('build_number', '0').strip())
+ step_name = self.request.get('step_name').strip()
+ test_name = self.request.get('test_name').strip()
- if not (master_name and builder_name and build_number and
- step_name and test_name): # pragma: no cover.
- return self.CreateError(
- 'Invalid value of master/builder/build_number/step/test', 400)
+ if not (master_name and builder_name and build_number and
+ step_name and test_name): # pragma: no cover.
+ return self.CreateError(
+ 'Invalid value of master/builder/build_number/step/test', 400)
- force = (auth_util.IsCurrentUserAdmin() and
- self.request.get('force') == '1')
- allow_new_analysis = self.IsCorpUserOrAdmin()
+ force = (auth_util.IsCurrentUserAdmin() and
+ self.request.get('force') == '1')
+ allow_new_analysis = self.IsCorpUserOrAdmin()
- analysis = initialize_flake_pipeline.ScheduleAnalysisIfNeeded(
- master_name, builder_name, build_number, step_name, test_name,
- allow_new_analysis, force=force, manually_triggered=True,
- queue_name=constants.WATERFALL_ANALYSIS_QUEUE)
+ test = TestInfo(
+ master_name, builder_name, build_number, step_name, test_name)
+ analysis = initialize_flake_pipeline.ScheduleAnalysisIfNeeded(
+ test, test, allow_new_analysis=allow_new_analysis, force=force,
lijeffrey 2016/10/21 17:10:27 nit: Just so this doesn't look like a typo (becaus
stgao 2016/10/21 22:42:33 Done.
chanli 2016/10/21 23:23:08 So when does the normalization happen? For example
stgao 2016/10/22 00:15:09 The "PRE_" is a TODO on your end; it's up to you w
+ manually_triggered=True,
+ queue_name=constants.WATERFALL_ANALYSIS_QUEUE)
- if not analysis: # pragma: no cover.
- return {
- 'template': 'error.html',
- 'data': {
- 'error_message':
- ('You could schedule an analysis for flaky test only after '
- 'you login with google.com account.'),
- 'login_url': self.GetLoginUrl(),
- },
- 'return_code': 401,
- }
+ if not analysis: # pragma: no cover.
+ return {
+ 'template': 'error.html',
+ 'data': {
+ 'error_message':
+ ('You could schedule an analysis for flaky test only after '
+ 'you login with google.com account.'),
+ 'login_url': self.GetLoginUrl(),
+ },
+ 'return_code': 401,
+ }
data = {
'pass_rates': [],
'analysis_status': analysis.status_description,
'suspected_flake_build_number': (
analysis.suspected_flake_build_number),
- 'master_name': master_name,
- 'builder_name': builder_name,
- 'build_number': build_number,
- 'step_name': step_name,
- 'test_name': test_name,
+ 'master_name': analysis.master_name,
+ 'builder_name': analysis.builder_name,
+ 'build_number': analysis.build_number,
+ 'step_name': analysis.step_name,
+ 'test_name': analysis.test_name,
'request_time': time_util.FormatDatetime(
analysis.request_time),
'task_number': len(analysis.data_points),

Powered by Google App Engine
This is Rietveld 408576698