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

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: Rebase and fix delta test. 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
100 chromium_dep = Dependency('src/', 'https://repo', 'rev1') 99 chromium_dep = Dependency('src/', 'https://repo', 'rev1')
101 crash_data._crashed_version_deps = { 100 crash_data._crashed_version_deps = {
102 chromium_dep.path: chromium_dep, 101 chromium_dep.path: chromium_dep,
103 'src/dummy': Dependency('src/dummy', 'https://r', 'rev2')} 102 'src/dummy': Dependency('src/dummy', 'https://r', 'rev2')}
104 stack = CallStack(0, frame_list=[ 103 stack = CallStack(0, frame_list=[
105 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [5])]) 104 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [5])])
106 stacktrace = Stacktrace([stack], stack) 105 stacktrace = Stacktrace([stack], stack)
107 crash_data._stacktrace = stacktrace 106 crash_data._stacktrace = stacktrace
108 self.assertEqual(crash_data.dependencies, 107 self.assertEqual(crash_data.dependencies,
109 {chromium_dep.path: chromium_dep}) 108 {chromium_dep.path: chromium_dep})
110 109
111 def testDependenciesReturnsCache(self): 110 def testDependenciesReturnsCache(self):
112 """Tests that ``dependencies`` returns cached ``_dependencies`` value.""" 111 """Tests that ``dependencies`` returns cached ``_dependencies`` value."""
113 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 112 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
114 crashed_version_deps = {'src/': Dependency('src/', 'https://repo', 'rev')} 113 crashed_version_deps = {'src/': Dependency('src/', 'https://repo', 'rev')}
115 crash_data._dependencies = crashed_version_deps 114 crash_data._dependencies = crashed_version_deps
116 self.assertEqual(crash_data.dependencies, crashed_version_deps) 115 self.assertEqual(crash_data.dependencies, crashed_version_deps)
117 116
118 def testDependencyRollsReturnsCache(self): 117 def testDependencyRollsReturnsCache(self):
119 """Tests that ``dependency_rolls`` returns cached ``_dependency_rolls``.""" 118 """Tests that ``dependency_rolls`` returns cached ``_dependency_rolls``."""
120 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 119 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
121 dep_roll = {'src/': DependencyRoll('src/', 'https://repo', 'rev0', 'rev3')} 120 dep_roll = {'src/': DependencyRoll('src/', 'https://repo', 'rev0', 'rev3')}
122 crash_data._dependency_rolls = dep_roll 121 crash_data._dependency_rolls = dep_roll
123 self.assertEqual(crash_data.dependency_rolls, dep_roll) 122 self.assertEqual(crash_data.dependency_rolls, dep_roll)
124 123
125 def testDependencyRollsWhenRegressionRangeIsEmpty(self): 124 def testDependencyRollsWhenRegressionRangeIsEmpty(self):
126 """Tests that ``regression_rolls`` is {} when regression_range is empty.""" 125 """Tests that ``regression_rolls`` is {} when regression_range is empty."""
127 crash_data = ChromeCrashData(self.GetDummyCrashData(), None) 126 crash_data = ChromeCrashData(self.GetDummyChromeCrashData(), None)
128 crash_data._regression_range = None 127 crash_data._regression_range = None
129 self.assertEqual(crash_data.dependency_rolls, {}) 128 self.assertEqual(crash_data.dependency_rolls, {})
130 129
131 def testDependencyRoll(self): 130 def testDependencyRoll(self):
132 """Tests parsing ``regression_rolls`` from regression_range.""" 131 """Tests parsing ``regression_rolls`` from regression_range."""
133 dep_roll = DependencyRoll('src/', 'https://repo', 'rev1', 'rev6') 132 dep_roll = DependencyRoll('src/', 'https://repo', 'rev1', 'rev6')
134 regression_rolls = { 133 regression_rolls = {
135 dep_roll.path: dep_roll, 134 dep_roll.path: dep_roll,
136 'src/dummy': DependencyRoll('src/dummy', 'https://r', 'rev2', 'rev4'), 135 'src/dummy': DependencyRoll('src/dummy', 'https://r', 'rev2', 'rev4'),
137 'src/add': DependencyRoll('src/add', 'https://rr', None, 'rev5') 136 'src/add': DependencyRoll('src/add', 'https://rr', None, 'rev5')
138 } 137 }
139 138
140 self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict', 139 self.mock(ChromeDependencyFetcher, 'GetDependencyRollsDict',
141 lambda *_: regression_rolls) 140 lambda *_: regression_rolls)
142 crash_data = ChromeCrashData( 141 crash_data = ChromeCrashData(
143 self.GetDummyCrashData(), 142 self.GetDummyChromeCrashData(),
144 ChromeDependencyFetcher(self.GetMockRepoFactory())) 143 ChromeDependencyFetcher(self.GetMockRepoFactory()))
145 144
146 crash_data._regression_range = ('rev1', 'rev6') 145 crash_data._regression_range = ('rev1', 'rev6')
147 chromium_dep = Dependency('src/', 'https://repo', 'rev1') 146 chromium_dep = Dependency('src/', 'https://repo', 'rev1')
148 crash_data._crashed_version_deps = { 147 crash_data._crashed_version_deps = {
149 chromium_dep.path: chromium_dep, 148 chromium_dep.path: chromium_dep,
150 'src/dummy': Dependency('src/dummy', 'https://r', 'rev2')} 149 'src/dummy': Dependency('src/dummy', 'https://r', 'rev2')}
151 stack = CallStack(0, frame_list=[ 150 stack = CallStack(0, frame_list=[
152 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [5])]) 151 StackFrame(0, 'src/', 'func', 'a.cc', 'src/a.cc', [5])])
153 stacktrace = Stacktrace([stack], stack) 152 stacktrace = Stacktrace([stack], stack)
154 crash_data._stacktrace = stacktrace 153 crash_data._stacktrace = stacktrace
155 154
156 self.assertEqual(crash_data.dependency_rolls, {dep_roll.path: dep_roll}) 155 self.assertEqual(crash_data.dependency_rolls, {dep_roll.path: dep_roll})
OLDNEW
« no previous file with comments | « appengine/findit/crash/test/changelist_classifier_test.py ('k') | appengine/findit/crash/test/crash_data_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698