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

Side by Side Diff: appengine/findit/handlers/crash/test/fracas_result_feedback_test.py

Issue 2074273002: [Findit] Add feedback button for manual triage. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@show-result
Patch Set: Created 4 years, 5 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 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 import calendar
6 from datetime import datetime
7
5 from google.appengine.api import users 8 from google.appengine.api import users
6 import webapp2 9 import webapp2
7 10
8 from testing_utils import testing 11 from testing_utils import testing
9 12
10 from common import time_util 13 from common import time_util
11 from handlers.crash import fracas_result_feedback 14 from handlers.crash import fracas_result_feedback
12 from model import analysis_status 15 from model import analysis_status
16 from model import triage_status
13 from model.crash.fracas_crash_analysis import FracasCrashAnalysis 17 from model.crash.fracas_crash_analysis import FracasCrashAnalysis
14 18
15 19
16 class FracasResultFeedbackTest(testing.AppengineTestCase): 20 class FracasResultFeedbackTest(testing.AppengineTestCase):
17 app_module = webapp2.WSGIApplication( 21 app_module = webapp2.WSGIApplication(
18 [('/fracas-result-feedback', 22 [('/fracas-result-feedback',
19 fracas_result_feedback.FracasResultFeedback)], debug=True) 23 fracas_result_feedback.FracasResultFeedback)], debug=True)
20 24
21 def setUp(self): 25 def setUp(self):
22 super(FracasResultFeedbackTest, self).setUp() 26 super(FracasResultFeedbackTest, self).setUp()
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 self.assertEqual(200, response.status_int) 67 self.assertEqual(200, response.status_int)
64 68
65 def _GenerateDisplayData(self): 69 def _GenerateDisplayData(self):
66 analysis = self.analysis 70 analysis = self.analysis
67 return { 71 return {
68 'signature': analysis.signature, 72 'signature': analysis.signature,
69 'version': analysis.crashed_version, 73 'version': analysis.crashed_version,
70 'channel': analysis.channel, 74 'channel': analysis.channel,
71 'platform': analysis.platform, 75 'platform': analysis.platform,
72 'regression_range': analysis.result.get('regression_range'), 76 'regression_range': analysis.result.get('regression_range'),
77 'culprit_regression_range': analysis.culprit_regression_range,
73 'historical_metadata': analysis.historical_metadata, 78 'historical_metadata': analysis.historical_metadata,
74 'stack_trace': analysis.stack_trace, 79 'stack_trace': analysis.stack_trace,
75 'suspected_cls': analysis.result.get('suspected_cls'), 80 'suspected_cls': analysis.result.get('suspected_cls'),
81 'culprit_cls': analysis.culprit_cls,
76 'suspected_project': analysis.result.get('suspected_project'), 82 'suspected_project': analysis.result.get('suspected_project'),
83 'culprit_project': analysis.culprit_project,
77 'suspected_components': analysis.result.get('suspected_components'), 84 'suspected_components': analysis.result.get('suspected_components'),
85 'culprit_components': analysis.culprit_components,
78 'request_time': time_util.FormatDatetime(analysis.requested_time), 86 'request_time': time_util.FormatDatetime(analysis.requested_time),
79 'analysis_completed': analysis.completed, 87 'analysis_completed': analysis.completed,
80 'analysis_failed': analysis.failed, 88 'analysis_failed': analysis.failed,
89 'triage_history': fracas_result_feedback._GetTriageHistory(analysis),
90 'analysis_correct': {
91 'regression_range': analysis.regression_range_triage_status,
92 'suspected_cls': analysis.suspected_cls_triage_status,
93 'suspected_project': analysis.suspected_project_triage_status,
94 'suspected_components': analysis.suspected_components_triage_status,
95 },
96 'note': analysis.note,
97 'key': analysis.key.urlsafe(),
81 } 98 }
82 99
83 def testDisplayAnanlysisResult(self): 100 def testDisplayAnanlysisResult(self):
84 expected_result = self._GenerateDisplayData() 101 expected_result = self._GenerateDisplayData()
85 response_json = self.test_app.get('/fracas-result-feedback?format=json&' 102 response_json = self.test_app.get('/fracas-result-feedback?format=json&'
86 'key=%s' % self.analysis.key.urlsafe()) 103 'key=%s' % self.analysis.key.urlsafe())
87 self.assertEqual(200, response_json.status_int) 104 self.assertEqual(200, response_json.status_int)
88 self.assertEqual(expected_result, response_json.json_body) 105 self.assertEqual(expected_result, response_json.json_body)
106
107 def testDisplayTriageHistory(self):
108
109 def _MockIsCurrectUserAdmin(*_):
110 return True
111
112 self.mock(users, 'is_current_user_admin', _MockIsCurrectUserAdmin)
113
114 self.analysis.triage_history = [{
115 'triage_timestamp': calendar.timegm(datetime.utcnow().timetuple()),
116 'result_property': 'regression_range',
117 'user_name': 'test',
118 'triage_status': triage_status.TRIAGED_CORRECT
119 }]
120 self.analysis.put()
121 expected_result = self._GenerateDisplayData()
122 response_json = self.test_app.get('/fracas-result-feedback?format=json&'
123 'key=%s' % self.analysis.key.urlsafe())
124 self.assertEqual(200, response_json.status_int)
125 self.assertEqual(expected_result, response_json.json_body)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698