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

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

Issue 2663063007: [Predator] Switch from anonymous dict to CrashData. (Closed)
Patch Set: Fix nits. Created 3 years, 10 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
OLDNEW
1 # Copyright 2017 The Chromium Authors. All rights reserved. 1 # Copyright 2017 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 mock 5 import mock
6 6
7 from common.chrome_dependency_fetcher import ChromeDependencyFetcher 7 from common.chrome_dependency_fetcher import ChromeDependencyFetcher
8 from common.dependency import Dependency 8 from common.dependency import Dependency
9 from common.dependency import DependencyRoll 9 from common.dependency import DependencyRoll
10 from crash.chromecrash_parser import ChromeCrashParser 10 from crash.chromecrash_parser import ChromeCrashParser
11 from crash.chrome_crash_data import ChromeCrashData 11 from crash.chrome_crash_data import ChromeCrashData
12 from crash.crash_report import CrashReport 12 from crash.crash_report import CrashReport
13 from crash.stacktrace import CallStack 13 from crash.stacktrace import CallStack
14 from crash.stacktrace import StackFrame 14 from crash.stacktrace import StackFrame
15 from crash.stacktrace import Stacktrace 15 from crash.stacktrace import Stacktrace
16 from crash.test.predator_testcase import PredatorTestCase 16 from crash.test.predator_testcase import PredatorTestCase
17 from crash.test.stacktrace_test_suite import StacktraceTestSuite 17 from crash.test.stacktrace_test_suite import StacktraceTestSuite
18 18
19 19
20 class ChromeCrashDataTest(StacktraceTestSuite): 20 class ChromeCrashDataTest(StacktraceTestSuite):
21 """Tests ``ChromeCrashData`` class.""" 21 """Tests ``ChromeCrashData`` class."""
22 22
23 def testProperties(self): 23 def testProperties(self):
24 """Tests ``ChromeCrashData`` specific properties.""" 24 """Tests ``ChromeCrashData`` specific properties."""
25 raw_crash_data = self.GetDummyCrashData() 25 raw_crash_data = self.GetDummyChromeCrashData()
26 crash_data = ChromeCrashData(raw_crash_data, None) 26 crash_data = ChromeCrashData(raw_crash_data, None)
27 self.assertEqual(crash_data.channel, 27 self.assertEqual(crash_data.channel,
28 raw_crash_data['customized_data']['channel']) 28 raw_crash_data['customized_data']['channel'])
29 self.assertEqual(crash_data.historical_metadata, 29 self.assertEqual(crash_data.historical_metadata,
30 raw_crash_data['customized_data']['historical_metadata']) 30 raw_crash_data['customized_data']['historical_metadata'])
31 31
32 def testParseStacktraceFailed(self): 32 def testParseStacktraceFailed(self):
33 """Tests that ``stacktrace`` is None when failed to pars stacktrace.""" 33 """Tests that ``stacktrace`` is None when failed to pars stacktrace."""
34 self.mock(ChromeDependencyFetcher, 'GetDependency', lambda *_: {}) 34 self.mock(ChromeDependencyFetcher, 'GetDependency', lambda *_: {})
35 crash_data = ChromeCrashData( 35 crash_data = ChromeCrashData(
36 self.GetDummyCrashData(), 36 self.GetDummyChromeCrashData(),
37 ChromeDependencyFetcher(self.GetMockRepoFactory())) 37 ChromeDependencyFetcher(self.GetMockRepoFactory()))
38 self.mock(ChromeCrashParser, 'Parse', lambda *args, **kwargs: None) 38 self.mock(ChromeCrashParser, 'Parse', lambda *args, **kwargs: None)
39 self.assertIsNone(crash_data.stacktrace) 39 self.assertIsNone(crash_data.stacktrace)
40 40
41 def testParseStacktraceSucceeded(self): 41 def testParseStacktraceSucceeded(self):
42 """Tests parsing ``stacktrace``.""" 42 """Tests parsing ``stacktrace``."""
43 self.mock(ChromeDependencyFetcher, 'GetDependency', lambda *_: {}) 43 self.mock(ChromeDependencyFetcher, 'GetDependency', lambda *_: {})
44 crash_data = ChromeCrashData( 44 crash_data = ChromeCrashData(
45 self.GetDummyCrashData(), 45 self.GetDummyChromeCrashData(),
46 ChromeDependencyFetcher(self.GetMockRepoFactory())) 46 ChromeDependencyFetcher(self.GetMockRepoFactory()))
47 stack = CallStack(0) 47 stack = CallStack(0)
48 stacktrace = Stacktrace([stack], stack) 48 stacktrace = Stacktrace([stack], stack)
49 self.mock(ChromeCrashParser, 'Parse', 49 self.mock(ChromeCrashParser, 'Parse',
50 lambda *args, **kwargs: stacktrace) 50 lambda *args, **kwargs: stacktrace)
51 self._VerifyTwoStacktracesEqual(crash_data.stacktrace, stacktrace) 51 self._VerifyTwoStacktracesEqual(crash_data.stacktrace, stacktrace)
52 52
53 def testParseStacktraceReturnsCache(self): 53 def testParseStacktraceReturnsCache(self):
54 """Tests that ``stacktrace`` returns cached ``_stacktrace`` value.""" 54 """Tests that ``stacktrace`` returns cached ``_stacktrace`` value."""
55 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 55 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
56 stack = CallStack(1) 56 stack = CallStack(1)
57 stacktrace = Stacktrace([stack], stack) 57 stacktrace = Stacktrace([stack], stack)
58 crash_data._stacktrace = stacktrace 58 crash_data._stacktrace = stacktrace
59 self._VerifyTwoStacktracesEqual(crash_data.stacktrace, stacktrace) 59 self._VerifyTwoStacktracesEqual(crash_data.stacktrace, stacktrace)
60 60
61 def testDetectRegressionRangeFailed(self): 61 def testDetectRegressionRangeFailed(self):
62 """Tests that ``regression_range`` is None when detection failed.""" 62 """Tests that ``regression_range`` is None when detection failed."""
63 crash_data = ChromeCrashData( 63 crash_data = ChromeCrashData(
64 self.GetDummyCrashData(), 64 self.GetDummyChromeCrashData(),
65 ChromeDependencyFetcher(self.GetMockRepoFactory())) 65 ChromeDependencyFetcher(self.GetMockRepoFactory()))
66 66
67 with mock.patch('crash.detect_regression_range.DetectRegressionRange', 67 with mock.patch('crash.detect_regression_range.DetectRegressionRange',
68 lambda *_: None): 68 lambda *_: None):
69 self.assertIsNone(crash_data.regression_range) 69 self.assertIsNone(crash_data.regression_range)
70 70
71 def testDetectRegressionRangeSucceeded(self): 71 def testDetectRegressionRangeSucceeded(self):
72 """Tests detecting ``regression_range``.""" 72 """Tests detecting ``regression_range``."""
73 crash_data = ChromeCrashData( 73 crash_data = ChromeCrashData(
74 self.GetDummyCrashData(), 74 self.GetDummyChromeCrashData(),
75 ChromeDependencyFetcher(self.GetMockRepoFactory())) 75 ChromeDependencyFetcher(self.GetMockRepoFactory()))
76 76
77 regression_range = ('1', '3') 77 regression_range = ('1', '3')
78 with mock.patch('crash.detect_regression_range.DetectRegressionRange', 78 with mock.patch('crash.detect_regression_range.DetectRegressionRange',
79 lambda *_: regression_range): 79 lambda *_: regression_range):
80 self.assertEqual(crash_data.regression_range, regression_range) 80 self.assertEqual(crash_data.regression_range, regression_range)
81 81
82 def testDetectRegressionRangeReturnsCache(self): 82 def testDetectRegressionRangeReturnsCache(self):
83 """Tests that ``regression_range`` returns cached ``_regression_range``.""" 83 """Tests that ``regression_range`` returns cached ``_regression_range``."""
84 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 84 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
85 regression_range = ('1', '5') 85 regression_range = ('1', '5')
86 crash_data._regression_range = regression_range 86 crash_data._regression_range = regression_range
87 self.assertEqual(crash_data.regression_range, regression_range) 87 self.assertEqual(crash_data.regression_range, regression_range)
88 88
89 def testCrashedVersionDepsReturnsCache(self): 89 def testCrashedVersionDepsReturnsCache(self):
90 """Tests that ``_CrashedVersionDeps`` returns cached value.""" 90 """Tests that ``_CrashedVersionDeps`` returns cached value."""
91 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 91 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
92 crashed_version_deps = {'src/': Dependency('src/', 'https://repo', 'rev')} 92 crashed_version_deps = {'src/': Dependency('src/', 'https://repo', 'rev')}
93 crash_data._crashed_version_deps = crashed_version_deps 93 crash_data._crashed_version_deps = crashed_version_deps
94 self.assertEqual(crash_data._CrashedVersionDeps(), crashed_version_deps) 94 self.assertEqual(crash_data._CrashedVersionDeps(), crashed_version_deps)
95 95
96 def testDependencies(self): 96 def testDependencies(self):
97 """Tests that ``dependencies`` returns filtered ``_CrashedVersionDeps``.""" 97 """Tests that ``dependencies`` returns filtered ``_CrashedVersionDeps``."""
98 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 98 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
99 99
100 chromium_dep = Dependency('src/', 'https://repo', 'rev1') 100 chromium_dep = Dependency('src/', 'https://repo', 'rev1')
101 crash_data._crashed_version_deps = { 101 crash_data._crashed_version_deps = {
102 chromium_dep.path: chromium_dep, 102 chromium_dep.path: chromium_dep,
103 'src/dummy': Dependency('src/dummy', 'https://r', 'rev2')} 103 'src/dummy': Dependency('src/dummy', 'https://r', 'rev2')}
104 stack = CallStack(0, frame_list=[ 104 stack = CallStack(0, frame_list=[
105 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [5])]) 105 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [5])])
106 stacktrace = Stacktrace([stack], stack) 106 stacktrace = Stacktrace([stack], stack)
107 crash_data._stacktrace = stacktrace 107 crash_data._stacktrace = stacktrace
108 self.assertEqual(crash_data.dependencies, 108 self.assertEqual(crash_data.dependencies,
109 {chromium_dep.path: chromium_dep}) 109 {chromium_dep.path: chromium_dep})
110 110
111 def testDependenciesReturnsCache(self): 111 def testDependenciesReturnsCache(self):
112 """Tests that ``dependencies`` returns cached ``_dependencies`` value.""" 112 """Tests that ``dependencies`` returns cached ``_dependencies`` value."""
113 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 113 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
114 crashed_version_deps = {'src/': Dependency('src/', 'https://repo', 'rev')} 114 crashed_version_deps = {'src/': Dependency('src/', 'https://repo', 'rev')}
115 crash_data._dependencies = crashed_version_deps 115 crash_data._dependencies = crashed_version_deps
116 self.assertEqual(crash_data.dependencies, crashed_version_deps) 116 self.assertEqual(crash_data.dependencies, crashed_version_deps)
117 117
118 def testDependencyRollsReturnsCache(self): 118 def testDependencyRollsReturnsCache(self):
119 """Tests that ``dependency_rolls`` returns cached ``_dependency_rolls``.""" 119 """Tests that ``dependency_rolls`` returns cached ``_dependency_rolls``."""
120 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 120 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
121 dep_roll = {'src/': DependencyRoll('src/', 'https://repo', 'rev0', 'rev3')} 121 dep_roll = {'src/': DependencyRoll('src/', 'https://repo', 'rev0', 'rev3')}
122 crash_data._dependency_rolls = dep_roll 122 crash_data._dependency_rolls = dep_roll
123 self.assertEqual(crash_data.dependency_rolls, dep_roll) 123 self.assertEqual(crash_data.dependency_rolls, dep_roll)
124 124
125 def testDependencyRollsWhenRegressionRangeIsEmpty(self): 125 def testDependencyRollsWhenRegressionRangeIsEmpty(self):
126 """Tests that ``regression_rolls`` is {} when regression_range is empty.""" 126 """Tests that ``regression_rolls`` is {} when regression_range is empty."""
127 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 127 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
128 crash_data._regression_range = None 128 crash_data._regression_range = None
129 self.assertEqual(crash_data.dependency_rolls, {}) 129 self.assertEqual(crash_data.dependency_rolls, {})
130 130
131 def testDependencyRoll(self): 131 def testDependencyRoll(self):
132 """Tests parsing ``regression_rolls`` from regression_range.""" 132 """Tests parsing ``regression_rolls`` from regression_range."""
133 dep_roll = DependencyRoll('src/', 'https://repo', 'rev1', 'rev6') 133 dep_roll = DependencyRoll('src/', 'https://repo', 'rev1', 'rev6')
134 regression_rolls = { 134 regression_rolls = {
135 dep_roll.path: dep_roll, 135 dep_roll.path: dep_roll,
136 'src/dummy': DependencyRoll('src/dummy', 'https://r', 'rev2', 'rev4'), 136 'src/dummy': DependencyRoll('src/dummy', 'https://r', 'rev2', 'rev4'),
137 'src/add': DependencyRoll('src/add', 'https://rr', None, 'rev5') 137 'src/add': DependencyRoll('src/add', 'https://rr', None, 'rev5')
138 } 138 }
139 139
140 self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict', 140 self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict',
141 lambda *_: regression_rolls) 141 lambda *_: regression_rolls)
142 crash_data = ChromeCrashData( 142 crash_data = ChromeCrashData(
143 self.GetDummyCrashData(), 143 self.GetDummyChromeCrashData(),
144 ChromeDependencyFetcher(self.GetMockRepoFactory())) 144 ChromeDependencyFetcher(self.GetMockRepoFactory()))
145 145
146 crash_data._regression_range = ('rev1', 'rev6') 146 crash_data._regression_range = ('rev1', 'rev6')
147 chromium_dep = Dependency('src/', 'https://repo', 'rev1') 147 chromium_dep = Dependency('src/', 'https://repo', 'rev1')
148 crash_data._crashed_version_deps = { 148 crash_data._crashed_version_deps = {
149 chromium_dep.path: chromium_dep, 149 chromium_dep.path: chromium_dep,
150 'src/dummy': Dependency('src/dummy', 'https://r', 'rev2')} 150 'src/dummy': Dependency('src/dummy', 'https://r', 'rev2')}
151 stack = CallStack(0, frame_list=[ 151 stack = CallStack(0, frame_list=[
152 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [5])]) 152 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [5])])
153 stacktrace = Stacktrace([stack], stack) 153 stacktrace = Stacktrace([stack], stack)
154 crash_data._stacktrace = stacktrace 154 crash_data._stacktrace = stacktrace
155 155
156 self.assertEqual(crash_data.dependency_rolls, {dep_roll.path: dep_roll}) 156 self.assertEqual(crash_data.dependency_rolls, {dep_roll.path: dep_roll})
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698