Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | |
|
stgao
2016/06/30 01:28:02
2016
Sharu Jiang
2016/07/01 22:05:48
Done.
| |
| 2 # Use of this source code is governed by a BSD-style license that can be | |
| 3 # found in the LICENSE file. | |
| 4 import calendar | |
| 5 import base64 | |
| 6 import copy | |
| 7 from datetime import datetime | |
| 8 from datetime import time | |
| 9 from datetime import timedelta | |
| 10 import json | |
| 11 from urllib import quote | |
| 12 | |
| 13 from google.appengine.api import users | |
| 14 import webapp2 | |
| 15 | |
| 16 from testing_utils import testing | |
| 17 | |
| 18 from common import time_util | |
| 19 from handlers.crash import triage_fracas_analysis | |
| 20 from model import analysis_status | |
| 21 from model import result_status | |
| 22 from model import triage_status | |
| 23 from model.crash.fracas_crash_analysis import FracasCrashAnalysis | |
| 24 | |
| 25 | |
| 26 class TriageFracasAnalysisTest(testing.AppengineTestCase): | |
| 27 app_module = webapp2.WSGIApplication( | |
| 28 [('/triage-fracas-analysis', | |
| 29 triage_fracas_analysis.TriageFracasAnalysis)], debug=True) | |
| 30 | |
| 31 def setUp(self): | |
| 32 super(TriageFracasAnalysisTest, self).setUp() | |
| 33 analysis = FracasCrashAnalysis.Create({'signature': 'signature'}) | |
| 34 analysis.signature = 'signature' | |
| 35 analysis.crashed_version = '53.0.2750.0' | |
| 36 analysis.stack_trace = 'dummy\nframe1\nframe2' | |
| 37 analysis.platform = 'android' | |
| 38 analysis.channel = 'canary' | |
| 39 analysis.client_id = 'fracas' | |
| 40 analysis.status = analysis_status.COMPLETED | |
| 41 analysis.historical_metadata = [ | |
| 42 {'chrome_version': '53.0.2748.0', 'cpm': 0}, | |
| 43 {'chrome_version': '53.0.2749.0', 'cpm': 0}, | |
| 44 {'chrome_version': '53.0.2750.0', 'cpm': 0.8} | |
| 45 ] | |
| 46 | |
| 47 suspected_cl = { | |
| 48 'url': 'https://chromium.googlesource.com/chromium/src/+/346a', | |
| 49 'review_url': 'https://review', | |
| 50 'revision': '346a', | |
| 51 'project_path': 'src/', | |
| 52 'author': 'a@chromium.org', | |
| 53 'time': '2016-06-04 00:00:00 UTC', | |
| 54 'reason': 'some reason', | |
| 55 'confidence': 1 | |
| 56 } | |
| 57 analysis.result = {'found': True, | |
| 58 'suspected_cls': [suspected_cl], | |
| 59 'suspected_components': ['Blink>API', 'Blink>DOM'], | |
| 60 'suspected_project': 'chromium', | |
| 61 'regression_range': ['53.0.2749.0', '53.0.2750.0']} | |
| 62 analysis.found_suspects = True | |
| 63 analysis.note = 'This is a note.' | |
| 64 analysis.put() | |
| 65 | |
| 66 self.key = analysis.key | |
| 67 self.mock_current_user(user_email='test@chromium.org', is_admin=True) | |
| 68 | |
| 69 def testFracasDashBoardHandler(self): | |
| 70 response = self.test_app.get('/triage-fracas-analysis?key=%s' % | |
| 71 self.key.urlsafe()) | |
| 72 self.assertEqual(200, response.status_int) | |
| 73 | |
| 74 def testUpdateResultProperty(self): | |
| 75 updates = [ | |
| 76 { | |
| 77 'culprit_regression_range': ['1', '2'], | |
| 78 'regression_range_triage_status': triage_status.TRIAGED_CORRECT | |
| 79 }, | |
| 80 { | |
| 81 'culprit_cls': ['https://chromium/src/+/346'], | |
| 82 'suspected_cls_triage_status': triage_status.TRIAGED_CORRECT | |
| 83 }, | |
| 84 { | |
| 85 'culprit_project': 'chromium-v8', | |
| 86 'suspected_project_triage_status': triage_status.TRIAGED_INCORRECT | |
| 87 }, | |
| 88 { | |
| 89 'culprit_components': ['Blink>API'], | |
| 90 'suspected_components_triage_status': triage_status.TRIAGED_UNSURE | |
| 91 }, | |
| 92 ] | |
| 93 for update in updates: | |
| 94 | |
| 95 self.test_app.get('/triage-fracas-analysis?key=%s&update=%s' % | |
| 96 (self.key.urlsafe(), | |
| 97 quote(json.dumps(update), safe=''))) | |
| 98 analysis = self.key.get() | |
| 99 for key, value in update.iteritems(): | |
| 100 self.assertEqual(getattr(analysis, key), value) | |
| 101 | |
| 102 def testUpdateNote(self): | |
| 103 update = {'note': 'this is a note. +2314>?'} | |
| 104 self.test_app.get('/triage-fracas-analysis?key=%s&update=%s' % | |
| 105 (self.key.urlsafe(), | |
| 106 quote(json.dumps(update), safe=''))) | |
| 107 analysis = self.key.get() | |
| 108 self.assertEqual(analysis.note, update['note']) | |
| OLD | NEW |