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

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

Issue 1914113002: [Findit] Enable project classifier and component classifier (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Address comments and add tests. Created 4 years, 7 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 unified diff | Download patch
OLDNEW
(Empty)
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
3 # found in the LICENSE file.
4
5 from crash.callstack import StackFrame, CallStack
6 from crash.project_classifier import ProjectClassifier
7 from crash.results import Result
8 from crash.test.crash_testcase import CrashTestCase
9 from crash.type_enums import CallStackLanguageType
10
11
12 class ProjectClassifierTest(CrashTestCase):
13
14 def testGetProjectNameFromDepPath(self):
15 classifier = ProjectClassifier()
16 self.assertEqual(classifier._GetProjectNameFromDepPath('src/'),
17 'chromium')
18
19 self.assertEqual(classifier._GetProjectNameFromDepPath('src/abc'),
20 'chromium-abc')
21
22 self.assertEqual(classifier._GetProjectNameFromDepPath('unknown/unknown'),
23 'chromium-unknown_unknown')
24
25 def testGetClassFromStackFrame(self):
26 classifier = ProjectClassifier()
27
28 frame = StackFrame(0, 'src/', 'func', 'f.cc', 'src/f.cc', [2])
29 self.assertEqual(
30 classifier.GetClassFromStackFrame(frame),
31 ('chromium', 'src/'))
32
33 frame = StackFrame(0, '', 'android.a', 'comp1.cc', 'src/comp1.cc', [2])
34 self.assertEqual(
35 classifier.GetClassFromStackFrame(frame),
36 ('android_os', ''))
37
38 frame = StackFrame(0, '', 'func', 'comp2.cc',
39 'googleplex-android/src/comp2.cc', [32])
40 self.assertEqual(
41 classifier.GetClassFromStackFrame(frame),
42 ('android_os', ''))
43
44 frame = StackFrame(0, '', 'func', 'comp2.cc', 'unknown/comp2.cc', [32])
45 self.assertEqual(
46 classifier.GetClassFromStackFrame(frame),
47 ('others', ''))
48
49 def testGetClassFromResult(self):
50 classifier = ProjectClassifier()
51
52 result = Result(self.GetDummyChangeLog(), 'src/')
53 self.assertEqual(classifier.GetClassFromResult(result),
54 ('chromium', 'src/'))
55
56 result.file_to_stack_infos = {
57 'comp1.cc': [
58 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0)
59 ]
60 }
61 self.assertEqual(classifier.GetClassFromResult(result),
62 ('chromium', 'src/'))
63
64 def testClassifyCrashStack(self):
65 classifier = ProjectClassifier()
66
67 crash_stack = CallStack(0)
68 crash_stack.extend([
69 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]),
70 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]),
71 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8])
72 ])
73
74 self.assertEqual(classifier.Classify([], crash_stack),
75 'chromium (src/)')
76
77 def testClassifyResultsEmpty(self):
78 classifier = ProjectClassifier()
79
80 result = Result(self.GetDummyChangeLog(), '')
81 self.assertEqual(classifier.Classify([result], CallStack(0)),
82 'others')
83
84 def testClassifyRankFunction(self):
85 classifier = ProjectClassifier()
86
87 result1 = Result(self.GetDummyChangeLog(), 'src/')
88 result1.file_to_stack_infos = {
89 'comp1.cc': [
90 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0)
91 ]
92 }
93
94 self.assertEqual(classifier.Classify([result1], CallStack(0)),
95 'chromium (src/)')
96
97 result2 = Result(self.GetDummyChangeLog(), '')
98 result2.file_to_stack_infos = {
99 'ad.cc': [
100 (StackFrame(0, '', 'android.a', 'ad.cc', 'ad.cc', [2]), 0)
101 ]
102 }
103
104 self.assertEqual(classifier.Classify([result2], CallStack(0)),
105 'android_os')
106
107 self.assertEqual(classifier.Classify([result1, result2], CallStack(0)),
108 'chromium (src/)')
109
110 def testClassifyForJavaRankFunction(self):
111 classifier = ProjectClassifier()
112
113 crash_stack = CallStack(0)
114 crash_stack.language_type = CallStackLanguageType.JAVA
115
116 crash_stack.extend([
117 StackFrame(0, '', 'android.a.f', 'android/a/cc',
118 'android/a.java', [2]),
119 StackFrame(1, '', 'org.chromium.c', 'org/chromium/c.java',
120 'org/chromium/c.java', [8])
121 ])
122
123 self.assertEqual(classifier.Classify([], crash_stack),
124 'chromium')
125
126 def testClassifyReturnsNone(self):
127 def _MockClassify(*_, **args):
128 self.assertIsNotNone(args)
129 return None
130
131 self.mock(ProjectClassifier, '_Classify', _MockClassify)
132
133 classifier = ProjectClassifier()
134 self.assertEqual(classifier.Classify([], CallStack(0)),
135 'others')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698