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

Side by Side Diff: appengine/findit/crash/test/findit_for_chromecrash_test.py

Issue 2588513002: [Predator] renamed "Result" to "Suspect" (Closed)
Patch Set: Removing redundant import 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 import mock 5 import mock
6 6
7 from common import chrome_dependency_fetcher 7 from common import chrome_dependency_fetcher
8 from common.dependency import DependencyRoll 8 from common.dependency import DependencyRoll
9 from common.http_client_appengine import HttpClientAppengine 9 from common.http_client_appengine import HttpClientAppengine
10 from crash import chromecrash_parser 10 from crash import chromecrash_parser
11 from crash import detect_regression_range 11 from crash import detect_regression_range
12 from crash import findit 12 from crash import findit
13 from crash import findit_for_chromecrash 13 from crash import findit_for_chromecrash
14 from crash.changelist_classifier import ChangelistClassifier 14 from crash.changelist_classifier import ChangelistClassifier
15 from crash.chromecrash_parser import ChromeCrashParser 15 from crash.chromecrash_parser import ChromeCrashParser
16 from crash.component_classifier import ComponentClassifier 16 from crash.component_classifier import ComponentClassifier
17 from crash.crash_report import CrashReport 17 from crash.crash_report import CrashReport
18 from crash.culprit import Culprit 18 from crash.culprit import Culprit
19 from crash.findit_for_chromecrash import FinditForChromeCrash 19 from crash.findit_for_chromecrash import FinditForChromeCrash
20 from crash.findit_for_chromecrash import FinditForFracas 20 from crash.findit_for_chromecrash import FinditForFracas
21 from crash.project_classifier import ProjectClassifier 21 from crash.project_classifier import ProjectClassifier
22 from crash.results import MatchResult 22 from crash.suspect import Suspect
23 from crash.stacktrace import CallStack 23 from crash.stacktrace import CallStack
24 from crash.stacktrace import Stacktrace 24 from crash.stacktrace import Stacktrace
25 from crash.test.crash_pipeline_test import DummyCrashData 25 from crash.test.crash_pipeline_test import DummyCrashData
26 from crash.test.predator_testcase import PredatorTestCase 26 from crash.test.predator_testcase import PredatorTestCase
27 from crash.type_enums import CrashClient 27 from crash.type_enums import CrashClient
28 from libs.gitiles import gitiles_repository 28 from libs.gitiles import gitiles_repository
29 from model import analysis_status 29 from model import analysis_status
30 from model.crash.crash_analysis import CrashAnalysis 30 from model.crash.crash_analysis import CrashAnalysis
31 from model.crash.fracas_crash_analysis import FracasCrashAnalysis 31 from model.crash.fracas_crash_analysis import FracasCrashAnalysis
32 32
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 self.mock(ChromeCrashParser, 'Parse', lambda *_: Stacktrace([CallStack(0)])) 194 self.mock(ChromeCrashParser, 'Parse', lambda *_: Stacktrace([CallStack(0)]))
195 self.mock(chrome_dependency_fetcher.ChromeDependencyFetcher, 195 self.mock(chrome_dependency_fetcher.ChromeDependencyFetcher,
196 'GetDependencyRollsDict', 196 'GetDependencyRollsDict',
197 lambda *_: { 197 lambda *_: {
198 'src/': DependencyRoll('src/', 'https://repo', '1', '2'), 198 'src/': DependencyRoll('src/', 'https://repo', '1', '2'),
199 'src/add': DependencyRoll('src/add', 'https://repo1', None, '2'), 199 'src/add': DependencyRoll('src/add', 'https://repo1', None, '2'),
200 'src/delete': DependencyRoll('src/delete', 'https://repo2', '2', 200 'src/delete': DependencyRoll('src/delete', 'https://repo2', '2',
201 None) 201 None)
202 }) 202 })
203 203
204 dummy_match_result = MatchResult(self.GetDummyChangeLog(), 'src/') 204 dummy_suspect = Suspect(self.GetDummyChangeLog(), 'src/')
205 self.mock(ChangelistClassifier, '__call__', 205 self.mock(ChangelistClassifier, '__call__',
206 lambda _self, report: 206 lambda _self, report:
207 [dummy_match_result] if report.regression_range else []) 207 [dummy_suspect] if report.regression_range else [])
208 208
209 self.mock(ComponentClassifier, 'Classify', lambda *_: []) 209 self.mock(ComponentClassifier, 'Classify', lambda *_: [])
210 self.mock(ProjectClassifier, 'Classify', lambda *_: '') 210 self.mock(ProjectClassifier, 'Classify', lambda *_: '')
211 211
212 # TODO(wrengr): for both these tests, we should compare Culprit 212 # TODO(wrengr): for both these tests, we should compare Culprit
213 # objects directly rather than calling ToDicts and comparing the 213 # objects directly rather than calling ToDicts and comparing the
214 # dictionaries. 214 # dictionaries.
215 self._testFindCulpritForChromeCrashSucceeds(dummy_match_result) 215 self._testFindCulpritForChromeCrashSucceeds(dummy_suspect)
216 self._testFindCulpritForChromeCrashFails() 216 self._testFindCulpritForChromeCrashFails()
217 217
218 def _testFindCulpritForChromeCrashSucceeds(self, dummy_match_result): 218 def _testFindCulpritForChromeCrashSucceeds(self, dummy_suspect):
219 analysis = CrashAnalysis() 219 analysis = CrashAnalysis()
220 analysis.signature = 'signature' 220 analysis.signature = 'signature'
221 analysis.platform = 'win' 221 analysis.platform = 'win'
222 analysis.stack_trace = 'frame1\nframe2' 222 analysis.stack_trace = 'frame1\nframe2'
223 analysis.crashed_version = '50.0.1234.0' 223 analysis.crashed_version = '50.0.1234.0'
224 dummy_regression_range = ['50.0.1233.0', '50.0.1234.0'] 224 dummy_regression_range = ['50.0.1233.0', '50.0.1234.0']
225 analysis.regression_range = dummy_regression_range 225 analysis.regression_range = dummy_regression_range
226 culprit = _FinditForChromeCrash().FindCulprit(analysis) 226 culprit = _FinditForChromeCrash().FindCulprit(analysis)
227 self.assertIsNotNone(culprit, 'FindCulprit failed unexpectedly') 227 self.assertIsNotNone(culprit, 'FindCulprit failed unexpectedly')
228 results, tag = culprit.ToDicts() 228 suspects, tag = culprit.ToDicts()
229 229
230 expected_results = { 230 expected_suspects = {
231 'found': True, 231 'found': True,
232 'suspected_cls': [dummy_match_result.ToDict()], 232 'suspected_cls': [dummy_suspect.ToDict()],
233 'regression_range': dummy_regression_range 233 'regression_range': dummy_regression_range
234 } 234 }
235 expected_tag = { 235 expected_tag = {
236 'found_suspects': True, 236 'found_suspects': True,
237 'found_project': False, 237 'found_project': False,
238 'found_components': False, 238 'found_components': False,
239 'has_regression_range': True, 239 'has_regression_range': True,
240 'solution': 'core_algorithm', 240 'solution': 'core_algorithm',
241 } 241 }
242 242
243 self.assertDictEqual(expected_results, results) 243 self.assertDictEqual(expected_suspects, suspects)
244 self.assertDictEqual(expected_tag, tag) 244 self.assertDictEqual(expected_tag, tag)
245 245
246 def _testFindCulpritForChromeCrashFails(self): 246 def _testFindCulpritForChromeCrashFails(self):
247 analysis = CrashAnalysis() 247 analysis = CrashAnalysis()
248 analysis.signature = 'signature' 248 analysis.signature = 'signature'
249 analysis.platform = 'win' 249 analysis.platform = 'win'
250 analysis.stack_trace = 'frame1\nframe2' 250 analysis.stack_trace = 'frame1\nframe2'
251 analysis.crashed_version = '50.0.1234.0' 251 analysis.crashed_version = '50.0.1234.0'
252 results, tag = _FinditForChromeCrash().FindCulprit(analysis).ToDicts() 252 suspects, tag = _FinditForChromeCrash().FindCulprit(analysis).ToDicts()
253 253
254 expected_results = {'found': False} 254 expected_suspects = {'found': False}
255 expected_tag = { 255 expected_tag = {
256 'found_suspects': False, 256 'found_suspects': False,
257 'found_project': False, 257 'found_project': False,
258 'found_components': False, 258 'found_components': False,
259 'has_regression_range': False, 259 'has_regression_range': False,
260 'solution': 'core_algorithm', 260 'solution': 'core_algorithm',
261 } 261 }
262 262
263 self.assertDictEqual(expected_results, results) 263 self.assertDictEqual(expected_suspects, suspects)
264 self.assertDictEqual(expected_tag, tag) 264 self.assertDictEqual(expected_tag, tag)
265 265
266 @mock.patch('google.appengine.ext.ndb.Key.urlsafe') 266 @mock.patch('google.appengine.ext.ndb.Key.urlsafe')
267 @mock.patch('common.appengine_util.GetDefaultVersionHostname') 267 @mock.patch('common.appengine_util.GetDefaultVersionHostname')
268 def testProcessResultForPublishing(self, mocked_get_default_host, 268 def testProcessResultForPublishing(self, mocked_get_default_host,
269 mocked_urlsafe): 269 mocked_urlsafe):
270 mocked_host = 'http://host' 270 mocked_host = 'http://host'
271 mocked_get_default_host.return_value = mocked_host 271 mocked_get_default_host.return_value = mocked_host
272 urlsafe_key = 'abcde' 272 urlsafe_key = 'abcde'
273 mocked_urlsafe.return_value = urlsafe_key 273 mocked_urlsafe.return_value = urlsafe_key
274 274
275 crash_identifiers = {'signature': 'sig'} 275 crash_identifiers = {'signature': 'sig'}
276 analysis = FracasCrashAnalysis.Create(crash_identifiers) 276 analysis = FracasCrashAnalysis.Create(crash_identifiers)
277 analysis.result = {'other': 'data'} 277 analysis.result = {'other': 'data'}
278 findit_object = FinditForFracas(None) 278 findit_object = FinditForFracas(None)
279 expected_processed_result = { 279 expected_processed_suspect = {
280 'client_id': findit_object.client_id, 280 'client_id': findit_object.client_id,
281 'crash_identifiers': {'signature': 'sig'}, 281 'crash_identifiers': {'signature': 'sig'},
282 'result': { 282 'result': {
283 'feedback_url': ( 283 'feedback_url': (
284 findit_for_chromecrash._FRACAS_FEEDBACK_URL_TEMPLATE % ( 284 findit_for_chromecrash._FRACAS_FEEDBACK_URL_TEMPLATE % (
285 mocked_host, urlsafe_key)), 285 mocked_host, urlsafe_key)),
286 'other': 'data' 286 'other': 'data'
287 } 287 }
288 } 288 }
289 289
290 self.assertDictEqual(findit_object.GetPublishableResult(crash_identifiers, 290 self.assertDictEqual(findit_object.GetPublishableResult(crash_identifiers,
291 analysis), 291 analysis),
292 expected_processed_result) 292 expected_processed_suspect)
OLDNEW
« no previous file with comments | « appengine/findit/crash/test/crash_test_suite.py ('k') | appengine/findit/crash/test/occurrence_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698