| Index: dashboard/dashboard/pinpoint_request_test.py
|
| diff --git a/dashboard/dashboard/pinpoint_request_test.py b/dashboard/dashboard/pinpoint_request_test.py
|
| index a076a505789db81c17215a15b73cba12c58ab85b..38de7f656eb3b3dc4a4c9cc0a437d491c0a3faac 100644
|
| --- a/dashboard/dashboard/pinpoint_request_test.py
|
| +++ b/dashboard/dashboard/pinpoint_request_test.py
|
| @@ -36,13 +36,277 @@ class PinpointNewPrefillRequestHandlerTest(testing_common.TestCase):
|
| mock_story_filter.assert_called_with('foo')
|
|
|
|
|
| -class PinpointNewRequestHandlerTest(testing_common.TestCase):
|
| +class PinpointNewPerfTryRequestHandlerTest(testing_common.TestCase):
|
|
|
| def setUp(self):
|
| - super(PinpointNewRequestHandlerTest, self).setUp()
|
| + super(PinpointNewPerfTryRequestHandlerTest, self).setUp()
|
|
|
| app = webapp2.WSGIApplication(
|
| - [(r'/pinpoint/new', pinpoint_request.PinpointNewRequestHandler)])
|
| + [(r'/pinpoint/new',
|
| + pinpoint_request.PinpointNewPerfTryRequestHandler)])
|
| + self.testapp = webtest.TestApp(app)
|
| +
|
| + self.SetCurrentUser('foo@chromium.org')
|
| +
|
| + namespaced_stored_object.Set('bot_dimensions_map', {
|
| + 'mac': [
|
| + {'key': 'foo', 'value': 'mac_dimensions'}
|
| + ],
|
| + 'android-webview-nexus5x': [
|
| + {'key': 'foo', 'value': 'android_dimensions'}
|
| + ]
|
| + })
|
| +
|
| + namespaced_stored_object.Set('repositories', {
|
| + 'chromium': {'some': 'params'},
|
| + 'v8': {'more': 'params'}
|
| + })
|
| +
|
| + namespaced_stored_object.Set('bot_browser_map', [
|
| + ['android-webview', 'webview'],
|
| + ['', 'release']
|
| + ])
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=False))
|
| + def testPost_NotSheriff(self):
|
| + response = self.testapp.post('/pinpoint/new')
|
| + self.assertEqual(
|
| + {u'error': u'User "foo@chromium.org" not authorized.'},
|
| + json.loads(response.body))
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + @mock.patch.object(pinpoint_service, 'NewJob')
|
| + @mock.patch.object(
|
| + pinpoint_request, 'PinpointParamsFromPerfTryParams',
|
| + mock.MagicMock(return_value={'test': 'result'}))
|
| + def testPost_Succeeds(self, mock_pinpoint):
|
| + mock_pinpoint.return_value = {'foo': 'bar'}
|
| + self.SetCurrentUser('foo@chromium.org')
|
| + params = {'a': 'b', 'c': 'd'}
|
| + response = self.testapp.post('/pinpoint/new', params)
|
| +
|
| + expected_args = mock.call({'test': 'result'})
|
| + self.assertEqual([expected_args], mock_pinpoint.call_args_list)
|
| + self.assertEqual({'foo': 'bar'}, json.loads(response.body))
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=False))
|
| + def testPinpointParams_InvalidSheriff_RaisesError(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/foo/blah/foo'
|
| + }
|
| + with self.assertRaises(pinpoint_request.InvalidParamsError):
|
| + pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + def testPinpointParams_BotUndefined_ReturnsError(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/foo/blah/foo',
|
| + 'bisect_mode': 'performance',
|
| + 'story_filter': '',
|
| + }
|
| + with self.assertRaises(pinpoint_request.InvalidParamsError):
|
| + pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + def testPinpointParams_NonTelemetry_RaisesError(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/mac/cc_perftests/foo',
|
| + 'start_commit': 'abcd1234',
|
| + 'end_commit': 'efgh5678',
|
| + 'start_repository': 'chromium',
|
| + 'end_repository': 'chromium',
|
| + }
|
| + with self.assertRaises(pinpoint_request.InvalidParamsError):
|
| + pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + def testPinpointParams_IsolateTarget_Telemetry(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/mac/system_health/foo',
|
| + 'start_commit': 'abcd1234',
|
| + 'end_commit': 'efgh5678',
|
| + 'start_repository': 'chromium',
|
| + 'end_repository': 'chromium',
|
| + 'extra_telemetry_args': [['--extra-trace-args', 'abc,123,foo']],
|
| + }
|
| + results = pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + self.assertEqual('mac', results['configuration'])
|
| + self.assertEqual('release', results['browser'])
|
| + self.assertEqual('system_health', results['benchmark'])
|
| + self.assertEqual('', results['chart'])
|
| + self.assertEqual('telemetry_perf_tests', results['target'])
|
| + self.assertEqual('foo@chromium.org', results['email'])
|
| + self.assertEqual('chromium', results['start_repository'])
|
| + self.assertEqual('abcd1234', results['start_git_hash'])
|
| + self.assertEqual('chromium', results['end_repository'])
|
| + self.assertEqual('efgh5678', results['end_git_hash'])
|
| + self.assertEqual('0', results['auto_explore'])
|
| + self.assertEqual('', results['bug_id'])
|
| + self.assertEqual('', results['story'])
|
| + self.assertEqual(
|
| + [['--extra-trace-args', 'abc,123,foo']],
|
| + json.loads(results['extra_telemetry_args']))
|
| + self.assertEqual(
|
| + [{'key': 'foo', 'value': 'mac_dimensions'}],
|
| + json.loads(results['dimensions']))
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + def testPinpointParams_IsolateTarget_WebviewTelemetry(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
|
| + 'start_commit': 'abcd1234',
|
| + 'end_commit': 'efgh5678',
|
| + 'start_repository': 'chromium',
|
| + 'end_repository': 'chromium',
|
| + 'extra_telemetry_args': '',
|
| + }
|
| + results = pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + self.assertEqual('android-webview-nexus5x', results['configuration'])
|
| + self.assertEqual('webview', results['browser'])
|
| + self.assertEqual('system_health', results['benchmark'])
|
| + self.assertEqual('', results['chart'])
|
| + self.assertEqual('telemetry_perf_webview_tests', results['target'])
|
| + self.assertEqual('foo@chromium.org', results['email'])
|
| + self.assertEqual('chromium', results['start_repository'])
|
| + self.assertEqual('abcd1234', results['start_git_hash'])
|
| + self.assertEqual('chromium', results['end_repository'])
|
| + self.assertEqual('efgh5678', results['end_git_hash'])
|
| + self.assertEqual('0', results['auto_explore'])
|
| + self.assertEqual('', results['bug_id'])
|
| + self.assertEqual(
|
| + [{'key': 'foo', 'value': 'android_dimensions'}],
|
| + json.loads(results['dimensions']))
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + def testPinpointParams_StartRepositoryInvalid_RaisesError(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
|
| + 'start_commit': 'abcd1234',
|
| + 'end_commit': 'efgh5678',
|
| + 'start_repository': 'foo',
|
| + 'end_repository': 'chromium',
|
| + 'extra_telemetry_args': '',
|
| + }
|
| + with self.assertRaises(pinpoint_request.InvalidParamsError):
|
| + pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + def testPinpointParams_StartRepositoryNoChromium_RaisesError(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
|
| + 'start_commit': 'abcd1234',
|
| + 'end_commit': 'efgh5678',
|
| + 'start_repository': 'v8',
|
| + 'end_repository': 'chromium',
|
| + 'extra_telemetry_args': '',
|
| + }
|
| + with self.assertRaises(pinpoint_request.InvalidParamsError):
|
| + pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + def testPinpointParams_EndRepositoryNoChromium_RaisesError(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
|
| + 'start_commit': 'abcd1234',
|
| + 'end_commit': 'efgh5678',
|
| + 'start_repository': 'chromium',
|
| + 'end_repository': 'v8',
|
| + 'extra_telemetry_args': '',
|
| + }
|
| + with self.assertRaises(pinpoint_request.InvalidParamsError):
|
| + pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + @mock.patch.object(
|
| + pinpoint_request.crrev_service, 'GetNumbering',
|
| + mock.MagicMock(return_value={'git_sha': 'abcd'}))
|
| + def testPinpointParams_ConvertsCommitsToGitHashes(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
|
| + 'start_commit': '1234',
|
| + 'end_commit': '5678',
|
| + 'start_repository': 'chromium',
|
| + 'end_repository': 'chromium',
|
| + 'extra_telemetry_args': '',
|
| + }
|
| + results = pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + self.assertEqual('abcd', results['start_git_hash'])
|
| + self.assertEqual('abcd', results['end_git_hash'])
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + @mock.patch.object(
|
| + pinpoint_request.crrev_service, 'GetNumbering')
|
| + def testPinpointParams_SkipsConvertingHashes(self, mock_crrev):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
|
| + 'start_commit': 'abcd1234',
|
| + 'end_commit': 'efgh5678',
|
| + 'start_repository': 'chromium',
|
| + 'end_repository': 'chromium',
|
| + 'extra_telemetry_args': '',
|
| + }
|
| + results = pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + self.assertEqual('abcd1234', results['start_git_hash'])
|
| + self.assertEqual('efgh5678', results['end_git_hash'])
|
| + self.assertFalse(mock_crrev.called)
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + def testPinpointParams_InvalidRepositoryCommitPosition(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
|
| + 'start_commit': '123',
|
| + 'end_commit': '456',
|
| + 'start_repository': 'v8',
|
| + 'end_repository': 'v8',
|
| + 'extra_telemetry_args': '',
|
| + }
|
| + with self.assertRaises(pinpoint_request.InvalidParamsError):
|
| + pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| + @mock.patch.object(
|
| + utils, 'IsValidSheriffUser', mock.MagicMock(return_value=True))
|
| + @mock.patch.object(
|
| + pinpoint_request.crrev_service, 'GetNumbering',
|
| + mock.MagicMock(return_value={'error': {'message': 'foo'}}))
|
| + def testPinpointParams_CrrevFails(self):
|
| + params = {
|
| + 'test_path': 'ChromiumPerf/android-webview-nexus5x/system_health/foo',
|
| + 'start_commit': '123',
|
| + 'end_commit': '456',
|
| + 'start_repository': 'v8',
|
| + 'end_repository': 'v8',
|
| + 'extra_telemetry_args': '',
|
| + }
|
| + with self.assertRaises(pinpoint_request.InvalidParamsError):
|
| + pinpoint_request.PinpointParamsFromPerfTryParams(params)
|
| +
|
| +
|
| +
|
| +class PinpointNewBisectRequestHandlerTest(testing_common.TestCase):
|
| +
|
| + def setUp(self):
|
| + super(PinpointNewBisectRequestHandlerTest, self).setUp()
|
| +
|
| + app = webapp2.WSGIApplication(
|
| + [(r'/pinpoint/new',
|
| + pinpoint_request.PinpointNewBisectRequestHandler)])
|
| self.testapp = webtest.TestApp(app)
|
|
|
| self.SetCurrentUser('foo@chromium.org')
|
|
|