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

Unified Diff: appengine/findit/handlers/crash/test/triage_fracas_analysis_test.py

Issue 2067373002: [Findit] Add fracas analysis result feedback page for manual triage. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@only-dashboard
Patch Set: Merge branch 'only-dashboard' into dashboard Created 4 years, 6 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/crash/test/triage_fracas_analysis_test.py
diff --git a/appengine/findit/handlers/crash/test/triage_fracas_analysis_test.py b/appengine/findit/handlers/crash/test/triage_fracas_analysis_test.py
new file mode 100644
index 0000000000000000000000000000000000000000..41d25bd4c426d1c99dacaf9b771e1e07de2501ed
--- /dev/null
+++ b/appengine/findit/handlers/crash/test/triage_fracas_analysis_test.py
@@ -0,0 +1,108 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+import calendar
+import base64
+import copy
+from datetime import datetime
+from datetime import time
+from datetime import timedelta
+import json
+from urllib import quote
+
+from google.appengine.api import users
+import webapp2
+
+from testing_utils import testing
+
+from common import time_util
+from handlers.crash import triage_fracas_analysis
+from model import analysis_status
+from model import result_status
+from model import triage_status
+from model.crash.fracas_crash_analysis import FracasCrashAnalysis
+
+
+class TriageFracasAnalysisTest(testing.AppengineTestCase):
+ app_module = webapp2.WSGIApplication(
+ [('/triage-fracas-analysis',
+ triage_fracas_analysis.TriageFracasAnalysis)], debug=True)
+
+ def setUp(self):
+ super(TriageFracasAnalysisTest, self).setUp()
+ analysis = FracasCrashAnalysis.Create({'signature': 'signature'})
+ analysis.signature = 'signature'
+ analysis.crashed_version = '53.0.2750.0'
+ analysis.stack_trace = 'dummy\nframe1\nframe2'
+ analysis.platform = 'android'
+ analysis.channel = 'canary'
+ analysis.client_id = 'fracas'
+ analysis.status = analysis_status.COMPLETED
+ analysis.historical_metadata = [
+ {'chrome_version': '53.0.2748.0', 'cpm': 0},
+ {'chrome_version': '53.0.2749.0', 'cpm': 0},
+ {'chrome_version': '53.0.2750.0', 'cpm': 0.8}
+ ]
+
+ suspected_cl = {
+ 'url': 'https://chromium.googlesource.com/chromium/src/+/346a',
+ 'review_url': 'https://review',
+ 'revision': '346a',
+ 'project_path': 'src/',
+ 'author': 'a@chromium.org',
+ 'time': '2016-06-04 00:00:00 UTC',
+ 'reason': 'some reason',
+ 'confidence': 1
+ }
+ analysis.result = {'found': True,
+ 'suspected_cls': [suspected_cl],
+ 'suspected_components': ['Blink>API', 'Blink>DOM'],
+ 'suspected_project': 'chromium',
+ 'regression_range': ['53.0.2749.0', '53.0.2750.0']}
+ analysis.found_suspects = True
+ analysis.note = 'This is a note.'
+ analysis.put()
+
+ self.key = analysis.key
+ self.mock_current_user(user_email='test@chromium.org', is_admin=True)
+
+ def testFracasDashBoardHandler(self):
+ response = self.test_app.get('/triage-fracas-analysis?key=%s' %
+ self.key.urlsafe())
+ self.assertEqual(200, response.status_int)
+
+ def testUpdateResultProperty(self):
+ updates = [
+ {
+ 'culprit_regression_range': ['1', '2'],
+ 'regression_range_triage_status': triage_status.TRIAGED_CORRECT
+ },
+ {
+ 'culprit_cls': ['https://chromium/src/+/346'],
+ 'suspected_cls_triage_status': triage_status.TRIAGED_CORRECT
+ },
+ {
+ 'culprit_project': 'chromium-v8',
+ 'suspected_project_triage_status': triage_status.TRIAGED_INCORRECT
+ },
+ {
+ 'culprit_components': ['Blink>API'],
+ 'suspected_components_triage_status': triage_status.TRIAGED_UNSURE
+ },
+ ]
+ for update in updates:
+
+ self.test_app.get('/triage-fracas-analysis?key=%s&update=%s' %
+ (self.key.urlsafe(),
+ quote(json.dumps(update), safe='')))
+ analysis = self.key.get()
+ for key, value in update.iteritems():
+ self.assertEqual(getattr(analysis, key), value)
+
+ def testUpdateNote(self):
+ update = {'note': 'this is a note. +2314>?'}
+ self.test_app.get('/triage-fracas-analysis?key=%s&update=%s' %
+ (self.key.urlsafe(),
+ quote(json.dumps(update), safe='')))
+ analysis = self.key.get()
+ self.assertEqual(analysis.note, update['note'])

Powered by Google App Engine
This is Rietveld 408576698