| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 from testing_utils import testing | 7 from testing_utils import testing |
| 8 | 8 |
| 9 from common.waterfall import buildbucket_client | 9 from common.waterfall import buildbucket_client |
| 10 | 10 |
| 11 | 11 |
| 12 class BuildBucketClientTest(testing.AppengineTestCase): | 12 class BuildBucketClientTest(testing.AppengineTestCase): |
| 13 | 13 |
| 14 def setUp(self): | 14 def setUp(self): |
| 15 super(BuildBucketClientTest, self).setUp() | 15 super(BuildBucketClientTest, self).setUp() |
| 16 | 16 |
| 17 with self.mock_urlfetch() as urlfetch: | 17 with self.mock_urlfetch() as urlfetch: |
| 18 self.mocked_urlfetch = urlfetch | 18 self.mocked_urlfetch = urlfetch |
| 19 | 19 |
| 20 def testGetBucketName(self): | 20 def testGetBucketName(self): |
| 21 mapping = { | 21 mapping = { |
| 22 'a': 'master.a', | 22 'a': 'master.a', |
| 23 'master.b': 'master.b', | 23 'master.b': 'master.b', |
| 24 } | 24 } |
| 25 for master_name, expected_full_master_name in mapping.iteritems(): | 25 for master_name, expected_full_master_name in mapping.iteritems(): |
| 26 self.assertEqual(expected_full_master_name, | 26 self.assertEqual(expected_full_master_name, |
| 27 buildbucket_client._GetBucketName(master_name)) | 27 buildbucket_client._GetBucketName(master_name)) |
| 28 | 28 |
| 29 def testTryJobToBuildbucketRequestWithRevision(self): | 29 def testTryJobToBuildbucketRequestWithTests(self): |
| 30 try_job = buildbucket_client.TryJob('m', 'b', 'r', {'a': '1'}, ['a']) | 30 try_job = buildbucket_client.TryJob( |
| 31 'm', 'b', 'r', {'a': '1'}, ['a'], |
| 32 {'tests': {'a_tests': ['Test.One', 'Test.Two']}}) |
| 31 expceted_parameters = { | 33 expceted_parameters = { |
| 32 'builder_name': 'b', | 34 'builder_name': 'b', |
| 33 'changes': [ | 35 'changes': [ |
| 36 { |
| 37 'author': { |
| 38 'email': buildbucket_client._ROLE_EMAIL, |
| 39 }, |
| 40 'revision': 'r', |
| 41 }, |
| 42 ], |
| 43 'properties': { |
| 44 'a': '1', |
| 45 }, |
| 46 'additional_build_parameters': { |
| 47 'tests': { |
| 48 'a_tests': ['Test.One', 'Test.Two'] |
| 49 } |
| 50 } |
| 51 } |
| 52 |
| 53 request_json = try_job.ToBuildbucketRequest() |
| 54 self.assertEqual('master.m', request_json['bucket']) |
| 55 self.assertEqual(2, len(request_json['tags'])) |
| 56 self.assertEqual('a', request_json['tags'][0]) |
| 57 self.assertEqual('user_agent:findit', request_json['tags'][1]) |
| 58 parameters = json.loads(request_json['parameters_json']) |
| 59 self.assertEqual(expceted_parameters, parameters) |
| 60 |
| 61 def testTryJobToBuildbucketRequestWithRevision(self): |
| 62 try_job = buildbucket_client.TryJob('m', 'b', 'r', {'a': '1'}, ['a'], {}) |
| 63 expceted_parameters = { |
| 64 'builder_name': 'b', |
| 65 'changes': [ |
| 34 { | 66 { |
| 35 'author': { | 67 'author': { |
| 36 'email': buildbucket_client._ROLE_EMAIL, | 68 'email': buildbucket_client._ROLE_EMAIL, |
| 37 }, | 69 }, |
| 38 'revision': 'r', | 70 'revision': 'r', |
| 39 }, | 71 }, |
| 40 ], | 72 ], |
| 41 'properties': { | 73 'properties': { |
| 42 'a': '1', | 74 'a': '1', |
| 43 }, | 75 }, |
| 44 } | 76 } |
| 45 | 77 |
| 46 request_json = try_job.ToBuildbucketRequest() | 78 request_json = try_job.ToBuildbucketRequest() |
| 47 self.assertEqual('master.m', request_json['bucket']) | 79 self.assertEqual('master.m', request_json['bucket']) |
| 48 self.assertEqual(2, len(request_json['tags'])) | 80 self.assertEqual(2, len(request_json['tags'])) |
| 49 self.assertEqual('a', request_json['tags'][0]) | 81 self.assertEqual('a', request_json['tags'][0]) |
| 50 self.assertEqual('user_agent:findit', request_json['tags'][1]) | 82 self.assertEqual('user_agent:findit', request_json['tags'][1]) |
| 51 parameters = json.loads(request_json['parameters_json']) | 83 parameters = json.loads(request_json['parameters_json']) |
| 52 self.assertEqual(expceted_parameters, parameters) | 84 self.assertEqual(expceted_parameters, parameters) |
| 53 | 85 |
| 54 def testTryJobToBuildbucketRequestWithoutRevision(self): | 86 def testTryJobToBuildbucketRequestWithoutRevision(self): |
| 55 try_job = buildbucket_client.TryJob('m', 'b', None, {'a': '1'}, ['a']) | 87 try_job = buildbucket_client.TryJob('m', 'b', None, {'a': '1'}, ['a'], {}) |
| 56 expceted_parameters = { | 88 expceted_parameters = { |
| 57 'builder_name': 'b', | 89 'builder_name': 'b', |
| 58 'properties': { | 90 'properties': { |
| 59 'a': '1', | 91 'a': '1', |
| 60 }, | 92 }, |
| 61 } | 93 } |
| 62 | 94 |
| 63 request_json = try_job.ToBuildbucketRequest() | 95 request_json = try_job.ToBuildbucketRequest() |
| 64 self.assertEqual('master.m', request_json['bucket']) | 96 self.assertEqual('master.m', request_json['bucket']) |
| 65 self.assertEqual(2, len(request_json['tags'])) | 97 self.assertEqual(2, len(request_json['tags'])) |
| (...skipping 18 matching lines...) Expand all Loading... |
| 84 headers=headers, data=try_job_request) | 116 headers=headers, data=try_job_request) |
| 85 | 117 |
| 86 def testTriggerTryJobsSuccess(self): | 118 def testTriggerTryJobsSuccess(self): |
| 87 response = { | 119 response = { |
| 88 'build': { | 120 'build': { |
| 89 'id': '1', | 121 'id': '1', |
| 90 'url': 'url', | 122 'url': 'url', |
| 91 'status': 'SCHEDULED', | 123 'status': 'SCHEDULED', |
| 92 } | 124 } |
| 93 } | 125 } |
| 94 try_job = buildbucket_client.TryJob('m', 'b', 'r', {'a': 'b'}, []) | 126 try_job = buildbucket_client.TryJob('m', 'b', 'r', {'a': 'b'}, [], {}) |
| 95 self._MockUrlFetch( | 127 self._MockUrlFetch( |
| 96 None, json.dumps(try_job.ToBuildbucketRequest()), json.dumps(response)) | 128 None, json.dumps(try_job.ToBuildbucketRequest()), json.dumps(response)) |
| 97 results = buildbucket_client.TriggerTryJobs([try_job]) | 129 results = buildbucket_client.TriggerTryJobs([try_job]) |
| 98 self.assertEqual(1, len(results)) | 130 self.assertEqual(1, len(results)) |
| 99 error, build = results[0] | 131 error, build = results[0] |
| 100 self.assertIsNone(error) | 132 self.assertIsNone(error) |
| 101 self.assertIsNotNone(build) | 133 self.assertIsNotNone(build) |
| 102 self.assertEqual('1', build.id) | 134 self.assertEqual('1', build.id) |
| 103 self.assertEqual('url', build.url) | 135 self.assertEqual('url', build.url) |
| 104 self.assertEqual('SCHEDULED', build.status) | 136 self.assertEqual('SCHEDULED', build.status) |
| 105 | 137 |
| 106 def testTriggerTryJobsFailure(self): | 138 def testTriggerTryJobsFailure(self): |
| 107 response = { | 139 response = { |
| 108 'error': { | 140 'error': { |
| 109 'reason': 'error', | 141 'reason': 'error', |
| 110 'message': 'message', | 142 'message': 'message', |
| 111 } | 143 } |
| 112 } | 144 } |
| 113 try_job = buildbucket_client.TryJob('m', 'b', 'r', {}, []) | 145 try_job = buildbucket_client.TryJob('m', 'b', 'r', {}, [], {}) |
| 114 self._MockUrlFetch( | 146 self._MockUrlFetch( |
| 115 None, json.dumps(try_job.ToBuildbucketRequest()), json.dumps(response)) | 147 None, json.dumps(try_job.ToBuildbucketRequest()), json.dumps(response)) |
| 116 results = buildbucket_client.TriggerTryJobs([try_job]) | 148 results = buildbucket_client.TriggerTryJobs([try_job]) |
| 117 self.assertEqual(1, len(results)) | 149 self.assertEqual(1, len(results)) |
| 118 error, build = results[0] | 150 error, build = results[0] |
| 119 self.assertIsNotNone(error) | 151 self.assertIsNotNone(error) |
| 120 self.assertEqual('error', error.reason) | 152 self.assertEqual('error', error.reason) |
| 121 self.assertEqual('message', error.message) | 153 self.assertEqual('message', error.message) |
| 122 self.assertIsNone(build) | 154 self.assertIsNone(build) |
| 123 | 155 |
| 124 def testTriggerTryJobsRequestFailure(self): | 156 def testTriggerTryJobsRequestFailure(self): |
| 125 response = 'Not Found' | 157 response = 'Not Found' |
| 126 try_job = buildbucket_client.TryJob('m', 'b', 'r', {}, []) | 158 try_job = buildbucket_client.TryJob('m', 'b', 'r', {}, [], {}) |
| 127 self._MockUrlFetch( | 159 self._MockUrlFetch( |
| 128 None, json.dumps(try_job.ToBuildbucketRequest()), | 160 None, json.dumps(try_job.ToBuildbucketRequest()), |
| 129 response, 404) | 161 response, 404) |
| 130 results = buildbucket_client.TriggerTryJobs([try_job]) | 162 results = buildbucket_client.TriggerTryJobs([try_job]) |
| 131 self.assertEqual(1, len(results)) | 163 self.assertEqual(1, len(results)) |
| 132 error, build = results[0] | 164 error, build = results[0] |
| 133 self.assertIsNotNone(error) | 165 self.assertIsNotNone(error) |
| 134 self.assertEqual(404, error.reason) | 166 self.assertEqual(404, error.reason) |
| 135 self.assertEqual('Not Found', error.message) | 167 self.assertEqual('Not Found', error.message) |
| 136 self.assertIsNone(build) | 168 self.assertIsNone(build) |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 response = 'Not Found' | 226 response = 'Not Found' |
| 195 self._MockUrlFetch( | 227 self._MockUrlFetch( |
| 196 '3', None, response, 404) | 228 '3', None, response, 404) |
| 197 results = buildbucket_client.GetTryJobs(['3']) | 229 results = buildbucket_client.GetTryJobs(['3']) |
| 198 self.assertEqual(1, len(results)) | 230 self.assertEqual(1, len(results)) |
| 199 error, build = results[0] | 231 error, build = results[0] |
| 200 self.assertIsNotNone(error) | 232 self.assertIsNotNone(error) |
| 201 self.assertEqual(404, error.reason) | 233 self.assertEqual(404, error.reason) |
| 202 self.assertEqual('Not Found', error.message) | 234 self.assertEqual('Not Found', error.message) |
| 203 self.assertIsNone(build) | 235 self.assertIsNone(build) |
| OLD | NEW |