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

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

Powered by Google App Engine
This is Rietveld 408576698