| 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'], {'a_tests': ['Test.One', 'Test.Two']}) |
| 31 expceted_parameters = { | 32 expceted_parameters = { |
| 32 'builder_name': 'b', | 33 'builder_name': 'b', |
| 33 'changes': [ | 34 'changes': [ |
| 35 { |
| 36 'author': { |
| 37 'email': buildbucket_client._ROLE_EMAIL, |
| 38 }, |
| 39 'revision': 'r', |
| 40 }, |
| 41 ], |
| 42 'properties': { |
| 43 'a': '1', |
| 44 }, |
| 45 'tests': {'a_tests': ['Test.One', 'Test.Two']} |
| 46 } |
| 47 |
| 48 request_json = try_job.ToBuildbucketRequest() |
| 49 self.assertEqual('master.m', request_json['bucket']) |
| 50 self.assertEqual(2, len(request_json['tags'])) |
| 51 self.assertEqual('a', request_json['tags'][0]) |
| 52 self.assertEqual('user_agent:findit', request_json['tags'][1]) |
| 53 parameters = json.loads(request_json['parameters_json']) |
| 54 self.assertEqual(expceted_parameters, parameters) |
| 55 |
| 56 def testTryJobToBuildbucketRequestWithRevision(self): |
| 57 try_job = buildbucket_client.TryJob('m', 'b', 'r', {'a': '1'}, ['a'], {}) |
| 58 expceted_parameters = { |
| 59 'builder_name': 'b', |
| 60 'changes': [ |
| 34 { | 61 { |
| 35 'author': { | 62 'author': { |
| 36 'email': buildbucket_client._ROLE_EMAIL, | 63 'email': buildbucket_client._ROLE_EMAIL, |
| 37 }, | 64 }, |
| 38 'revision': 'r', | 65 'revision': 'r', |
| 39 }, | 66 }, |
| 40 ], | 67 ], |
| 41 'properties': { | 68 'properties': { |
| 42 'a': '1', | 69 'a': '1', |
| 43 }, | 70 }, |
| 44 } | 71 } |
| 45 | 72 |
| 46 request_json = try_job.ToBuildbucketRequest() | 73 request_json = try_job.ToBuildbucketRequest() |
| 47 self.assertEqual('master.m', request_json['bucket']) | 74 self.assertEqual('master.m', request_json['bucket']) |
| 48 self.assertEqual(2, len(request_json['tags'])) | 75 self.assertEqual(2, len(request_json['tags'])) |
| 49 self.assertEqual('a', request_json['tags'][0]) | 76 self.assertEqual('a', request_json['tags'][0]) |
| 50 self.assertEqual('user_agent:findit', request_json['tags'][1]) | 77 self.assertEqual('user_agent:findit', request_json['tags'][1]) |
| 51 parameters = json.loads(request_json['parameters_json']) | 78 parameters = json.loads(request_json['parameters_json']) |
| 52 self.assertEqual(expceted_parameters, parameters) | 79 self.assertEqual(expceted_parameters, parameters) |
| 53 | 80 |
| 54 def testTryJobToBuildbucketRequestWithoutRevision(self): | 81 def testTryJobToBuildbucketRequestWithoutRevision(self): |
| 55 try_job = buildbucket_client.TryJob('m', 'b', None, {'a': '1'}, ['a']) | 82 try_job = buildbucket_client.TryJob('m', 'b', None, {'a': '1'}, ['a'], {}) |
| 56 expceted_parameters = { | 83 expceted_parameters = { |
| 57 'builder_name': 'b', | 84 'builder_name': 'b', |
| 58 'properties': { | 85 'properties': { |
| 59 'a': '1', | 86 'a': '1', |
| 60 }, | 87 }, |
| 61 } | 88 } |
| 62 | 89 |
| 63 request_json = try_job.ToBuildbucketRequest() | 90 request_json = try_job.ToBuildbucketRequest() |
| 64 self.assertEqual('master.m', request_json['bucket']) | 91 self.assertEqual('master.m', request_json['bucket']) |
| 65 self.assertEqual(2, len(request_json['tags'])) | 92 self.assertEqual(2, len(request_json['tags'])) |
| (...skipping 18 matching lines...) Expand all Loading... |
| 84 headers=headers, data=try_job_request) | 111 headers=headers, data=try_job_request) |
| 85 | 112 |
| 86 def testTriggerTryJobsSuccess(self): | 113 def testTriggerTryJobsSuccess(self): |
| 87 response = { | 114 response = { |
| 88 'build': { | 115 'build': { |
| 89 'id': '1', | 116 'id': '1', |
| 90 'url': 'url', | 117 'url': 'url', |
| 91 'status': 'SCHEDULED', | 118 'status': 'SCHEDULED', |
| 92 } | 119 } |
| 93 } | 120 } |
| 94 try_job = buildbucket_client.TryJob('m', 'b', 'r', {'a': 'b'}, []) | 121 try_job = buildbucket_client.TryJob('m', 'b', 'r', {'a': 'b'}, [], {}) |
| 95 self._MockUrlFetch( | 122 self._MockUrlFetch( |
| 96 None, json.dumps(try_job.ToBuildbucketRequest()), json.dumps(response)) | 123 None, json.dumps(try_job.ToBuildbucketRequest()), json.dumps(response)) |
| 97 results = buildbucket_client.TriggerTryJobs([try_job]) | 124 results = buildbucket_client.TriggerTryJobs([try_job]) |
| 98 self.assertEqual(1, len(results)) | 125 self.assertEqual(1, len(results)) |
| 99 error, build = results[0] | 126 error, build = results[0] |
| 100 self.assertIsNone(error) | 127 self.assertIsNone(error) |
| 101 self.assertIsNotNone(build) | 128 self.assertIsNotNone(build) |
| 102 self.assertEqual('1', build.id) | 129 self.assertEqual('1', build.id) |
| 103 self.assertEqual('url', build.url) | 130 self.assertEqual('url', build.url) |
| 104 self.assertEqual('SCHEDULED', build.status) | 131 self.assertEqual('SCHEDULED', build.status) |
| 105 | 132 |
| 106 def testTriggerTryJobsFailure(self): | 133 def testTriggerTryJobsFailure(self): |
| 107 response = { | 134 response = { |
| 108 'error': { | 135 'error': { |
| 109 'reason': 'error', | 136 'reason': 'error', |
| 110 'message': 'message', | 137 'message': 'message', |
| 111 } | 138 } |
| 112 } | 139 } |
| 113 try_job = buildbucket_client.TryJob('m', 'b', 'r', {}, []) | 140 try_job = buildbucket_client.TryJob('m', 'b', 'r', {}, [], {}) |
| 114 self._MockUrlFetch( | 141 self._MockUrlFetch( |
| 115 None, json.dumps(try_job.ToBuildbucketRequest()), json.dumps(response)) | 142 None, json.dumps(try_job.ToBuildbucketRequest()), json.dumps(response)) |
| 116 results = buildbucket_client.TriggerTryJobs([try_job]) | 143 results = buildbucket_client.TriggerTryJobs([try_job]) |
| 117 self.assertEqual(1, len(results)) | 144 self.assertEqual(1, len(results)) |
| 118 error, build = results[0] | 145 error, build = results[0] |
| 119 self.assertIsNotNone(error) | 146 self.assertIsNotNone(error) |
| 120 self.assertEqual('error', error.reason) | 147 self.assertEqual('error', error.reason) |
| 121 self.assertEqual('message', error.message) | 148 self.assertEqual('message', error.message) |
| 122 self.assertIsNone(build) | 149 self.assertIsNone(build) |
| 123 | 150 |
| 124 def testTriggerTryJobsRequestFailure(self): | 151 def testTriggerTryJobsRequestFailure(self): |
| 125 response = 'Not Found' | 152 response = 'Not Found' |
| 126 try_job = buildbucket_client.TryJob('m', 'b', 'r', {}, []) | 153 try_job = buildbucket_client.TryJob('m', 'b', 'r', {}, [], {}) |
| 127 self._MockUrlFetch( | 154 self._MockUrlFetch( |
| 128 None, json.dumps(try_job.ToBuildbucketRequest()), | 155 None, json.dumps(try_job.ToBuildbucketRequest()), |
| 129 response, 404) | 156 response, 404) |
| 130 results = buildbucket_client.TriggerTryJobs([try_job]) | 157 results = buildbucket_client.TriggerTryJobs([try_job]) |
| 131 self.assertEqual(1, len(results)) | 158 self.assertEqual(1, len(results)) |
| 132 error, build = results[0] | 159 error, build = results[0] |
| 133 self.assertIsNotNone(error) | 160 self.assertIsNotNone(error) |
| 134 self.assertEqual(404, error.reason) | 161 self.assertEqual(404, error.reason) |
| 135 self.assertEqual('Not Found', error.message) | 162 self.assertEqual('Not Found', error.message) |
| 136 self.assertIsNone(build) | 163 self.assertIsNone(build) |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 response = 'Not Found' | 221 response = 'Not Found' |
| 195 self._MockUrlFetch( | 222 self._MockUrlFetch( |
| 196 '3', None, response, 404) | 223 '3', None, response, 404) |
| 197 results = buildbucket_client.GetTryJobs(['3']) | 224 results = buildbucket_client.GetTryJobs(['3']) |
| 198 self.assertEqual(1, len(results)) | 225 self.assertEqual(1, len(results)) |
| 199 error, build = results[0] | 226 error, build = results[0] |
| 200 self.assertIsNotNone(error) | 227 self.assertIsNotNone(error) |
| 201 self.assertEqual(404, error.reason) | 228 self.assertEqual(404, error.reason) |
| 202 self.assertEqual('Not Found', error.message) | 229 self.assertEqual('Not Found', error.message) |
| 203 self.assertIsNone(build) | 230 self.assertIsNone(build) |
| OLD | NEW |