Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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()) |
| OLD | NEW |