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

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

Issue 2562623004: Making CallStack immutable, so it can be hashable (Closed)
Patch Set: Addressing nits 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 from common import constants 5 from common import constants
6 from common.pipeline_wrapper import pipeline_handlers 6 from common.pipeline_wrapper import pipeline_handlers
7 from crash.occurrence import Occurrence 7 from crash.occurrence import Occurrence
8 from crash.occurrence import DefaultOccurrenceRanking 8 from crash.occurrence import DefaultOccurrenceRanking
9 from crash.occurrence import RankByOccurrence 9 from crash.occurrence import RankByOccurrence
10 from crash.stacktrace import StackFrame 10 from crash.stacktrace import StackFrame
(...skipping 11 matching lines...) Expand all
22 return 'class_2' 22 return 'class_2'
23 23
24 def GetClassFromResult(self, _result): # pragma: no cover. 24 def GetClassFromResult(self, _result): # pragma: no cover.
25 return 'class_3' 25 return 'class_3'
26 26
27 def Classify(self, results, crash_stack): 27 def Classify(self, results, crash_stack):
28 top_n_frames = 4 28 top_n_frames = 4
29 if results: 29 if results:
30 classes = map(self.GetClassFromResult, results[:top_n_frames]) 30 classes = map(self.GetClassFromResult, results[:top_n_frames])
31 else: 31 else:
32 classes = map(self.GetClassFromStackFrame, crash_stack[:top_n_frames]) 32 classes = map(self.GetClassFromStackFrame,
33 crash_stack.frames[:top_n_frames])
33 34
34 class_list = RankByOccurrence(classes, 1) 35 class_list = RankByOccurrence(classes, 1)
35 if class_list: 36 if class_list:
36 return class_list[0] 37 return class_list[0]
37 38
38 return '' 39 return ''
39 40
40 41
41 class ClassifierTest(CrashTestCase): 42 class ClassifierTest(CrashTestCase):
42 43
43 def testDefaultOccurrenceRanking(self): 44 def testDefaultOccurrenceRanking(self):
44 self.assertEqual(DefaultOccurrenceRanking(Occurrence('c1', [0])), 45 self.assertEqual(DefaultOccurrenceRanking(Occurrence('c1', [0])),
45 (-1, 0)) 46 (-1, 0))
46 self.assertEqual(DefaultOccurrenceRanking(Occurrence('c1', [0, 1])), 47 self.assertEqual(DefaultOccurrenceRanking(Occurrence('c1', [0, 1])),
47 (-float('inf'), 0)) 48 (-float('inf'), 0))
48 49
49 def testClassifyCrashStack(self): 50 def testClassifyCrashStack(self):
50 dummy_classifier = DummyClassifier() 51 dummy_classifier = DummyClassifier()
51 52
52 crash_stack = CallStack(0) 53 crash_stack = CallStack(0)
53 self.assertEqual(dummy_classifier.Classify([], crash_stack), '') 54 self.assertEqual(dummy_classifier.Classify([], crash_stack), '')
54 55
55 crash_stack.extend( 56 crash_stack = CallStack(0, frame_list=[
56 [StackFrame(0, 'src/', 'a::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]), 57 StackFrame(0, 'src/', 'a::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]),
57 StackFrame(1, 'src/', 'a::d(a* c)', 'f1.cc', 'src/f1.cc', [227]), 58 StackFrame(1, 'src/', 'a::d(a* c)', 'f1.cc', 'src/f1.cc', [227]),
58 StackFrame(2, 'src/dummy', 'a::e(int)', 'f2.cc', 'src/f2.cc', [87])]) 59 StackFrame(2, 'src/dummy', 'a::e(int)', 'f2.cc', 'src/f2.cc', [87])])
59 60
60 self.assertEqual(dummy_classifier.Classify([], crash_stack), 'class_1') 61 self.assertEqual(dummy_classifier.Classify([], crash_stack), 'class_1')
61 62
62 crash_stack = CallStack(0) 63 crash_stack = CallStack(0, frame_list=[
63 crash_stack.extend( 64 StackFrame(0, 'src/', 'a::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]),
64 [StackFrame(0, 'src/', 'a::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]), 65 StackFrame(1, 'src/dummy', 'a::d(a* c)', 'f1.cc', 'src/f1.cc', [227]),
65 StackFrame(1, 'src/dummy', 'a::d(a* c)', 'f1.cc', 'src/f1.cc', [227]), 66 StackFrame(2, 'src/dummy', 'a::e(int)', 'f2.cc', 'src/f2.cc', [87])])
66 StackFrame(2, 'src/dummy', 'a::e(int)', 'f2.cc', 'src/f2.cc', [87])])
67 67
68 self.assertEqual(dummy_classifier.Classify([], crash_stack), 'class_2') 68 self.assertEqual(dummy_classifier.Classify([], crash_stack), 'class_2')
69 69
70 def testClassifyResults(self): 70 def testClassifyResults(self):
71 dummy_classifier = DummyClassifier() 71 dummy_classifier = DummyClassifier()
72 72
73 result = Result(self.GetDummyChangeLog(), 'src/') 73 result = Result(self.GetDummyChangeLog(), 'src/')
74 result.file_to_stack_infos = { 74 result.file_to_stack_infos = {
75 'f0.cc': [(StackFrame( 75 'f0.cc': [(StackFrame(
76 0, 'src/', 'a::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]), 0)] 76 0, 'src/', 'a::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]), 0)]
77 } 77 }
78 78
79 self.assertEqual(dummy_classifier.Classify([result], CallStack(0)), 79 self.assertEqual(dummy_classifier.Classify([result], CallStack(0)),
80 'class_3') 80 'class_3')
81 81
OLDNEW
« no previous file with comments | « appengine/findit/crash/test/component_classifier_test.py ('k') | appengine/findit/crash/test/project_classifier_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698