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

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

Issue 2593593003: [Predator] Add Clusterfuzz stacktrace parser. (Closed)
Patch Set: fix 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
(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 import callstack_detectors
6 from crash.flag_manager import Flag
7 from crash.flag_manager import FlagManager
8 from crash.test.stacktrace_test_suite import StacktraceTestSuite
9 from crash.type_enums import CallStackFormatType
10 from crash.type_enums import LanguageType
11
12
13 class CallStackDetectorTest(StacktraceTestSuite):
14
15 def testAndroidJobDetector(self):
16 """Tests ``AndroidJobDetector`` detects android job callstack."""
wrengr 2016/12/22 23:28:36 for all these docstrings "tests ``foo`` detects" -
Sharu Jiang 2016/12/28 20:16:46 Done.
17 stack_detector = callstack_detectors.AndroidJobDetector()
18 flag_manager = FlagManager()
19 flag_manager.Register('group', Flag('java_main_stack_flag', val=True))
20
21 self.assertTupleEqual(
22 stack_detector.IsStartOfNewCallStack(
23 'java.lang.IllegalStateException: blabla', flag_manager),
24 (True, 0, CallStackFormatType.JAVA, LanguageType.JAVA, {}))
25 self.assertTupleEqual(
26 stack_detector.IsStartOfNewCallStack(
27 'org.chromium.src.BlaBla', flag_manager),
28 (True, 1, CallStackFormatType.JAVA, LanguageType.JAVA, {}))
29 self.assertTupleEqual(
30 stack_detector.IsStartOfNewCallStack('Caused by:', flag_manager),
31 (True, 1, CallStackFormatType.JAVA, LanguageType.JAVA, {}))
32 self.assertTupleEqual(
33 stack_detector.IsStartOfNewCallStack(
34 'com.google.android.BlaBla', flag_manager),
35 (True, 1, CallStackFormatType.JAVA, LanguageType.JAVA, {}))
36 self.assertTupleEqual(
37 stack_detector.IsStartOfNewCallStack('dummy', flag_manager),
38 (False, None, None, None, None))
39
40 def testSyzyasanDetector(self):
41 """Tests ``SyzyasanDetector`` detects sysyasn callstack."""
42 stack_detector = callstack_detectors.SyzyasanDetector()
43 self.assertTupleEqual(
44 stack_detector.IsStartOfNewCallStack('Crash stack:'),
45 (True, 0, CallStackFormatType.SYZYASAN, LanguageType.CPP, {}))
46 self.assertTupleEqual(
47 stack_detector.IsStartOfNewCallStack('A stack:'),
48 (True, 1, CallStackFormatType.SYZYASAN, LanguageType.CPP, {}))
49 self.assertTupleEqual(
50 stack_detector.IsStartOfNewCallStack('dummy'),
51 (False, None, None, None, None))
52
53 def testTsanDetector(self):
54 """Tests ``TsanDetector`` detects thread sanitizer callstack."""
55 stack_detector = callstack_detectors.TsanDetector()
56 self.assertTupleEqual(
57 stack_detector.IsStartOfNewCallStack('Read of size 1023:'),
58 (True, 0, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
59 self.assertTupleEqual(
60 stack_detector.IsStartOfNewCallStack('WARNING: ThreadSanitizer'),
61 (True, 0, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
62 self.assertTupleEqual(
63 stack_detector.IsStartOfNewCallStack('Previous read of size 102'),
64 (True, 1, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
65 self.assertTupleEqual(
66 stack_detector.IsStartOfNewCallStack(
67 'Location is heap block of size 3543'),
68 (True, 1, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
69 self.assertTupleEqual(
70 stack_detector.IsStartOfNewCallStack('dummy'),
71 (False, None, None, None, None))
72
73 def testUbsanDetector(self):
74 """Tests ``UbsanDetector`` detects ubsan callstack."""
75 stack_detector = callstack_detectors.UbsanDetector()
76 flag_manager = FlagManager()
77 flag_manager.Register('group', Flag('is_first_stack_flag', val=True))
78 self.assertTupleEqual(
79 stack_detector.IsStartOfNewCallStack('blabla: runtime error: blabla',
80 flag_manager),
81 (True, 0, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
82 # After the ``is_first_stack_flag`` is set to False, the priority will be
83 # 1.
84 self.assertTupleEqual(
85 stack_detector.IsStartOfNewCallStack('blabla: runtime error: blabla',
86 flag_manager),
87 (True, 1, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
88 self.assertTupleEqual(
89 stack_detector.IsStartOfNewCallStack('dummy', flag_manager),
90 (False, None, None, None, None))
91
92 def testMsanDetector(self):
93 """Tests ``MsanDetector`` detects memory sanitizer callstack."""
94 stack_detector = callstack_detectors.MsanDetector()
95 self.assertTupleEqual(
96 stack_detector.IsStartOfNewCallStack(
97 'Uninitialized value was created by'),
98 (True, 0, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
99 # After the ``is_first_stack_flag`` is set to False, the priority will be
100 # 1.
101 self.assertTupleEqual(
102 stack_detector.IsStartOfNewCallStack(
103 'Uninitialized value was stored to'),
104 (True, 1, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
105 self.assertTupleEqual(
106 stack_detector.IsStartOfNewCallStack(
107 '==123== ERROR:MemorySanitizer'),
108 (True, 2, CallStackFormatType.DEFAULT, LanguageType.CPP, {'pid': 123}))
109 self.assertTupleEqual(
110 stack_detector.IsStartOfNewCallStack('dummy'),
111 (False, None, None, None, None))
112
113 def testAsanDetector(self):
114 """Tests ``AsanDetector`` detects address sanitizer callstack."""
115 stack_detector = callstack_detectors.AsanDetector()
116 self.assertTupleEqual(
117 stack_detector.IsStartOfNewCallStack('==123== ERROR:AddressSanitizer'),
118 (True, 0, CallStackFormatType.DEFAULT, LanguageType.CPP, {'pid': 123}))
119 # After the ``is_first_stack_flag`` is set to False, the priority will be
120 # 1.
121 self.assertTupleEqual(
122 stack_detector.IsStartOfNewCallStack('READ of size 32 at backtrace:'),
123 (True, 0, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
124 self.assertTupleEqual(
125 stack_detector.IsStartOfNewCallStack('freed by thread T99 here:'),
126 (True, 1, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
127 self.assertTupleEqual(
128 stack_detector.IsStartOfNewCallStack(
129 'previously allocated by thread T1 here:'),
130 (True, 1, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
131 self.assertTupleEqual(
132 stack_detector.IsStartOfNewCallStack('Thread T9 created by'),
133 (True, 1, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
134 self.assertTupleEqual(
135 stack_detector.IsStartOfNewCallStack('dummy'),
136 (False, None, None, None, None))
137
138 def testChromeCrashDetector(self):
139 """Tests ``ChromeCrashDetector`` detects Fracas/Cracas callstack."""
140 stack_detector = callstack_detectors.ChromeCrashStackDetector()
141
142 self.assertTupleEqual(
143 stack_detector.IsStartOfNewCallStack('CRASHED [EXC @ 0x508]'),
144 (True, 0, CallStackFormatType.DEFAULT, LanguageType.CPP, {}))
145 self.assertTupleEqual(
146 stack_detector.IsStartOfNewCallStack('(JAVA) CRASHED [EXC @ 0x508]'),
147 (True, 0, CallStackFormatType.DEFAULT, LanguageType.JAVA, {}))
148 self.assertTupleEqual(stack_detector.IsStartOfNewCallStack('dummy line'),
149 (False, None, None, None, None))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698