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

Side by Side Diff: appengine/findit/crash/test/project_classifier_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 crash.stacktrace import StackFrame 5 from crash.stacktrace import StackFrame
6 from crash.stacktrace import CallStack 6 from crash.stacktrace import CallStack
7 from crash.project_classifier import ProjectClassifier 7 from crash.project_classifier import ProjectClassifier
8 from crash.results import Result 8 from crash.results import Result
9 from crash.test.crash_testcase import CrashTestCase 9 from crash.test.crash_testcase import CrashTestCase
10 from crash.type_enums import CallStackLanguageType 10 from crash.type_enums import CallStackLanguageType
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 result.file_to_stack_infos = { 56 result.file_to_stack_infos = {
57 'comp1.cc': [ 57 'comp1.cc': [
58 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) 58 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0)
59 ] 59 ]
60 } 60 }
61 self.assertEqual(classifier.GetClassFromResult(result), 'chromium') 61 self.assertEqual(classifier.GetClassFromResult(result), 'chromium')
62 62
63 def testClassifyCrashStack(self): 63 def testClassifyCrashStack(self):
64 classifier = ProjectClassifier() 64 classifier = ProjectClassifier()
65 65
66 crash_stack = CallStack(0) 66 crash_stack = CallStack(0, frame_list=[
67 crash_stack.extend([
68 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 67 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]),
69 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]), 68 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]),
70 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) 69 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8])])
71 ])
72 70
73 self.assertEqual(classifier.Classify([], crash_stack), 'chromium') 71 self.assertEqual(classifier.Classify([], crash_stack), 'chromium')
74 72
75 def testClassifyResultsEmpty(self): 73 def testClassifyResultsEmpty(self):
76 classifier = ProjectClassifier() 74 classifier = ProjectClassifier()
77 result = Result(self.GetDummyChangeLog(), '') 75 result = Result(self.GetDummyChangeLog(), '')
78 self.assertEqual(classifier.Classify([result], CallStack(0)), '') 76 self.assertEqual(classifier.Classify([result], CallStack(0)), '')
79 77
80 def testClassifyRankFunction(self): 78 def testClassifyRankFunction(self):
81 classifier = ProjectClassifier() 79 classifier = ProjectClassifier()
(...skipping 16 matching lines...) Expand all
98 96
99 self.assertEqual(classifier.Classify([result2], CallStack(0)), 97 self.assertEqual(classifier.Classify([result2], CallStack(0)),
100 'android_os') 98 'android_os')
101 99
102 self.assertEqual(classifier.Classify([result1, result2], CallStack(0)), 100 self.assertEqual(classifier.Classify([result1, result2], CallStack(0)),
103 'chromium') 101 'chromium')
104 102
105 def testClassifyForJavaRankFunction(self): 103 def testClassifyForJavaRankFunction(self):
106 classifier = ProjectClassifier() 104 classifier = ProjectClassifier()
107 105
108 crash_stack = CallStack(0) 106 crash_stack = CallStack(0, language_type=CallStackLanguageType.JAVA)
109 crash_stack.language_type = CallStackLanguageType.JAVA
110 107
111 crash_stack.extend([ 108 crash_stack = CallStack(0,
112 StackFrame(0, '', 'android.a.f', 'android/a/cc', 109 language_type=CallStackLanguageType.JAVA,
113 'android/a.java', [2]), 110 frame_list=[
114 StackFrame(1, '', 'org.chromium.c', 'org/chromium/c.java', 111 StackFrame(0, '', 'android.a.f', 'android/a/cc',
115 'org/chromium/c.java', [8]) 112 'android/a.java', [2]),
116 ]) 113 StackFrame(1, '', 'org.chromium.c', 'org/chromium/c.java',
114 'org/chromium/c.java', [8])
115 ])
117 116
118 self.assertEqual(classifier.Classify([], crash_stack), 117 self.assertEqual(classifier.Classify([], crash_stack),
119 'chromium') 118 'chromium')
120 119
121 # TODO(wrengr): what's the point of this? we're just testing that 120 # TODO(wrengr): what's the point of this? we're just testing that
122 # mocking does in fact mock. 121 # mocking does in fact mock.
123 def testClassifyReturnsNone(self): 122 def testClassifyReturnsNone(self):
124 self.mock(ProjectClassifier, 'Classify', lambda *_: None) 123 self.mock(ProjectClassifier, 'Classify', lambda *_: None)
125 self.assertIsNone(ProjectClassifier().Classify([], CallStack(0))) 124 self.assertIsNone(ProjectClassifier().Classify([], CallStack(0)))
126 125
127 def testProjectClassifierDoNotHaveConfig(self): 126 def testProjectClassifierDoNotHaveConfig(self):
128 crash_config = CrashConfig.Get() 127 crash_config = CrashConfig.Get()
129 crash_config.project_classifier = {} 128 crash_config.project_classifier = {}
130 crash_config.put() 129 crash_config.put()
131 130
132 crash_stack = CallStack(0) 131 crash_stack = CallStack(0, frame_list=[
133 crash_stack.extend([
134 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 132 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]),
135 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]), 133 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]),
136 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8]) 134 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8])])
137 ])
138 135
139 result1 = Result(self.GetDummyChangeLog(), 'src/') 136 result1 = Result(self.GetDummyChangeLog(), 'src/')
140 result1.file_to_stack_infos = { 137 result1.file_to_stack_infos = {
141 'comp1.cc': [ 138 'comp1.cc': [
142 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0) 139 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0)
143 ] 140 ]
144 } 141 }
145 142
146 self.assertIsNone(ProjectClassifier().Classify([result1], crash_stack)) 143 self.assertIsNone(ProjectClassifier().Classify([result1], crash_stack))
147 144
(...skipping 21 matching lines...) Expand all
169 'src/sdch/', 166 'src/sdch/',
170 'src/testing/', 167 'src/testing/',
171 'src/third_party/', 168 'src/third_party/',
172 'src/tools/', 169 'src/tools/',
173 'src/' 170 'src/'
174 ] 171 ]
175 172
176 self.assertEqual( 173 self.assertEqual(
177 ProjectClassifier().project_classifier_config['host_directories'], 174 ProjectClassifier().project_classifier_config['host_directories'],
178 expected_sorted_host_list) 175 expected_sorted_host_list)
OLDNEW
« no previous file with comments | « appengine/findit/crash/test/occurrence_test.py ('k') | appengine/findit/crash/test/stacktrace_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698