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

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

Issue 2593383002: [Predator] Move ``FilterStackBuffer`` from stack parser to ``AddFilteredStack`` of stacktrace buffe… (Closed)
Patch Set: . 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 common.dependency import Dependency 5 from common.dependency import Dependency
6 from crash.stacktrace import CallStack 6 from crash.stacktrace import CallStack
7 from crash.stacktrace import CallStackBuffer 7 from crash.stacktrace import CallStackBuffer
8 from crash.stacktrace import StackFrame 8 from crash.stacktrace import StackFrame
9 from crash.stacktrace import Stacktrace 9 from crash.stacktrace import Stacktrace
10 from crash.stacktrace import StacktraceBuffer 10 from crash.stacktrace import StacktraceBuffer
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 195
196 stack1 = CallStack(0, frame_list1, None, None) 196 stack1 = CallStack(0, frame_list1, None, None)
197 stack2 = CallStack(1, frame_list2, None, None) 197 stack2 = CallStack(1, frame_list2, None, None)
198 stacktrace = Stacktrace((stack1, stack2), stack1) 198 stacktrace = Stacktrace((stack1, stack2), stack1)
199 for stack in stacktrace: 199 for stack in stacktrace:
200 self.assertEqual(len(stack), 1) 200 self.assertEqual(len(stack), 1)
201 201
202 202
203 class StacktraceBufferTest(StacktraceTestSuite): 203 class StacktraceBufferTest(StacktraceTestSuite):
204 204
205 def _DummyFilter(self, stack_buffer): # pragma: no cover
206 return stack_buffer
207
205 def testStacktraceBufferWithoutSignature(self): 208 def testStacktraceBufferWithoutSignature(self):
206 """Tests using least priority stack as crash_stack without signature.""" 209 """Tests using least priority stack as crash_stack without signature."""
207 frame_list1 = [ 210 frame_list1 = [
208 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32])] 211 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32])]
209 212
210 frame_list2 = [ 213 frame_list2 = [
211 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])] 214 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])]
212 215
213 stack1 = CallStackBuffer(0, frame_list=frame_list1) 216 stack1 = CallStackBuffer(0, frame_list=frame_list1)
214 stack2 = CallStackBuffer(1, frame_list=frame_list2) 217 stack2 = CallStackBuffer(1, frame_list=frame_list2)
215 stacktrace = StacktraceBuffer([stack1, stack2]).ToStacktrace() 218 stacktrace = StacktraceBuffer([stack1, stack2]).ToStacktrace()
216 219
217 self._VerifyTwoCallStacksEqual(stacktrace.crash_stack, stack1.ToCallStack()) 220 self._VerifyTwoCallStacksEqual(stacktrace.crash_stack, stack1.ToCallStack())
218 221
219 def testStacktraceBufferWithSignature(self): 222 def testStacktraceBufferWithSignature(self):
220 """Tests using stack with signature as crash_stack with signature.""" 223 """Tests using stack with signature as crash_stack with signature."""
221 frame_list1 = [ 224 frame_list1 = [
222 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32])] 225 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32])]
223 226
224 frame_list2 = [ 227 frame_list2 = [
225 StackFrame(0, 'src/', 'signature_func2', 'f.cc', 'src/f.cc', [32])] 228 StackFrame(0, 'src/', 'signature_func2', 'f.cc', 'src/f.cc', [32])]
226 229
227 stack1 = CallStackBuffer(0, frame_list=frame_list1) 230 stack1 = CallStackBuffer(0, frame_list=frame_list1)
228 stack2 = CallStackBuffer(1, frame_list=frame_list2) 231 stack2 = CallStackBuffer(1, frame_list=frame_list2)
229 stacktrace = StacktraceBuffer([stack1, stack2], 'signature').ToStacktrace() 232 stacktrace = StacktraceBuffer([stack1, stack2], 'signature').ToStacktrace()
230 233
231 self._VerifyTwoCallStacksEqual(stacktrace.crash_stack, stack2.ToCallStack()) 234 self._VerifyTwoCallStacksEqual(stacktrace.crash_stack, stack2.ToCallStack())
232 235
236 def testAddFitleredStackWithNoFilters(self):
237 """Tests ``AddFilteredStack`` return None for inf priority stack buffer."""
wrengr 2016/12/22 22:43:00 for all these docstrings "Tests ``foo`` return bla
Sharu Jiang 2016/12/23 00:26:20 Done.
238 frame_list = [
239 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32]),
240 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])]
241 stack_buffer = CallStackBuffer(0, frame_list=frame_list)
242 stacktrace_buffer = StacktraceBuffer()
243 stacktrace_buffer.AddFilteredStack(stack_buffer)
244 self.assertEqual(len(stacktrace_buffer.stacks), 1)
245
246 def testFilterInfinityPriorityStackBuffer(self):
247 """Tests ``AddFilteredStack`` return None for inf priority stack buffer."""
248 stack_buffer = CallStackBuffer(priority=float('inf'))
249 stacktrace_buffer = StacktraceBuffer(filters=[self._DummyFilter])
250 stacktrace_buffer.AddFilteredStack(stack_buffer)
251 self.assertEqual(len(stacktrace_buffer.stacks), 0)
252
253 def testFilterEmptyStackBuffer(self):
254 """Tests ``AddFilteredStack`` return None for empty stack buffer."""
255 stack_buffer = CallStackBuffer(frame_list=[])
256 stacktrace_buffer = StacktraceBuffer(filters=[self._DummyFilter])
257 stacktrace_buffer.AddFilteredStack(stack_buffer)
258 self.assertEqual(len(stacktrace_buffer.stacks), 0)
259
260 def testFilterAllFrames(self):
261 """Tests ``AddFilteredStack`` filters all frames and resturn None."""
262 frame_list = [
263 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32]),
264 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])]
265 stack_buffer = CallStackBuffer(0, frame_list=frame_list)
266
267 def _MockFilterAllFrames(stack_buffer):
268 stack_buffer.frames = None
269 return stack_buffer
270
271 stacktrace_buffer = StacktraceBuffer(filters=[_MockFilterAllFrames])
272 stacktrace_buffer.AddFilteredStack(stack_buffer)
273 self.assertEqual(len(stacktrace_buffer.stacks), 0)
274
275 def testFilterSomeFrames(self):
276 """Tests ``AddFilteredStack`` filters some frames."""
277 frame_list = [
278 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32]),
279 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])]
280 stack_buffer = CallStackBuffer(0, frame_list=frame_list)
281
282 def _MockKeepFirstFrame(stack):
283 stack.frames = stack.frames[:1]
284 return stack
285
286 stacktrace_buffer = StacktraceBuffer(filters=[_MockKeepFirstFrame])
287 stacktrace_buffer.AddFilteredStack(stack_buffer)
288 self._VerifyTwoCallStacksEqual(
289 stacktrace_buffer.stacks[0],
290 CallStackBuffer(stack_buffer.priority, frame_list=frame_list[:1]))
291
233 def testEmptyStacktraceBufferToStacktrace(self): 292 def testEmptyStacktraceBufferToStacktrace(self):
234 """Tests ``ToStacktrace`` returns None for empty stacktrace buffer.""" 293 """Tests ``ToStacktrace`` returns None for empty stacktrace buffer."""
235 self.assertIsNone(StacktraceBuffer([]).ToStacktrace()) 294 self.assertIsNone(StacktraceBuffer([]).ToStacktrace())
OLDNEW
« appengine/findit/crash/stacktrace.py ('K') | « appengine/findit/crash/test/stacktrace_parser_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698