| Index: dashboard/dashboard/post_bisect_results_test.py
|
| diff --git a/dashboard/dashboard/post_bisect_results_test.py b/dashboard/dashboard/post_bisect_results_test.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f46f4c63f06844f64e845c434739f87a12c8ad24
|
| --- /dev/null
|
| +++ b/dashboard/dashboard/post_bisect_results_test.py
|
| @@ -0,0 +1,98 @@
|
| +# Copyright 2016 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +import json
|
| +
|
| +import webapp2
|
| +import webtest
|
| +
|
| +from dashboard import post_bisect_results
|
| +from dashboard import rietveld_service
|
| +from dashboard import testing_common
|
| +from dashboard.models import try_job
|
| +
|
| +_SAMPLE_BISECT_RESULTS_JSON = {
|
| + 'try_job_id': 6789,
|
| + 'bug_id': 4567,
|
| + 'status': 'completed',
|
| + 'bisect_bot': 'linux',
|
| + 'buildbot_log_url': '',
|
| + 'command': ('tools/perf/run_benchmark -v '
|
| + '--browser=release page_cycler.intl_ar_fa_he'),
|
| + 'metric': 'warm_times/page_load_time',
|
| + 'change': '',
|
| + 'score': 99.9,
|
| + 'good_revision': '306475',
|
| + 'bad_revision': '306478',
|
| + 'warnings': None,
|
| + 'abort_reason': None,
|
| + 'culprit_data': {
|
| + 'subject': 'subject',
|
| + 'author': 'author',
|
| + 'email': 'author@email.com',
|
| + 'cl_date': '1/2/2015',
|
| + 'commit_info': 'commit_info',
|
| + 'revisions_links': [],
|
| + 'cl': '1235'
|
| + },
|
| + 'revision_data': [
|
| + {
|
| + 'depot_name': 'chromium',
|
| + 'deps_revision': 1234,
|
| + 'commit_pos': 1234,
|
| + 'mean_value': 70,
|
| + 'std_dev': 0,
|
| + 'values': [70, 70, 70],
|
| + 'result': 'good'
|
| + }, {
|
| + 'depot_name': 'chromium',
|
| + 'deps_revision': 1235,
|
| + 'commit_pos': 1235,
|
| + 'mean_value': 80,
|
| + 'std_dev': 0,
|
| + 'values': [80, 80, 80],
|
| + 'result': 'bad'
|
| + }
|
| + ]
|
| +}
|
| +
|
| +# Sample IP addresses to use in the tests below.
|
| +_WHITELISTED_IP = '123.45.67.89'
|
| +
|
| +
|
| +class PostBisectResultsTest(testing_common.TestCase):
|
| +
|
| + def setUp(self):
|
| + super(PostBisectResultsTest, self).setUp()
|
| + app = webapp2.WSGIApplication([
|
| + ('/post_bisect_results',
|
| + post_bisect_results.PostBisectResultsHandler)])
|
| + self.testapp = webtest.TestApp(app)
|
| + testing_common.SetIpWhitelist([_WHITELISTED_IP])
|
| + self._AddRietveldConfig()
|
| +
|
| + def _AddRietveldConfig(self):
|
| + """Adds a RietveldConfig entity to the datastore.
|
| +
|
| + This is used in order to get the Rietveld URL when requests are made to the
|
| + handler in te tests below. In the real datastore, the RietveldConfig entity
|
| + would contain credentials.
|
| + """
|
| + rietveld_service.RietveldConfig(
|
| + id='default_rietveld_config',
|
| + client_email='sullivan@email.com',
|
| + service_account_key='Fake Account Key',
|
| + server_url='https://test-rietveld.appspot.com',
|
| + internal_server_url='https://test-rietveld.appspot.com').put()
|
| +
|
| + def testPost(self):
|
| + job_key = try_job.TryJob(id=6789, rietveld_issue_id=200034).put()
|
| + data_param = json.dumps(_SAMPLE_BISECT_RESULTS_JSON)
|
| + self.testapp.post(
|
| + '/post_bisect_results', {'data': data_param},
|
| + extra_environ={'REMOTE_ADDR': _WHITELISTED_IP})
|
| +
|
| + job = job_key.get()
|
| + self.assertEqual(6789, job.results_data['try_job_id'])
|
| + self.assertEqual('completed', job.results_data['status'])
|
|
|