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

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: Rebase Created 3 years, 12 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
« no previous file with comments | « appengine/findit/crash/test/callstack_filters_test.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
210 frame_list2 = [ 212 frame_list2 = [
211 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])] 213 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])]
212 214
213 stack1 = CallStackBuffer(0, frame_list=frame_list1) 215 stack1 = CallStackBuffer(0, frame_list=frame_list1)
214 stack2 = CallStackBuffer(1, frame_list=frame_list2) 216 stack2 = CallStackBuffer(1, frame_list=frame_list2)
215 stacktrace = StacktraceBuffer([stack1, stack2]).ToStacktrace() 217 stacktrace = StacktraceBuffer([stack1, stack2]).ToStacktrace()
216 218
217 self._VerifyTwoCallStacksEqual(stacktrace.crash_stack, stack1.ToCallStack()) 219 self._VerifyTwoCallStacksEqual(stacktrace.crash_stack, stack1.ToCallStack())
218 220
219 def testStacktraceBufferWithSignature(self): 221 def testStacktraceBufferWithSignature(self):
220 """Tests using stack with signature as crash_stack with signature.""" 222 """Tests using stack with signature as crash_stack with signature."""
221 frame_list1 = [ 223 frame_list1 = [
222 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32])] 224 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32])]
223 225
224 frame_list2 = [ 226 frame_list2 = [
225 StackFrame(0, 'src/', 'signature_func2', 'f.cc', 'src/f.cc', [32])] 227 StackFrame(0, 'src/', 'signature_func2', 'f.cc', 'src/f.cc', [32])]
226 228
227 stack1 = CallStackBuffer(0, frame_list=frame_list1) 229 stack1 = CallStackBuffer(0, frame_list=frame_list1)
228 stack2 = CallStackBuffer(1, frame_list=frame_list2) 230 stack2 = CallStackBuffer(1, frame_list=frame_list2)
229 stacktrace = StacktraceBuffer([stack1, stack2], 'signature').ToStacktrace() 231 stacktrace = StacktraceBuffer([stack1, stack2], 'signature').ToStacktrace()
230 232
231 self._VerifyTwoCallStacksEqual(stacktrace.crash_stack, stack2.ToCallStack()) 233 self._VerifyTwoCallStacksEqual(stacktrace.crash_stack, stack2.ToCallStack())
232 234
235 def testAddFitleredStackWithNoFilters(self):
236 """Tests that ``AddFilteredStack`` returns None if there is no filters."""
237 frame_list = [
238 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32]),
239 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])]
240 stack_buffer = CallStackBuffer(0, frame_list=frame_list)
241 stacktrace_buffer = StacktraceBuffer()
242 stacktrace_buffer.AddFilteredStack(stack_buffer)
243 self.assertEqual(len(stacktrace_buffer.stacks), 1)
244
245 def testFilterInfinityPriorityStackBuffer(self):
246 """Tests that ``AddFilteredStack`` returns None for inf priority stack."""
247 stack_buffer = CallStackBuffer(priority=float('inf'))
248 stacktrace_buffer = StacktraceBuffer(filters=[self._DummyFilter])
249 stacktrace_buffer.AddFilteredStack(stack_buffer)
250 self.assertEqual(len(stacktrace_buffer.stacks), 0)
251
252 def testFilterEmptyStackBuffer(self):
253 """Tests that ``AddFilteredStack`` returns None for empty stack buffer."""
254 stack_buffer = CallStackBuffer(frame_list=[])
255 stacktrace_buffer = StacktraceBuffer(filters=[self._DummyFilter])
256 stacktrace_buffer.AddFilteredStack(stack_buffer)
257 self.assertEqual(len(stacktrace_buffer.stacks), 0)
258
259 def testFilterAllFrames(self):
260 """Tests that ``AddFilteredStack`` filters all frames and resturns None."""
261 frame_list = [
262 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32]),
263 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])]
264 stack_buffer = CallStackBuffer(0, frame_list=frame_list)
265
266 def _MockFilterAllFrames(stack_buffer):
267 stack_buffer.frames = None
268 return stack_buffer
269
270 stacktrace_buffer = StacktraceBuffer(filters=[_MockFilterAllFrames])
271 stacktrace_buffer.AddFilteredStack(stack_buffer)
272 self.assertEqual(len(stacktrace_buffer.stacks), 0)
273
274 def testFilterSomeFrames(self):
275 """Tests that ``AddFilteredStack`` filters some frames."""
276 frame_list = [
277 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32]),
278 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])]
279 stack_buffer = CallStackBuffer(0, frame_list=frame_list)
280
281 def _MockKeepFirstFrame(stack):
282 stack.frames = stack.frames[:1]
283 return stack
284
285 stacktrace_buffer = StacktraceBuffer(filters=[_MockKeepFirstFrame])
286 stacktrace_buffer.AddFilteredStack(stack_buffer)
287 self._VerifyTwoCallStacksEqual(
288 stacktrace_buffer.stacks[0],
289 CallStackBuffer(stack_buffer.priority, frame_list=frame_list[:1]))
290
233 def testEmptyStacktraceBufferToStacktrace(self): 291 def testEmptyStacktraceBufferToStacktrace(self):
234 """Tests ``ToStacktrace`` returns None for empty stacktrace buffer.""" 292 """Tests that ``ToStacktrace`` returns None for empty stacktrace buffer."""
235 self.assertIsNone(StacktraceBuffer([]).ToStacktrace()) 293 self.assertIsNone(StacktraceBuffer([]).ToStacktrace())
OLDNEW
« no previous file with comments | « appengine/findit/crash/test/callstack_filters_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698