Merge "Move and re-enable test_build_configuration_branch tests" into feature/zuulv3
This commit is contained in:
commit
0c14124eb6
|
@ -40,6 +40,15 @@
|
||||||
name:
|
name:
|
||||||
project-test1
|
project-test1
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name:
|
||||||
|
project-test2
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name:
|
||||||
|
project-merge
|
||||||
|
hold-following-changes: true
|
||||||
|
|
||||||
- project:
|
- project:
|
||||||
name: org/project-merge
|
name: org/project-merge
|
||||||
merge-mode: merge
|
merge-mode: merge
|
||||||
|
@ -60,3 +69,12 @@
|
||||||
gate:
|
gate:
|
||||||
jobs:
|
jobs:
|
||||||
- project-test1
|
- project-test1
|
||||||
|
|
||||||
|
- project:
|
||||||
|
name: org/project-merge-branches
|
||||||
|
merge-mode: cherry-pick
|
||||||
|
gate:
|
||||||
|
jobs:
|
||||||
|
- project-merge:
|
||||||
|
jobs:
|
||||||
|
- project-test1
|
|
@ -0,0 +1 @@
|
||||||
|
test
|
|
@ -1040,41 +1040,6 @@ class TestScheduler(ZuulTestCase):
|
||||||
self.assertEqual(len(self.history), 1)
|
self.assertEqual(len(self.history), 1)
|
||||||
self.assertIn('project-post', job_names)
|
self.assertIn('project-post', job_names)
|
||||||
|
|
||||||
@skip("Disabled for early v3 development")
|
|
||||||
def test_build_configuration_branch(self):
|
|
||||||
"Test that the right commits are on alternate branches"
|
|
||||||
|
|
||||||
self.gearman_server.hold_jobs_in_queue = True
|
|
||||||
A = self.fake_gerrit.addFakeChange('org/project', 'mp', 'A')
|
|
||||||
B = self.fake_gerrit.addFakeChange('org/project', 'mp', 'B')
|
|
||||||
C = self.fake_gerrit.addFakeChange('org/project', 'mp', 'C')
|
|
||||||
A.addApproval('code-review', 2)
|
|
||||||
B.addApproval('code-review', 2)
|
|
||||||
C.addApproval('code-review', 2)
|
|
||||||
self.fake_gerrit.addEvent(A.addApproval('approved', 1))
|
|
||||||
self.fake_gerrit.addEvent(B.addApproval('approved', 1))
|
|
||||||
self.fake_gerrit.addEvent(C.addApproval('approved', 1))
|
|
||||||
self.waitUntilSettled()
|
|
||||||
|
|
||||||
self.gearman_server.release('.*-merge')
|
|
||||||
self.waitUntilSettled()
|
|
||||||
self.gearman_server.release('.*-merge')
|
|
||||||
self.waitUntilSettled()
|
|
||||||
self.gearman_server.release('.*-merge')
|
|
||||||
self.waitUntilSettled()
|
|
||||||
queue = self.gearman_server.getQueue()
|
|
||||||
ref = self.getParameter(queue[-1], 'ZUUL_REF')
|
|
||||||
self.gearman_server.hold_jobs_in_queue = False
|
|
||||||
self.gearman_server.release()
|
|
||||||
self.waitUntilSettled()
|
|
||||||
|
|
||||||
path = os.path.join(self.git_root, "org/project")
|
|
||||||
repo = git.Repo(path)
|
|
||||||
repo_messages = [c.message.strip() for c in repo.iter_commits(ref)]
|
|
||||||
repo_messages.reverse()
|
|
||||||
correct_messages = ['initial commit', 'mp commit', 'A-1', 'B-1', 'C-1']
|
|
||||||
self.assertEqual(repo_messages, correct_messages)
|
|
||||||
|
|
||||||
@skip("Disabled for early v3 development")
|
@skip("Disabled for early v3 development")
|
||||||
def test_build_configuration_branch_interaction(self):
|
def test_build_configuration_branch_interaction(self):
|
||||||
"Test that switching between branches works"
|
"Test that switching between branches works"
|
||||||
|
@ -1086,89 +1051,6 @@ class TestScheduler(ZuulTestCase):
|
||||||
repo.heads.master.commit = repo.commit('init')
|
repo.heads.master.commit = repo.commit('init')
|
||||||
self.test_build_configuration()
|
self.test_build_configuration()
|
||||||
|
|
||||||
@skip("Disabled for early v3 development")
|
|
||||||
def test_build_configuration_multi_branch(self):
|
|
||||||
"Test that dependent changes on multiple branches are merged"
|
|
||||||
|
|
||||||
self.gearman_server.hold_jobs_in_queue = True
|
|
||||||
A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A')
|
|
||||||
B = self.fake_gerrit.addFakeChange('org/project', 'mp', 'B')
|
|
||||||
C = self.fake_gerrit.addFakeChange('org/project', 'master', 'C')
|
|
||||||
A.addApproval('code-review', 2)
|
|
||||||
B.addApproval('code-review', 2)
|
|
||||||
C.addApproval('code-review', 2)
|
|
||||||
self.fake_gerrit.addEvent(A.addApproval('approved', 1))
|
|
||||||
self.fake_gerrit.addEvent(B.addApproval('approved', 1))
|
|
||||||
self.fake_gerrit.addEvent(C.addApproval('approved', 1))
|
|
||||||
self.waitUntilSettled()
|
|
||||||
queue = self.gearman_server.getQueue()
|
|
||||||
job_A = None
|
|
||||||
for job in queue:
|
|
||||||
if 'project-merge' in job.name:
|
|
||||||
job_A = job
|
|
||||||
ref_A = self.getParameter(job_A, 'ZUUL_REF')
|
|
||||||
commit_A = self.getParameter(job_A, 'ZUUL_COMMIT')
|
|
||||||
self.log.debug("Got Zuul ref for change A: %s" % ref_A)
|
|
||||||
self.log.debug("Got Zuul commit for change A: %s" % commit_A)
|
|
||||||
|
|
||||||
self.gearman_server.release('.*-merge')
|
|
||||||
self.waitUntilSettled()
|
|
||||||
queue = self.gearman_server.getQueue()
|
|
||||||
job_B = None
|
|
||||||
for job in queue:
|
|
||||||
if 'project-merge' in job.name:
|
|
||||||
job_B = job
|
|
||||||
ref_B = self.getParameter(job_B, 'ZUUL_REF')
|
|
||||||
commit_B = self.getParameter(job_B, 'ZUUL_COMMIT')
|
|
||||||
self.log.debug("Got Zuul ref for change B: %s" % ref_B)
|
|
||||||
self.log.debug("Got Zuul commit for change B: %s" % commit_B)
|
|
||||||
|
|
||||||
self.gearman_server.release('.*-merge')
|
|
||||||
self.waitUntilSettled()
|
|
||||||
queue = self.gearman_server.getQueue()
|
|
||||||
for job in queue:
|
|
||||||
if 'project-merge' in job.name:
|
|
||||||
job_C = job
|
|
||||||
ref_C = self.getParameter(job_C, 'ZUUL_REF')
|
|
||||||
commit_C = self.getParameter(job_C, 'ZUUL_COMMIT')
|
|
||||||
self.log.debug("Got Zuul ref for change C: %s" % ref_C)
|
|
||||||
self.log.debug("Got Zuul commit for change C: %s" % commit_C)
|
|
||||||
self.gearman_server.hold_jobs_in_queue = False
|
|
||||||
self.gearman_server.release()
|
|
||||||
self.waitUntilSettled()
|
|
||||||
|
|
||||||
path = os.path.join(self.git_root, "org/project")
|
|
||||||
repo = git.Repo(path)
|
|
||||||
|
|
||||||
repo_messages = [c.message.strip()
|
|
||||||
for c in repo.iter_commits(ref_C)]
|
|
||||||
repo_shas = [c.hexsha for c in repo.iter_commits(ref_C)]
|
|
||||||
repo_messages.reverse()
|
|
||||||
correct_messages = ['initial commit', 'A-1', 'C-1']
|
|
||||||
# Ensure the right commits are in the history for this ref
|
|
||||||
self.assertEqual(repo_messages, correct_messages)
|
|
||||||
# Ensure ZUUL_REF -> ZUUL_COMMIT
|
|
||||||
self.assertEqual(repo_shas[0], commit_C)
|
|
||||||
|
|
||||||
repo_messages = [c.message.strip()
|
|
||||||
for c in repo.iter_commits(ref_B)]
|
|
||||||
repo_shas = [c.hexsha for c in repo.iter_commits(ref_B)]
|
|
||||||
repo_messages.reverse()
|
|
||||||
correct_messages = ['initial commit', 'mp commit', 'B-1']
|
|
||||||
self.assertEqual(repo_messages, correct_messages)
|
|
||||||
self.assertEqual(repo_shas[0], commit_B)
|
|
||||||
|
|
||||||
repo_messages = [c.message.strip()
|
|
||||||
for c in repo.iter_commits(ref_A)]
|
|
||||||
repo_shas = [c.hexsha for c in repo.iter_commits(ref_A)]
|
|
||||||
repo_messages.reverse()
|
|
||||||
correct_messages = ['initial commit', 'A-1']
|
|
||||||
self.assertEqual(repo_messages, correct_messages)
|
|
||||||
self.assertEqual(repo_shas[0], commit_A)
|
|
||||||
|
|
||||||
self.assertNotEqual(ref_A, ref_B, ref_C)
|
|
||||||
self.assertNotEqual(commit_A, commit_B, commit_C)
|
|
||||||
|
|
||||||
def test_dependent_changes_dequeue(self):
|
def test_dependent_changes_dequeue(self):
|
||||||
"Test that dependent patches are not needlessly tested"
|
"Test that dependent patches are not needlessly tested"
|
||||||
|
|
||||||
|
@ -4701,8 +4583,8 @@ class TestSchedulerSuccessURL(ZuulTestCase):
|
||||||
body[3])
|
body[3])
|
||||||
|
|
||||||
|
|
||||||
class TestSchedulerMergeModes(ZuulTestCase):
|
class TestSchedulerMerges(ZuulTestCase):
|
||||||
tenant_config_file = 'config/merge-modes/main.yaml'
|
tenant_config_file = 'config/merges/main.yaml'
|
||||||
|
|
||||||
def _test_project_merge_mode(self, mode):
|
def _test_project_merge_mode(self, mode):
|
||||||
self.launch_server.keep_jobdir = False
|
self.launch_server.keep_jobdir = False
|
||||||
|
@ -4762,3 +4644,137 @@ class TestSchedulerMergeModes(ZuulTestCase):
|
||||||
'C-1']
|
'C-1']
|
||||||
result = self._test_project_merge_mode('cherry-pick')
|
result = self._test_project_merge_mode('cherry-pick')
|
||||||
self.assertEqual(result, expected_messages)
|
self.assertEqual(result, expected_messages)
|
||||||
|
|
||||||
|
def test_merge_branch(self):
|
||||||
|
"Test that the right commits are on alternate branches"
|
||||||
|
self.create_branch('org/project-merge-branches', 'mp')
|
||||||
|
|
||||||
|
self.launch_server.hold_jobs_in_build = True
|
||||||
|
A = self.fake_gerrit.addFakeChange(
|
||||||
|
'org/project-merge-branches', 'mp', 'A')
|
||||||
|
B = self.fake_gerrit.addFakeChange(
|
||||||
|
'org/project-merge-branches', 'mp', 'B')
|
||||||
|
C = self.fake_gerrit.addFakeChange(
|
||||||
|
'org/project-merge-branches', 'mp', 'C')
|
||||||
|
A.addApproval('code-review', 2)
|
||||||
|
B.addApproval('code-review', 2)
|
||||||
|
C.addApproval('code-review', 2)
|
||||||
|
self.fake_gerrit.addEvent(A.addApproval('approved', 1))
|
||||||
|
self.fake_gerrit.addEvent(B.addApproval('approved', 1))
|
||||||
|
self.fake_gerrit.addEvent(C.addApproval('approved', 1))
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
self.launch_server.release('.*-merge')
|
||||||
|
self.waitUntilSettled()
|
||||||
|
self.launch_server.release('.*-merge')
|
||||||
|
self.waitUntilSettled()
|
||||||
|
self.launch_server.release('.*-merge')
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
build = self.builds[-1]
|
||||||
|
self.assertEqual(self.getParameter(build, 'ZUUL_BRANCH'), 'mp')
|
||||||
|
ref = self.getParameter(build, 'ZUUL_REF')
|
||||||
|
path = os.path.join(
|
||||||
|
build.jobdir.git_root, 'org/project-merge-branches')
|
||||||
|
repo = git.Repo(path)
|
||||||
|
|
||||||
|
repo_messages = [c.message.strip() for c in repo.iter_commits(ref)]
|
||||||
|
repo_messages.reverse()
|
||||||
|
correct_messages = [
|
||||||
|
'initial commit',
|
||||||
|
'add content from fixture',
|
||||||
|
'mp commit',
|
||||||
|
'A-1', 'B-1', 'C-1']
|
||||||
|
self.assertEqual(repo_messages, correct_messages)
|
||||||
|
|
||||||
|
self.launch_server.hold_jobs_in_build = False
|
||||||
|
self.launch_server.release()
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
def test_merge_multi_branch(self):
|
||||||
|
"Test that dependent changes on multiple branches are merged"
|
||||||
|
self.create_branch('org/project-merge-branches', 'mp')
|
||||||
|
|
||||||
|
self.launch_server.hold_jobs_in_build = True
|
||||||
|
A = self.fake_gerrit.addFakeChange(
|
||||||
|
'org/project-merge-branches', 'master', 'A')
|
||||||
|
B = self.fake_gerrit.addFakeChange(
|
||||||
|
'org/project-merge-branches', 'mp', 'B')
|
||||||
|
C = self.fake_gerrit.addFakeChange(
|
||||||
|
'org/project-merge-branches', 'master', 'C')
|
||||||
|
A.addApproval('code-review', 2)
|
||||||
|
B.addApproval('code-review', 2)
|
||||||
|
C.addApproval('code-review', 2)
|
||||||
|
self.fake_gerrit.addEvent(A.addApproval('approved', 1))
|
||||||
|
self.fake_gerrit.addEvent(B.addApproval('approved', 1))
|
||||||
|
self.fake_gerrit.addEvent(C.addApproval('approved', 1))
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
job_A = None
|
||||||
|
for job in self.builds:
|
||||||
|
if 'project-merge' in job.name:
|
||||||
|
job_A = job
|
||||||
|
ref_A = self.getParameter(job_A, 'ZUUL_REF')
|
||||||
|
commit_A = self.getParameter(job_A, 'ZUUL_COMMIT')
|
||||||
|
self.log.debug("Got Zuul ref for change A: %s" % ref_A)
|
||||||
|
self.log.debug("Got Zuul commit for change A: %s" % commit_A)
|
||||||
|
|
||||||
|
path = os.path.join(
|
||||||
|
job_A.jobdir.git_root, "org/project-merge-branches")
|
||||||
|
repo = git.Repo(path)
|
||||||
|
repo_messages = [c.message.strip()
|
||||||
|
for c in repo.iter_commits(ref_A)]
|
||||||
|
repo_messages.reverse()
|
||||||
|
correct_messages = [
|
||||||
|
'initial commit', 'add content from fixture', 'A-1']
|
||||||
|
self.assertEqual(repo_messages, correct_messages)
|
||||||
|
|
||||||
|
self.launch_server.release('.*-merge')
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
job_B = None
|
||||||
|
for job in self.builds:
|
||||||
|
if 'project-merge' in job.name:
|
||||||
|
job_B = job
|
||||||
|
ref_B = self.getParameter(job_B, 'ZUUL_REF')
|
||||||
|
commit_B = self.getParameter(job_B, 'ZUUL_COMMIT')
|
||||||
|
self.log.debug("Got Zuul ref for change B: %s" % ref_B)
|
||||||
|
self.log.debug("Got Zuul commit for change B: %s" % commit_B)
|
||||||
|
|
||||||
|
path = os.path.join(
|
||||||
|
job_B.jobdir.git_root, "org/project-merge-branches")
|
||||||
|
repo = git.Repo(path)
|
||||||
|
repo_messages = [c.message.strip()
|
||||||
|
for c in repo.iter_commits(ref_B)]
|
||||||
|
repo_messages.reverse()
|
||||||
|
correct_messages = [
|
||||||
|
'initial commit', 'add content from fixture', 'mp commit', 'B-1']
|
||||||
|
self.assertEqual(repo_messages, correct_messages)
|
||||||
|
|
||||||
|
self.launch_server.release('.*-merge')
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
||||||
|
job_C = None
|
||||||
|
for job in self.builds:
|
||||||
|
if 'project-merge' in job.name:
|
||||||
|
job_C = job
|
||||||
|
ref_C = self.getParameter(job_C, 'ZUUL_REF')
|
||||||
|
commit_C = self.getParameter(job_C, 'ZUUL_COMMIT')
|
||||||
|
self.log.debug("Got Zuul ref for change C: %s" % ref_C)
|
||||||
|
self.log.debug("Got Zuul commit for change C: %s" % commit_C)
|
||||||
|
path = os.path.join(
|
||||||
|
job_C.jobdir.git_root, "org/project-merge-branches")
|
||||||
|
repo = git.Repo(path)
|
||||||
|
repo_messages = [c.message.strip()
|
||||||
|
for c in repo.iter_commits(ref_C)]
|
||||||
|
|
||||||
|
repo_messages.reverse()
|
||||||
|
correct_messages = [
|
||||||
|
'initial commit', 'add content from fixture',
|
||||||
|
'A-1', 'C-1']
|
||||||
|
# Ensure the right commits are in the history for this ref
|
||||||
|
self.assertEqual(repo_messages, correct_messages)
|
||||||
|
|
||||||
|
self.launch_server.hold_jobs_in_build = False
|
||||||
|
self.launch_server.release()
|
||||||
|
self.waitUntilSettled()
|
||||||
|
|
Loading…
Reference in New Issue