blob: d9bc72ff508cc76f24f13220bfe9a9413dc7d14e [file] [log] [blame]
Joshua Hesketh352264b2015-08-11 23:42:08 +10001# Copyright 2014 Rackspace Australia
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
Joshua Heskethacccffc2015-03-31 23:38:17 +110015from tests.base import ZuulTestCase
16
Joshua Hesketh352264b2015-08-11 23:42:08 +100017
Joshua Heskethacccffc2015-03-31 23:38:17 +110018class TestConnections(ZuulTestCase):
Morgan Fainberg4245a422016-08-05 16:20:12 -070019 config_file = 'zuul-connections-same-gerrit.conf'
20 tenant_config_file = 'config/zuul-connections-same-gerrit/main.yaml'
Joshua Heskethacccffc2015-03-31 23:38:17 +110021
22 def test_multiple_connections(self):
23 "Test multiple connections to the one gerrit"
24
25 A = self.fake_review_gerrit.addFakeChange('org/project', 'master', 'A')
James E. Blair7fc8daa2016-08-08 15:37:15 -070026 self.addEvent('review_gerrit', A.getPatchsetCreatedEvent(1))
Joshua Heskethacccffc2015-03-31 23:38:17 +110027
28 self.waitUntilSettled()
29
30 self.assertEqual(len(A.patchsets[-1]['approvals']), 1)
James E. Blair8b5408c2016-08-08 15:37:46 -070031 self.assertEqual(A.patchsets[-1]['approvals'][0]['type'], 'verified')
Joshua Heskethacccffc2015-03-31 23:38:17 +110032 self.assertEqual(A.patchsets[-1]['approvals'][0]['value'], '1')
33 self.assertEqual(A.patchsets[-1]['approvals'][0]['by']['username'],
34 'jenkins')
35
36 B = self.fake_review_gerrit.addFakeChange('org/project', 'master', 'B')
James E. Blaira5dba232016-08-08 15:53:24 -070037 self.launch_server.failJob('project-test2', B)
James E. Blair7fc8daa2016-08-08 15:37:15 -070038 self.addEvent('review_gerrit', B.getPatchsetCreatedEvent(1))
Joshua Heskethacccffc2015-03-31 23:38:17 +110039
40 self.waitUntilSettled()
41
42 self.assertEqual(len(B.patchsets[-1]['approvals']), 1)
James E. Blair8b5408c2016-08-08 15:37:46 -070043 self.assertEqual(B.patchsets[-1]['approvals'][0]['type'], 'verified')
Joshua Heskethacccffc2015-03-31 23:38:17 +110044 self.assertEqual(B.patchsets[-1]['approvals'][0]['value'], '-1')
45 self.assertEqual(B.patchsets[-1]['approvals'][0]['by']['username'],
46 'civoter')
47
48
49class TestMultipleGerrits(ZuulTestCase):
James E. Blair509cada2015-12-08 16:31:16 -080050
Jamie Lennoxd2e37332016-12-05 15:26:19 +110051 config_file = 'zuul-connections-multiple-gerrits.conf'
52 tenant_config_file = 'config/zuul-connections-multiple-gerrits/main.yaml'
Joshua Heskethacccffc2015-03-31 23:38:17 +110053
54 def test_multiple_project_separate_gerrits(self):
Jamie Lennoxd2e37332016-12-05 15:26:19 +110055 self.launch_server.hold_jobs_in_build = True
Joshua Heskethacccffc2015-03-31 23:38:17 +110056
57 A = self.fake_another_gerrit.addFakeChange(
Jamie Lennoxd2e37332016-12-05 15:26:19 +110058 'org/project1', 'master', 'A')
Joshua Heskethacccffc2015-03-31 23:38:17 +110059 self.fake_another_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
60
61 self.waitUntilSettled()
62
Jamie Lennoxd2e37332016-12-05 15:26:19 +110063 self.assertBuilds([dict(name='project-test2',
64 changes='1,1',
65 project='org/project1',
66 pipeline='another_check')])
Joshua Heskethacccffc2015-03-31 23:38:17 +110067
Jamie Lennoxd2e37332016-12-05 15:26:19 +110068 # NOTE(jamielennox): the tests back the git repo for both connections
69 # onto the same git repo on the file system. If we just create another
70 # fake change the fake_review_gerrit will try to create another 1,1
71 # change and git will fail to create the ref. Arbitrarily set it to get
72 # around the problem.
73 self.fake_review_gerrit.change_number = 50
74
75 B = self.fake_review_gerrit.addFakeChange(
76 'org/project1', 'master', 'B')
77 self.fake_review_gerrit.addEvent(B.getPatchsetCreatedEvent(1))
78
79 self.waitUntilSettled()
80
81 self.assertBuilds([
82 dict(name='project-test2',
83 changes='1,1',
84 project='org/project1',
85 pipeline='another_check'),
86 dict(name='project-test1',
87 changes='51,1',
88 project='org/project1',
89 pipeline='review_check'),
90 ])
91
92 self.launch_server.hold_jobs_in_build = False
93 self.launch_server.release()
Joshua Heskethacccffc2015-03-31 23:38:17 +110094 self.waitUntilSettled()