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

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

Issue 2562623004: Making CallStack immutable, so it can be hashable (Closed)
Patch Set: Addressing 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
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 import textwrap 5 import textwrap
6 6
7 from common.dependency import Dependency 7 from common.dependency import Dependency
8 from crash.chromecrash_parser import ChromeCrashParser 8 from crash.chromecrash_parser import ChromeCrashParser
9 from crash.stacktrace import StackFrame 9 from crash.stacktrace import StackFrame
10 from crash.stacktrace import CallStack 10 from crash.stacktrace import CallStack
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 """ 51 """
52 CRASHED [EXC @ 0x508] 52 CRASHED [EXC @ 0x508]
53 #0 0x7fee in a::c(p* &d) src/f0.cc:177 53 #0 0x7fee in a::c(p* &d) src/f0.cc:177
54 #1 0x4b6e in a::d(a* c) src/f1.cc:227 54 #1 0x4b6e in a::d(a* c) src/f1.cc:227
55 #2 0x7ff9 in a::e(int) src/f2.cc:87:1 55 #2 0x7ff9 in a::e(int) src/f2.cc:87:1
56 """ 56 """
57 ) 57 )
58 58
59 stacktrace = parser.Parse(stacktrace_string, deps) 59 stacktrace = parser.Parse(stacktrace_string, deps)
60 60
61 expected_callstack = CallStack(0) 61 expected_stacktrace = Stacktrace([CallStack(0, frame_list=[
62 expected_callstack.extend( 62 StackFrame(0, 'src/', 'a::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]),
63 [StackFrame(0, 'src/', 'a::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]), 63 StackFrame(1, 'src/', 'a::d(a* c)', 'f1.cc', 'src/f1.cc', [227]),
64 StackFrame(1, 'src/', 'a::d(a* c)', 'f1.cc', 'src/f1.cc', [227]), 64 StackFrame(2, 'src/', 'a::e(int)', 'f2.cc', 'src/f2.cc', [87, 88])])])
65 StackFrame(2, 'src/', 'a::e(int)', 'f2.cc', 'src/f2.cc', [87, 88])])
66
67 expected_stacktrace = Stacktrace()
68 expected_stacktrace.append(expected_callstack)
69 65
70 self._VerifyTwoStacktracesEqual(stacktrace, expected_stacktrace) 66 self._VerifyTwoStacktracesEqual(stacktrace, expected_stacktrace)
71 67
72 def testChromeCrashParserParseLineJavaCallstack(self): 68 def testChromeCrashParserParseLineJavaCallstack(self):
73 parser = ChromeCrashParser() 69 parser = ChromeCrashParser()
74 deps = {'src/': Dependency('src/', 'https://repo', '1')} 70 deps = {'src/': Dependency('src/', 'https://repo', '1')}
75 stacktrace_string = textwrap.dedent( 71 stacktrace_string = textwrap.dedent(
76 """ 72 """
77 (JAVA) CRASHED [EXC @ 0x508] 73 (JAVA) CRASHED [EXC @ 0x508]
78 #0 0x7fee in a.f0.c f0.java:177 74 #0 0x7fee in a.f0.c f0.java:177
79 #1 0x4b6e in org.chromium.chrome.browser.a.f1.d f1.java:227 75 #1 0x4b6e in org.chromium.chrome.browser.a.f1.d f1.java:227
80 #2 0x7ff9 in a.f2.e f2.java:87:1 76 #2 0x7ff9 in a.f2.e f2.java:87:1
81 """ 77 """
82 ) 78 )
83 79
84 stacktrace = parser.Parse(stacktrace_string, deps) 80 stacktrace = parser.Parse(stacktrace_string, deps)
85 81
86 expected_callstack = CallStack(0, language_type=CallStackLanguageType.JAVA) 82 expected_stacktrace = Stacktrace([CallStack(0,
87 expected_callstack.extend( 83 language_type=CallStackLanguageType.JAVA,
88 [StackFrame(0, '', 'a.f0.c', 'a/f0.java', 'a/f0.java', [177]), 84 frame_list=[
89 StackFrame( 85 StackFrame(0, '', 'a.f0.c', 'a/f0.java', 'a/f0.java', [177]),
90 1, 'src/', 'org.chromium.chrome.browser.a.f1.d', 86 StackFrame(
91 'chrome/android/java/src/org/chromium/chrome/browser/a/f1.java', 87 1, 'src/', 'org.chromium.chrome.browser.a.f1.d',
92 'src/chrome/android/java/src/org/chromium/chrome/' 88 'chrome/android/java/src/org/chromium/chrome/browser/a/f1.java',
93 'browser/a/f1.java', 89 'src/chrome/android/java/src/org/chromium/chrome/'
94 [227]), 90 'browser/a/f1.java',
95 StackFrame(2, '', 'a.f2.e', 'a/f2.java', 'a/f2.java', [87, 88])]) 91 [227]),
96 92 StackFrame(2, '', 'a.f2.e', 'a/f2.java', 'a/f2.java', [87, 88])])])
97 expected_stacktrace = Stacktrace()
98 expected_stacktrace.append(expected_callstack)
99 93
100 self._VerifyTwoStacktracesEqual(stacktrace, expected_stacktrace) 94 self._VerifyTwoStacktracesEqual(stacktrace, expected_stacktrace)
101 95
102 def testChromeCrashParserParseLineMultipleCallstacks(self): 96 def testChromeCrashParserParseLineMultipleCallstacks(self):
103 parser = ChromeCrashParser() 97 parser = ChromeCrashParser()
104 deps = {'src/': Dependency('src/', 'https://repo', '1')} 98 deps = {'src/': Dependency('src/', 'https://repo', '1')}
105 stacktrace_string = textwrap.dedent( 99 stacktrace_string = textwrap.dedent(
106 """ 100 """
107 CRASHED [EXC @ 0x66] 101 CRASHED [EXC @ 0x66]
108 #0 0x7fee in a::b::c(p* &d) src/f0.cc:177 102 #0 0x7fee in a::b::c(p* &d) src/f0.cc:177
109 #1 0x4b6e in a::b::d(a* c) src/f1.cc:227 103 #1 0x4b6e in a::b::d(a* c) src/f1.cc:227
110 104
111 CRASHED [EXC @ 0x508] 105 CRASHED [EXC @ 0x508]
112 #0 0x8fee in e::f::g(p* &d) src/f.cc:20:2 106 #0 0x8fee in e::f::g(p* &d) src/f.cc:20:2
113 #1 0x1fae in h::i::j(p* &d) src/ff.cc:9:1 107 #1 0x1fae in h::i::j(p* &d) src/ff.cc:9:1
114 """ 108 """
115 ) 109 )
116 110
117 stacktrace = parser.Parse(stacktrace_string, deps) 111 stacktrace = parser.Parse(stacktrace_string, deps)
118 112
119 expected_callstack0 = CallStack(0) 113 expected_callstack0 = CallStack(0, frame_list=[
120 expected_callstack0.extend( 114 StackFrame(0, 'src/', 'a::b::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]),
121 [StackFrame(0, 'src/', 'a::b::c(p* &d)', 'f0.cc', 'src/f0.cc', [177]), 115 StackFrame(1, 'src/', 'a::b::d(a* c)', 'f1.cc', 'src/f1.cc', [227])])
122 StackFrame(1, 'src/', 'a::b::d(a* c)', 'f1.cc', 'src/f1.cc', [227])])
123 116
124 expected_callstack1 = CallStack(0) 117 expected_callstack1 = CallStack(0, frame_list=[
125 expected_callstack1.extend( 118 StackFrame(
126 [StackFrame(
127 0, 'src/', 'e::f::g(p* &d)', 'f.cc', 'src/f.cc', [20, 21, 22]), 119 0, 'src/', 'e::f::g(p* &d)', 'f.cc', 'src/f.cc', [20, 21, 22]),
128 StackFrame( 120 StackFrame(
129 1, 'src/', 'h::i::j(p* &d)', 'ff.cc', 'src/ff.cc', [9, 10])]) 121 1, 'src/', 'h::i::j(p* &d)', 'ff.cc', 'src/ff.cc', [9, 10])])
130 122
131 expected_stacktrace = Stacktrace() 123 expected_stacktrace = Stacktrace([expected_callstack0, expected_callstack1])
132 expected_stacktrace.extend([expected_callstack0, expected_callstack1])
133 124
134 self._VerifyTwoStacktracesEqual(stacktrace, expected_stacktrace) 125 self._VerifyTwoStacktracesEqual(stacktrace, expected_stacktrace)
OLDNEW
« no previous file with comments | « appengine/findit/crash/test/changelist_classifier_test.py ('k') | appengine/findit/crash/test/component_classifier_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698