Re-enable test_delayed_repo_init
Porting this test needed some fundamental help because we haven't had any tests that required changing the tenant config before. Change-Id: Ife0bf391340d24f33b516afdb24626415ad7d65f Story: 2001134 Task: 4847
This commit is contained in:
@ -2791,6 +2791,41 @@ class ZuulTestCase(BaseTestCase):
|
||||
files)
|
||||
return before
|
||||
|
||||
def newTenantConfig(self, source_name):
|
||||
""" Use this to update the tenant config file in tests
|
||||
|
||||
This will update self.tenant_config_file to point to a temporary file
|
||||
for the duration of this particular test. The content of that file will
|
||||
be taken from FIXTURE_DIR/source_name
|
||||
|
||||
After the test the original value of self.tenant_config_file will be
|
||||
restored.
|
||||
|
||||
:arg str source_name: The path of the file under
|
||||
FIXTURE_DIR that will be used to populate the new tenant
|
||||
config file.
|
||||
"""
|
||||
source_path = os.path.join(FIXTURE_DIR, source_name)
|
||||
orig_tenant_config_file = self.tenant_config_file
|
||||
with tempfile.NamedTemporaryFile(
|
||||
delete=False, mode='wb') as new_tenant_config:
|
||||
self.tenant_config_file = new_tenant_config.name
|
||||
with open(source_path, mode='rb') as source_tenant_config:
|
||||
new_tenant_config.write(source_tenant_config.read())
|
||||
self.config['scheduler']['tenant_config'] = self.tenant_config_file
|
||||
self.setupAllProjectKeys()
|
||||
self.log.debug(
|
||||
'tenant_config_file = {}'.format(self.tenant_config_file))
|
||||
|
||||
def _restoreTenantConfig():
|
||||
self.log.debug(
|
||||
'restoring tenant_config_file = {}'.format(
|
||||
orig_tenant_config_file))
|
||||
os.unlink(self.tenant_config_file)
|
||||
self.tenant_config_file = orig_tenant_config_file
|
||||
self.config['scheduler']['tenant_config'] = orig_tenant_config_file
|
||||
self.addCleanup(_restoreTenantConfig)
|
||||
|
||||
def addEvent(self, connection, event):
|
||||
|
||||
"""Inject a Fake (Gerrit) event.
|
||||
|
52
tests/fixtures/layout-delayed-repo-init.yaml
vendored
52
tests/fixtures/layout-delayed-repo-init.yaml
vendored
@ -1,52 +0,0 @@
|
||||
pipelines:
|
||||
- name: check
|
||||
manager: IndependentPipelineManager
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: patchset-created
|
||||
success:
|
||||
gerrit:
|
||||
Verified: 1
|
||||
failure:
|
||||
gerrit:
|
||||
Verified: -1
|
||||
|
||||
- name: post
|
||||
manager: IndependentPipelineManager
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: ref-updated
|
||||
ref: ^(?!refs/).*$
|
||||
|
||||
- name: gate
|
||||
manager: DependentPipelineManager
|
||||
failure-message: Build failed. For information on how to proceed, see http://wiki.example.org/Test_Failures
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: comment-added
|
||||
approval:
|
||||
- Approved: 1
|
||||
success:
|
||||
gerrit:
|
||||
Verified: 2
|
||||
submit: true
|
||||
failure:
|
||||
gerrit:
|
||||
Verified: -2
|
||||
start:
|
||||
gerrit:
|
||||
Verified: 0
|
||||
precedence: high
|
||||
|
||||
projects:
|
||||
- name: org/new-project
|
||||
check:
|
||||
- project-merge:
|
||||
- project-test1
|
||||
- project-test2
|
||||
gate:
|
||||
- project-merge:
|
||||
- project-test1
|
||||
- project-test2
|
||||
post:
|
||||
- project-post
|
77
tests/fixtures/layouts/delayed-repo-init.yaml
vendored
Normal file
77
tests/fixtures/layouts/delayed-repo-init.yaml
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
- pipeline:
|
||||
name: check
|
||||
manager: independent
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: patchset-created
|
||||
success:
|
||||
gerrit:
|
||||
Verified: 1
|
||||
failure:
|
||||
gerrit:
|
||||
Verified: -1
|
||||
|
||||
- pipeline:
|
||||
name: post
|
||||
manager: independent
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: ref-updated
|
||||
ref: ^(?!refs/).*$
|
||||
|
||||
- pipeline:
|
||||
name: gate
|
||||
manager: dependent
|
||||
failure-message: Build failed. For information on how to proceed, see http://wiki.example.org/Test_Failures
|
||||
trigger:
|
||||
gerrit:
|
||||
- event: comment-added
|
||||
approval:
|
||||
- Approved: 1
|
||||
success:
|
||||
gerrit:
|
||||
Verified: 2
|
||||
submit: true
|
||||
failure:
|
||||
gerrit:
|
||||
Verified: -2
|
||||
start:
|
||||
gerrit:
|
||||
Verified: 0
|
||||
precedence: high
|
||||
|
||||
- job:
|
||||
name: base
|
||||
parent: null
|
||||
|
||||
- job:
|
||||
name: project-merge
|
||||
|
||||
- job:
|
||||
name: project-test1
|
||||
|
||||
- job:
|
||||
name: project-test2
|
||||
|
||||
- job:
|
||||
name: project-post
|
||||
|
||||
- project:
|
||||
name: org/new-project
|
||||
check:
|
||||
jobs:
|
||||
- project-merge
|
||||
- project-test1:
|
||||
dependencies: project-merge
|
||||
- project-test2:
|
||||
dependencies: project-merge
|
||||
gate:
|
||||
jobs:
|
||||
- project-merge:
|
||||
- project-test1:
|
||||
dependencies: project-merge
|
||||
- project-test2:
|
||||
dependencies: project-merge
|
||||
post:
|
||||
jobs:
|
||||
- project-post
|
11
tests/fixtures/tenants/delayed-repo-init.yaml
vendored
Normal file
11
tests/fixtures/tenants/delayed-repo-init.yaml
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
- tenant:
|
||||
name: tenant-one
|
||||
source:
|
||||
gerrit:
|
||||
config-projects:
|
||||
- common-config
|
||||
untrusted-projects:
|
||||
- org/project
|
||||
- org/project1
|
||||
- org/project2
|
||||
- org/new-project
|
@ -2759,13 +2759,18 @@ class TestScheduler(ZuulTestCase):
|
||||
self.assertEqual(len(tenant.layout.pipelines['check'].queues), 0)
|
||||
self.assertIn('Build succeeded', A.messages[0])
|
||||
|
||||
@skip("Disabled for early v3 development")
|
||||
def test_delayed_repo_init(self):
|
||||
self.updateConfigLayout(
|
||||
'tests/fixtures/layout-delayed-repo-init.yaml')
|
||||
self.sched.reconfigure(self.config)
|
||||
|
||||
self.init_repo("org/new-project")
|
||||
files = {'README': ''}
|
||||
self.addCommitToRepo("org/new-project", 'Initial commit',
|
||||
files=files, tag='init')
|
||||
self.newTenantConfig('tenants/delayed-repo-init.yaml')
|
||||
self.commitConfigUpdate(
|
||||
'common-config',
|
||||
'layouts/delayed-repo-init.yaml')
|
||||
self.sched.reconfigure(self.config)
|
||||
self.waitUntilSettled()
|
||||
|
||||
A = self.fake_gerrit.addFakeChange('org/new-project', 'master', 'A')
|
||||
|
||||
A.addApproval('Code-Review', 2)
|
||||
|
Reference in New Issue
Block a user