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

Side by Side Diff: dashboard/dashboard/pinpoint_request_test.py

Issue 3018723002: .
Patch Set: Created 3 years, 2 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 | « dashboard/dashboard/pinpoint_request.py ('k') | dashboard/dashboard/static/pinpoint.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 json 5 import json
6 import mock 6 import mock
7 7
8 import webapp2 8 import webapp2
9 import webtest 9 import webtest
10 10
(...skipping 18 matching lines...) Expand all
29 @mock.patch.object( 29 @mock.patch.object(
30 pinpoint_request.start_try_job, 'GuessStoryFilter') 30 pinpoint_request.start_try_job, 'GuessStoryFilter')
31 def testPost_CallsGuessStoryFilter(self, mock_story_filter): 31 def testPost_CallsGuessStoryFilter(self, mock_story_filter):
32 mock_story_filter.return_value = 'bar' 32 mock_story_filter.return_value = 'bar'
33 response = self.testapp.post('/pinpoint/new/prefill', {'test_path': 'foo'}) 33 response = self.testapp.post('/pinpoint/new/prefill', {'test_path': 'foo'})
34 self.assertEqual( 34 self.assertEqual(
35 {'story_filter': 'bar'}, json.loads(response.body)) 35 {'story_filter': 'bar'}, json.loads(response.body))
36 mock_story_filter.assert_called_with('foo') 36 mock_story_filter.assert_called_with('foo')
37 37
38 38
39 class PinpointNewRequestHandlerTest(testing_common.TestCase): 39 class PinpointNewPerfTryRequestHandlerTest(testing_common.TestCase):
40 40
41 def setUp(self): 41 def setUp(self):
42 super(PinpointNewRequestHandlerTest, self).setUp() 42 super(PinpointNewPerfTryRequestHandlerTest, self).setUp()
43 43
44 app = webapp2.WSGIApplication( 44 app = webapp2.WSGIApplication(
45 [(r'/pinpoint/new', pinpoint_request.PinpointNewRequestHandler)]) 45 [(r'/pinpoint/new',
46 pinpoint_request.PinpointNewPerfTryRequestHandler)])
46 self.testapp = webtest.TestApp(app) 47 self.testapp = webtest.TestApp(app)
47 48
48 self.SetCurrentUser('foo@chromium.org') 49 self.SetCurrentUser('foo@chromium.org')
50
51 namespaced_stored_object.Set('bot_dimensions_map', {
52 'mac': [
53 {'key': 'foo', 'value': 'mac_dimensions'}
54 ],
55 'android-webview-nexus5x': [
56 {'key': 'foo', 'value': 'android_dimensions'}
57 ]
58 })
59
60 namespaced_stored_object.Set('repositories', {
61 'chromium': {'some': 'params'},
62 'v8': {'more': 'params'}
63 })
64
65 namespaced_stored_object.Set('bot_browser_map', [
66 ['android-webview', 'webview'],
67 ['', 'release']
68 ])
69
70 @mock.patch.object(
71 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=False))
72 def testPost_NotSheriff(self):
73 response = self.testapp.post('/pinpoint/new')
74 self.assertEqual(
75 {u'error': u'User "foo@chromium.org" not authorized.'},
76 json.loads(response.body))
77
78 @mock.patch.object(
79 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
80 @mock.patch.object(pinpoint_service, 'NewJob')
81 @mock.patch.object(
82 pinpoint_request, 'PinpointParamsFromPerfTryParams',
83 mock.MagicMock(return_value={'test': 'result'}))
84 def testPost_Succeeds(self, mock_pinpoint):
85 mock_pinpoint.return_value = {'foo': 'bar'}
86 self.SetCurrentUser('foo@chromium.org')
87 params = {'a': 'b', 'c': 'd'}
88 response = self.testapp.post('/pinpoint/new', params)
89
90 expected_args = mock.call({'test': 'result'})
91 self.assertEqual([expected_args], mock_pinpoint.call_args_list)
92 self.assertEqual({'foo': 'bar'}, json.loads(response.body))
93
94 @mock.patch.object(
95 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=False))
96 def testPinpointParams_InvalidSheriff_RaisesError(self):
97 params = {
98 'test_path': 'ChromiumPerf/foo/blah/foo'
99 }
100 with self.assertRaises(pinpoint_request.InvalidParamsError):
101 pinpoint_request.PinpointParamsFromPerfTryParams(params)
102
103 @mock.patch.object(
104 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
105 def testPinpointParams_BotUndefined_ReturnsError(self):
106 params = {
107 'test_path': 'ChromiumPerf/foo/blah/foo',
108 'bisect_mode': 'performance',
109 'story_filter': '',
110 }
111 with self.assertRaises(pinpoint_request.InvalidParamsError):
112 pinpoint_request.PinpointParamsFromPerfTryParams(params)
113
114 @mock.patch.object(
115 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
116 def testPinpointParams_NonTelemetry_RaisesError(self):
117 params = {
118 'test_path': 'ChromiumPerf/mac/cc_perftests/foo',
119 'start_commit': 'abcd1234',
120 'end_commit': 'efgh5678',
121 'start_repository': 'chromium',
122 'end_repository': 'chromium',
123 }
124 with self.assertRaises(pinpoint_request.InvalidParamsError):
125 pinpoint_request.PinpointParamsFromPerfTryParams(params)
126
127 @mock.patch.object(
128 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
129 def testPinpointParams_IsolateTarget_Telemetry(self):
130 params = {
131 'test_path': 'ChromiumPerf/mac/system_health/foo',
132 'start_commit': 'abcd1234',
133 'end_commit': 'efgh5678',
134 'start_repository': 'chromium',
135 'end_repository': 'chromium',
136 'extra_telemetry_args': [['--extra-trace-args', 'abc,123,foo']],
137 }
138 results = pinpoint_request.PinpointParamsFromPerfTryParams(params)
139
140 self.assertEqual('mac', results['configuration'])
141 self.assertEqual('release', results['browser'])
142 self.assertEqual('system_health', results['benchmark'])
143 self.assertEqual('', results['chart'])
144 self.assertEqual('telemetry_perf_tests', results['target'])
145 self.assertEqual('foo@chromium.org', results['email'])
146 self.assertEqual('chromium', results['start_repository'])
147 self.assertEqual('abcd1234', results['start_git_hash'])
148 self.assertEqual('chromium', results['end_repository'])
149 self.assertEqual('efgh5678', results['end_git_hash'])
150 self.assertEqual('0', results['auto_explore'])
151 self.assertEqual('', results['bug_id'])
152 self.assertEqual('', results['story'])
153 self.assertEqual(
154 [['--extra-trace-args', 'abc,123,foo']],
155 json.loads(results['extra_telemetry_args']))
156 self.assertEqual(
157 [{'key': 'foo', 'value': 'mac_dimensions'}],
158 json.loads(results['dimensions']))
159
160 @mock.patch.object(
161 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
162 def testPinpointParams_IsolateTarget_WebviewTelemetry(self):
163 params = {
164 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
165 'start_commit': 'abcd1234',
166 'end_commit': 'efgh5678',
167 'start_repository': 'chromium',
168 'end_repository': 'chromium',
169 'extra_telemetry_args': '',
170 }
171 results = pinpoint_request.PinpointParamsFromPerfTryParams(params)
172
173 self.assertEqual('android-webview-nexus5x', results['configuration'])
174 self.assertEqual('webview', results['browser'])
175 self.assertEqual('system_health', results['benchmark'])
176 self.assertEqual('', results['chart'])
177 self.assertEqual('telemetry_perf_webview_tests', results['target'])
178 self.assertEqual('foo@chromium.org', results['email'])
179 self.assertEqual('chromium', results['start_repository'])
180 self.assertEqual('abcd1234', results['start_git_hash'])
181 self.assertEqual('chromium', results['end_repository'])
182 self.assertEqual('efgh5678', results['end_git_hash'])
183 self.assertEqual('0', results['auto_explore'])
184 self.assertEqual('', results['bug_id'])
185 self.assertEqual(
186 [{'key': 'foo', 'value': 'android_dimensions'}],
187 json.loads(results['dimensions']))
188
189 @mock.patch.object(
190 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
191 def testPinpointParams_StartRepositoryInvalid_RaisesError(self):
192 params = {
193 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
194 'start_commit': 'abcd1234',
195 'end_commit': 'efgh5678',
196 'start_repository': 'foo',
197 'end_repository': 'chromium',
198 'extra_telemetry_args': '',
199 }
200 with self.assertRaises(pinpoint_request.InvalidParamsError):
201 pinpoint_request.PinpointParamsFromPerfTryParams(params)
202
203 @mock.patch.object(
204 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
205 def testPinpointParams_StartRepositoryNoChromium_RaisesError(self):
206 params = {
207 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
208 'start_commit': 'abcd1234',
209 'end_commit': 'efgh5678',
210 'start_repository': 'v8',
211 'end_repository': 'chromium',
212 'extra_telemetry_args': '',
213 }
214 with self.assertRaises(pinpoint_request.InvalidParamsError):
215 pinpoint_request.PinpointParamsFromPerfTryParams(params)
216
217 @mock.patch.object(
218 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
219 def testPinpointParams_EndRepositoryNoChromium_RaisesError(self):
220 params = {
221 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
222 'start_commit': 'abcd1234',
223 'end_commit': 'efgh5678',
224 'start_repository': 'chromium',
225 'end_repository': 'v8',
226 'extra_telemetry_args': '',
227 }
228 with self.assertRaises(pinpoint_request.InvalidParamsError):
229 pinpoint_request.PinpointParamsFromPerfTryParams(params)
230
231 @mock.patch.object(
232 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
233 @mock.patch.object(
234 pinpoint_request.crrev_service, 'GetNumbering',
235 mock.MagicMock(return_value={'git_sha': 'abcd'}))
236 def testPinpointParams_ConvertsCommitsToGitHashes(self):
237 params = {
238 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
239 'start_commit': '1234',
240 'end_commit': '5678',
241 'start_repository': 'chromium',
242 'end_repository': 'chromium',
243 'extra_telemetry_args': '',
244 }
245 results = pinpoint_request.PinpointParamsFromPerfTryParams(params)
246
247 self.assertEqual('abcd', results['start_git_hash'])
248 self.assertEqual('abcd', results['end_git_hash'])
249
250 @mock.patch.object(
251 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
252 @mock.patch.object(
253 pinpoint_request.crrev_service, 'GetNumbering')
254 def testPinpointParams_SkipsConvertingHashes(self, mock_crrev):
255 params = {
256 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
257 'start_commit': 'abcd1234',
258 'end_commit': 'efgh5678',
259 'start_repository': 'chromium',
260 'end_repository': 'chromium',
261 'extra_telemetry_args': '',
262 }
263 results = pinpoint_request.PinpointParamsFromPerfTryParams(params)
264
265 self.assertEqual('abcd1234', results['start_git_hash'])
266 self.assertEqual('efgh5678', results['end_git_hash'])
267 self.assertFalse(mock_crrev.called)
268
269 @mock.patch.object(
270 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
271 def testPinpointParams_InvalidRepositoryCommitPosition(self):
272 params = {
273 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
274 'start_commit': '123',
275 'end_commit': '456',
276 'start_repository': 'v8',
277 'end_repository': 'v8',
278 'extra_telemetry_args': '',
279 }
280 with self.assertRaises(pinpoint_request.InvalidParamsError):
281 pinpoint_request.PinpointParamsFromPerfTryParams(params)
282
283 @mock.patch.object(
284 utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
285 @mock.patch.object(
286 pinpoint_request.crrev_service, 'GetNumbering',
287 mock.MagicMock(return_value={'error': {'message': 'foo'}}))
288 def testPinpointParams_CrrevFails(self):
289 params = {
290 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
291 'start_commit': '123',
292 'end_commit': '456',
293 'start_repository': 'v8',
294 'end_repository': 'v8',
295 'extra_telemetry_args': '',
296 }
297 with self.assertRaises(pinpoint_request.InvalidParamsError):
298 pinpoint_request.PinpointParamsFromPerfTryParams(params)
299
300
301
302 class PinpointNewBisectRequestHandlerTest(testing_common.TestCase):
303
304 def setUp(self):
305 super(PinpointNewBisectRequestHandlerTest, self).setUp()
306
307 app = webapp2.WSGIApplication(
308 [(r'/pinpoint/new',
309 pinpoint_request.PinpointNewBisectRequestHandler)])
310 self.testapp = webtest.TestApp(app)
311
312 self.SetCurrentUser('foo@chromium.org')
49 313
50 namespaced_stored_object.Set('bot_dimensions_map', { 314 namespaced_stored_object.Set('bot_dimensions_map', {
51 'mac': [ 315 'mac': [
52 {'key': 'foo', 'value': 'mac_dimensions'} 316 {'key': 'foo', 'value': 'mac_dimensions'}
53 ], 317 ],
54 'android-webview-nexus5x': [ 318 'android-webview-nexus5x': [
55 {'key': 'foo', 'value': 'android_dimensions'} 319 {'key': 'foo', 'value': 'android_dimensions'}
56 ] 320 ]
57 }) 321 })
58 322
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 'start_commit': '123', 678 'start_commit': '123',
415 'end_commit': '456', 679 'end_commit': '456',
416 'start_repository': 'v8', 680 'start_repository': 'v8',
417 'end_repository': 'v8', 681 'end_repository': 'v8',
418 'bisect_mode': 'performance', 682 'bisect_mode': 'performance',
419 'story_filter': '', 683 'story_filter': '',
420 } 684 }
421 with self.assertRaises(pinpoint_request.InvalidParamsError): 685 with self.assertRaises(pinpoint_request.InvalidParamsError):
422 pinpoint_request.PinpointParamsFromBisectParams(params) 686 pinpoint_request.PinpointParamsFromBisectParams(params)
423 687
OLDNEW
« no previous file with comments | « dashboard/dashboard/pinpoint_request.py ('k') | dashboard/dashboard/static/pinpoint.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698