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

Side by Side Diff: appengine/findit/handlers/flake/triage_flake_analysis.py

Issue 2554143003: [Findit] Using master flake analysis key for updating triage results (Closed)
Patch Set: Addressing comments Created 4 years 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 unified diff | Download patch
OLDNEW
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 """This module is to handle manual triage of a suspected flake result. 5 """This module is to handle manual triage of a suspected flake result.
6 6
7 This handler will mark the suspected flake result as correct or incorrect. 7 This handler will mark the suspected flake result as correct or incorrect.
8 """ 8 """
9 9
10 from google.appengine.ext import ndb
10 from google.appengine.api import users 11 from google.appengine.api import users
11 12
12 from common.base_handler import BaseHandler 13 from common.base_handler import BaseHandler
13 from common.base_handler import Permission 14 from common.base_handler import Permission
14 from model.flake.master_flake_analysis import MasterFlakeAnalysis 15 from model.flake.master_flake_analysis import MasterFlakeAnalysis
15 16
16 17
17 def _UpdateSuspectedFlakeAnalysis( 18 def _UpdateSuspectedFlakeAnalysis(
18 master_name, builder_name, build_number, step_name, test_name, 19 key_urlsafe, suspected_build_number, triage_result, user_name):
19 version_number, suspected_build_number, triage_result, user_name): 20 master_flake_analysis = ndb.Key(urlsafe=key_urlsafe).get()
20 master_flake_analysis = MasterFlakeAnalysis.GetVersion(
21 master_name, builder_name, build_number, step_name, test_name,
22 version_number)
23 21
24 if not master_flake_analysis: # pragma: no cover 22 if not master_flake_analysis: # pragma: no cover
25 return False 23 return False
26 24
27 suspect_info = { 25 suspect_info = {
28 'build_number': suspected_build_number 26 'build_number': suspected_build_number
29 } 27 }
30 28
31 master_flake_analysis.UpdateTriageResult( 29 master_flake_analysis.UpdateTriageResult(
stgao 2016/12/08 00:14:12 Do we assert that the analysis is completed and ha
lijeffrey 2016/12/08 01:23:46 Added for robustness, but it shouldn't be necessar
32 triage_result, suspect_info, user_name, version_number) 30 triage_result, suspect_info, user_name,
31 master_flake_analysis.version_number)
33 master_flake_analysis.put() 32 master_flake_analysis.put()
34 return True 33 return True
35 34
36 35
37 class TriageFlakeAnalysis(BaseHandler): 36 class TriageFlakeAnalysis(BaseHandler):
38 PERMISSION_LEVEL = Permission.CORP_USER 37 PERMISSION_LEVEL = Permission.CORP_USER
39 LOGIN_REDIRECT_TO_DISTINATION_PAGE_FOR_GET = False 38 LOGIN_REDIRECT_TO_DISTINATION_PAGE_FOR_GET = False
40 39
41 def HandleGet(self): # pragma: no cover 40 def HandleGet(self): # pragma: no cover
42 """Sets the manual triage result for the suspected flake analysis.""" 41 """Sets the manual triage result for the suspected flake analysis."""
43 flake_info = self.request.get('flake_info') 42 key_urlsafe = self.request.get('key').strip()
44 (master_name, builder_name, build_number, step_name, test_name, 43 suspected_build_number = self.request.get('suspected_build_number').strip()
chanli 2016/12/07 22:22:52 I think suspected_build_number is actually master_
stgao 2016/12/08 00:14:12 +1
lijeffrey 2016/12/08 01:23:46 Done.
45 version_number, suspected_build_number) = flake_info.split('/')
46 triage_result = self.request.get('triage_result') 44 triage_result = self.request.get('triage_result')
47 45
48 if not (master_name and builder_name and build_number and step_name and 46 if not (key_urlsafe and suspected_build_number and str(triage_result)):
stgao 2016/12/08 00:14:12 Should we test "triage_result is not None" instead
lijeffrey 2016/12/08 01:23:46 Done.
49 test_name and version_number and suspected_build_number and
50 str(triage_result)):
51 # All fields needed for getting master_flake_analysis must be provided in 47 # All fields needed for getting master_flake_analysis must be provided in
52 # order to update triage results. 48 # order to update triage results.
53 return {'data': {'success': False}} 49 return {'data': {'success': False}}
54 50
55 # As the permission level is CORP_USER, we could assume the current user 51 # As the permission level is CORP_USER, we could assume the current user
56 # already logged in. 52 # already logged in.
57 user_name = users.get_current_user().email().split('@')[0] 53 user_name = users.get_current_user().email().split('@')[0]
58 54
59 success = _UpdateSuspectedFlakeAnalysis( 55 success = _UpdateSuspectedFlakeAnalysis(
60 master_name, builder_name, build_number, step_name, test_name, 56 key_urlsafe, suspected_build_number, int(triage_result), user_name)
61 int(version_number), suspected_build_number, int(triage_result),
62 user_name)
63 57
64 return {'data': {'success': success}} 58 return {'data': {'success': success}}
65 59
66 def HandlePost(self): # pragma: no cover 60 def HandlePost(self): # pragma: no cover
67 return self.HandleGet() 61 return self.HandleGet()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698