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

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: Add classifiers to fracas.py 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._GetProjectFromDepPath('src/'),
17 ('chromium', 'src/'))
18
19 self.assertEqual(classifier._GetProjectFromDepPath('src/abc'),
20 ('chromium-abc', 'src/abc'))
21
22 self.assertEqual(classifier._GetProjectFromDepPath('unknown/unknown'),
23 ('chromium-unknown_unknown', '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 ('', ''))
48
49 def testGetClassFromResult(self):
50 classifier = ProjectClassifier()
51
52 result = Result(self.GetDummyChangeLog(), 'src/')
53 result.file_to_stack_infos = {'a.cc': [(
54 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [3]), 0
55 )]}
56 self.assertEqual(classifier.GetClassFromResult(result),
57 ('chromium', 'src/'))
58
59 result.file_to_stack_infos = {
60 'comp1.cc': [
61 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0)
62 ]
63 }
64 self.assertEqual(classifier.GetClassFromResult(result),
65 ('chromium', 'src/'))
66
67 def testClassifyCrashStack(self):
68 classifier = ProjectClassifier()
69
70 crash_stack = CallStack(0)
71 crash_stack.extend([
72 StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]),
73 StackFrame(1, 'src/', 'ff', 'comp1.cc', 'src/comp1.cc', [21]),
74 StackFrame(2, 'src/', 'func2', 'comp2.cc', 'src/comp2.cc', [8])
75 ])
76
77 self.assertEqual(classifier.Classify([], crash_stack),
78 'chromium (src/)')
79
80 def testClassifyResultsEmpty(self):
81 classifier = ProjectClassifier()
82
83 result = Result(self.GetDummyChangeLog(), '')
84 self.assertEqual(classifier.Classify([result], CallStack(0)),
85 '')
86
87 def testClassifyRankFunction(self):
88 classifier = ProjectClassifier()
89
90 result1 = Result(self.GetDummyChangeLog(), 'src/')
91 result1.file_to_stack_infos = {
92 'comp1.cc': [
93 (StackFrame(0, 'src/', 'func', 'comp1.cc', 'src/comp1.cc', [2]), 0)
94 ]
95 }
96
97 self.assertEqual(classifier.Classify([result1], CallStack(0)),
98 'chromium (src/)')
99
100 result2 = Result(self.GetDummyChangeLog(), '')
101 result2.file_to_stack_infos = {
102 'ad.cc': [
103 (StackFrame(0, '', 'android.a', 'ad.cc', 'ad.cc', [2]), 0)
104 ]
105 }
106
107 self.assertEqual(classifier.Classify([result2], CallStack(0)),
108 'android_os')
109
110 self.assertEqual(classifier.Classify([result1, result2], CallStack(0)),
111 'chromium (src/)')
112
113 def testClassifyForJavaRankFunction(self):
114 classifier = ProjectClassifier()
115
116 crash_stack = CallStack(0)
117 crash_stack.language_type = CallStackLanguageType.JAVA
118
119 crash_stack.extend([
120 StackFrame(0, '', 'android.a.f', 'android/a/cc',
121 'android/a.java', [2]),
122 StackFrame(1, '', 'org.chromium.c', 'org/chromium/c.java',
123 'org/chromium/c.java', [8])
124 ])
125
126 self.assertEqual(classifier.Classify([], crash_stack),
127 'chromium')
128
129 def testClassifyReturnsNone(self):
130 def _MockClassify(*_, **args):
131 self.assertIsNotNone(args)
132 return None
133
134 self.mock(ProjectClassifier, '_Classify', _MockClassify)
135
136 classifier = ProjectClassifier()
137 self.assertEqual(classifier.Classify([], CallStack(0)),
138 '')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698