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

Side by Side Diff: dashboard/dashboard/pinpoint/handlers/new_test.py

Issue 2996473002: [pinpoint] Add QuestGenerator object. (Closed)
Patch Set: Created 3 years, 4 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 json 5 import json
6 6
7 import mock 7 import mock
8 import webapp2 8 import webapp2
9 import webtest 9 import webtest
10 10
11 from google.appengine.api import users 11 from google.appengine.api import users
12 12
13 from dashboard.api import api_auth 13 from dashboard.api import api_auth
14 from dashboard.common import namespaced_stored_object 14 from dashboard.common import namespaced_stored_object
15 from dashboard.common import testing_common 15 from dashboard.common import testing_common
16 from dashboard.common import utils 16 from dashboard.common import utils
17 from dashboard.services import gitiles_service 17 from dashboard.services import gitiles_service
18 from dashboard.pinpoint.handlers import new 18 from dashboard.pinpoint.handlers import new
19 from dashboard.pinpoint.models import job as job_module 19 from dashboard.pinpoint.models import job as job_module
20 from dashboard.pinpoint.models import test_config
20 21
21 AUTHORIZED_USER = users.User(email='authorized_person@chromium.org', 22 AUTHORIZED_USER = users.User(email='authorized_person@chromium.org',
22 _auth_domain='google.com') 23 _auth_domain='google.com')
23 UNAUTHORIZED_USER = users.User(email='foo@bar.com', _auth_domain='bar.com') 24 UNAUTHORIZED_USER = users.User(email='foo@bar.com', _auth_domain='bar.com')
24 25
25 26
26 class NewTest(testing_common.TestCase): 27 class NewTest(testing_common.TestCase):
27 28
28 def setUp(self): 29 def setUp(self):
29 super(NewTest, self).setUp() 30 super(NewTest, self).setUp()
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 @mock.patch.object(gitiles_service, 'CommitInfo', mock.MagicMock()) 82 @mock.patch.object(gitiles_service, 'CommitInfo', mock.MagicMock())
82 @mock.patch.object(gitiles_service, 'CommitRange') 83 @mock.patch.object(gitiles_service, 'CommitRange')
83 def testPost(self, mock_commit_range): 84 def testPost(self, mock_commit_range):
84 mock_commit_range.return_value = [ 85 mock_commit_range.return_value = [
85 {'commit': '1'}, 86 {'commit': '1'},
86 {'commit': '2'}, 87 {'commit': '2'},
87 {'commit': '3'}, 88 {'commit': '3'},
88 ] 89 ]
89 params = { 90 params = {
90 'configuration': 'chromium-rel-mac11-pro', 91 'configuration': 'chromium-rel-mac11-pro',
91 'test_suite': 'speedometer', 92 'target': 'telemetry_perf_tests',
92 'test': '', 93 'dimensions': '{}',
93 'metric': 'Total', 94 'benchmark': 'speedometer',
94 'auto_explore': '1', 95 'auto_explore': '1',
95 'bug_id': 12345, 96 'bug_id': 12345,
96 'start_repository': 'src', 97 'start_repository': 'src',
97 'start_git_hash': '1', 98 'start_git_hash': '1',
98 'end_repository': 'src', 99 'end_repository': 'src',
99 'end_git_hash': '3' 100 'end_git_hash': '3'
100 } 101 }
101 response = self.testapp.post('/api/new', params, status=200) 102 response = self.testapp.post('/api/new', params, status=200)
102 result = json.loads(response.body) 103 result = json.loads(response.body)
103 self.assertIn('jobId', result) 104 self.assertIn('jobId', result)
104 self.assertEqual( 105 self.assertEqual(
105 result['jobUrl'], 106 result['jobUrl'],
106 'https://testbed.example.com/job/%s' % result['jobId']) 107 'https://testbed.example.com/job/%s' % result['jobId'])
107 108
108 def testPost_MetricButNoTestSuite(self): 109 def testPost_InvalidTestConfig(self):
109 params = { 110 params = {
110 'configuration': 'chromium-rel-mac11-pro', 111 'configuration': 'chromium-rel-mac11-pro',
111 'test_suite': '', 112 'target': 'telemetry_perf_tests',
112 'test': '', 113 'dimensions': '{}',
113 'metric': 'Total', 114 # telemetry_perf_tests requires a benchmark field, which is missing.
114 'auto_explore': '1', 115 'auto_explore': '1',
115 'bug_id': 12345, 116 'bug_id': 12345,
116 'start_repository': 'src', 117 'start_repository': 'src',
117 'start_git_hash': '1', 118 'start_git_hash': '1',
118 'end_repository': 'src', 119 'end_repository': 'src',
119 'end_git_hash': '3' 120 'end_git_hash': '3'
120 } 121 }
121 response = self.testapp.post('/api/new', params, status=200) 122 response = self.testapp.post('/api/new', params, status=200)
122 self.assertEqual({'error': new._ERROR_METRIC_NO_TEST_SUITE}, 123 self.assertEqual({'error': test_config._ERROR_NO_BENCHMARK},
123 json.loads(response.body)) 124 json.loads(response.body))
124 125
125 @mock.patch.object( 126 @mock.patch.object(
126 gitiles_service, 'CommitInfo', 127 gitiles_service, 'CommitInfo',
127 mock.MagicMock(side_effect=gitiles_service.NotFoundError)) 128 mock.MagicMock(side_effect=gitiles_service.NotFoundError('message')))
128 def testPost_InvalidChange(self): 129 def testPost_InvalidChange(self):
129 params = { 130 params = {
130 'configuration': 'chromium-rel-mac11-pro', 131 'configuration': 'chromium-rel-mac11-pro',
131 'test_suite': 'speedometer',
132 'test': '',
133 'metric': 'Total',
134 'auto_explore': '1', 132 'auto_explore': '1',
135 'bug_id': 12345, 133 'bug_id': 12345,
136 'start_repository': 'src', 134 'start_repository': 'src',
137 'start_git_hash': '1', 135 'start_git_hash': '1',
138 'end_repository': 'src', 136 'end_repository': 'src',
139 'end_git_hash': '3' 137 'end_git_hash': '3'
140 } 138 }
141 response = self.testapp.post('/api/new', params, status=200) 139 response = self.testapp.post('/api/new', params, status=200)
142 self.assertEqual({'error': 'NotFoundError()'}, 140 self.assertEqual({'error': 'message'},
143 json.loads(response.body)) 141 json.loads(response.body))
144 142
145 def testPost_InvalidBug(self): 143 def testPost_InvalidBug(self):
146 params = { 144 params = {
147 'configuration': 'chromium-rel-mac11-pro', 145 'configuration': 'chromium-rel-mac11-pro',
148 'test_suite': 'speedometer',
149 'test': '',
150 'metric': 'Total',
151 'auto_explore': '1', 146 'auto_explore': '1',
152 'bug_id': 'not_an_int', 147 'bug_id': 'not_an_int',
153 'start_repository': 'src', 148 'start_repository': 'src',
154 'start_git_hash': '1', 149 'start_git_hash': '1',
155 'end_repository': 'src', 150 'end_repository': 'src',
156 'end_git_hash': '3' 151 'end_git_hash': '3'
157 } 152 }
158 response = self.testapp.post('/api/new', params, status=200) 153 response = self.testapp.post('/api/new', params, status=200)
159 self.assertEqual({'error': new._ERROR_BUG_ID}, 154 self.assertEqual({'error': new._ERROR_BUG_ID},
160 json.loads(response.body)) 155 json.loads(response.body))
161 156
162 @mock.patch( 157 @mock.patch(
163 'dashboard.services.issue_tracker_service.IssueTrackerService', 158 'dashboard.services.issue_tracker_service.IssueTrackerService',
164 mock.MagicMock()) 159 mock.MagicMock())
165 @mock.patch.object(utils, 'ServiceAccountHttp', mock.MagicMock()) 160 @mock.patch.object(utils, 'ServiceAccountHttp', mock.MagicMock())
166 @mock.patch.object(gitiles_service, 'CommitInfo', mock.MagicMock()) 161 @mock.patch.object(gitiles_service, 'CommitInfo', mock.MagicMock())
167 @mock.patch.object(gitiles_service, 'CommitRange') 162 @mock.patch.object(gitiles_service, 'CommitRange')
168 def testPost_EmptyBug(self, mock_commit_range): 163 def testPost_EmptyBug(self, mock_commit_range):
169 mock_commit_range.return_value = [ 164 mock_commit_range.return_value = [
170 {'commit': '1'}, 165 {'commit': '1'},
171 {'commit': '2'}, 166 {'commit': '2'},
172 {'commit': '3'}, 167 {'commit': '3'},
173 ] 168 ]
174 params = { 169 params = {
175 'configuration': 'chromium-rel-mac11-pro', 170 'configuration': 'chromium-rel-mac11-pro',
176 'test_suite': 'speedometer',
177 'test': '',
178 'metric': 'Total',
179 'auto_explore': '1', 171 'auto_explore': '1',
180 'bug_id': '', 172 'bug_id': '',
181 'start_repository': 'src', 173 'start_repository': 'src',
182 'start_git_hash': '1', 174 'start_git_hash': '1',
183 'end_repository': 'src', 175 'end_repository': 'src',
184 'end_git_hash': '3' 176 'end_git_hash': '3'
185 } 177 }
186 response = self.testapp.post('/api/new', params, status=200) 178 response = self.testapp.post('/api/new', params, status=200)
187 result = json.loads(response.body) 179 result = json.loads(response.body)
188 self.assertIn('jobId', result) 180 self.assertIn('jobId', result)
189 self.assertEqual( 181 self.assertEqual(
190 result['jobUrl'], 182 result['jobUrl'],
191 'https://testbed.example.com/job/%s' % result['jobId']) 183 'https://testbed.example.com/job/%s' % result['jobId'])
192 job = job_module.Job.query().get() 184 job = job_module.Job.query().get()
193 self.assertEqual(None, job.bug_id) 185 self.assertEqual(None, job.bug_id)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698