summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Westphahl <simon.westphahl@bmw.de>2022-04-12 11:02:54 +0200
committerSimon Westphahl <simon.westphahl@bmw.de>2022-04-14 15:21:23 +0200
commite67d243bf28edba29d5f753f55aaf4f592a3b6b3 (patch)
tree12b35875d69ccf44428f911d540cc3dbd24c70a6
parentf0bf27521428699fb8c17cc9db4378b9cb65028b (diff)
downloadzuul-e67d243bf28edba29d5f753f55aaf4f592a3b6b3.tar.gz
Don't overwrite result data in compat mode
When we are still running in model API <=5 compatibility mode and there are still jobs with the old format in Zookeeper, the result data was set to None. Change-Id: Ifd2c180a69bbaa7a20006305d9f8e9ec460120dc
-rw-r--r--tests/fixtures/config/single-tenant/git/org_project3/README1
-rw-r--r--tests/fixtures/config/single-tenant/git/org_project3/zuul.yaml25
-rw-r--r--tests/fixtures/config/single-tenant/main-model-upgrade.yaml11
-rw-r--r--tests/unit/test_model_upgrade.py36
-rw-r--r--zuul/model.py2
5 files changed, 72 insertions, 3 deletions
diff --git a/tests/fixtures/config/single-tenant/git/org_project3/README b/tests/fixtures/config/single-tenant/git/org_project3/README
new file mode 100644
index 000000000..9daeafb98
--- /dev/null
+++ b/tests/fixtures/config/single-tenant/git/org_project3/README
@@ -0,0 +1 @@
+test
diff --git a/tests/fixtures/config/single-tenant/git/org_project3/zuul.yaml b/tests/fixtures/config/single-tenant/git/org_project3/zuul.yaml
new file mode 100644
index 000000000..3effc3cb4
--- /dev/null
+++ b/tests/fixtures/config/single-tenant/git/org_project3/zuul.yaml
@@ -0,0 +1,25 @@
+- project:
+ check:
+ jobs:
+ - project-merge
+ - project-test1:
+ dependencies: project-merge
+ - project-test2:
+ dependencies: project-merge
+ - project1-project2-integration:
+ dependencies:
+ - project-test1
+ - project-test2
+ gate:
+ queue: integrated
+ jobs:
+ - project-merge
+ - project-test1:
+ dependencies: project-merge
+ - project-test2:
+ dependencies: project-merge
+ - project1-project2-integration:
+ dependencies:
+ - project-merge
+ - project-test1
+ - project-test2
diff --git a/tests/fixtures/config/single-tenant/main-model-upgrade.yaml b/tests/fixtures/config/single-tenant/main-model-upgrade.yaml
new file mode 100644
index 000000000..919921e91
--- /dev/null
+++ b/tests/fixtures/config/single-tenant/main-model-upgrade.yaml
@@ -0,0 +1,11 @@
+- tenant:
+ name: tenant-one
+ source:
+ gerrit:
+ config-projects:
+ - common-config
+ untrusted-projects:
+ - org/project
+ - org/project1
+ - org/project2
+ - org/project3
diff --git a/tests/unit/test_model_upgrade.py b/tests/unit/test_model_upgrade.py
index 536c4f91d..f4a18bdfc 100644
--- a/tests/unit/test_model_upgrade.py
+++ b/tests/unit/test_model_upgrade.py
@@ -35,7 +35,7 @@ def model_version(version):
class TestModelUpgrade(ZuulTestCase):
- tenant_config_file = "config/single-tenant/main.yaml"
+ tenant_config_file = "config/single-tenant/main-model-upgrade.yaml"
scheduler_count = 1
def getJobData(self, tenant, pipeline):
@@ -101,6 +101,40 @@ class TestModelUpgrade(ZuulTestCase):
], ordered=False)
@model_version(4)
+ def test_model_4(self):
+ # Test that Zuul return values are correctly passed to child
+ # jobs in version 4 compatibility mode.
+ A = self.fake_gerrit.addFakeChange('org/project3', 'master', 'A')
+ fake_data = [
+ {'name': 'image',
+ 'url': 'http://example.com/image',
+ 'metadata': {
+ 'type': 'container_image'
+ }},
+ ]
+ self.executor_server.returnData(
+ 'project-merge', A,
+ {'zuul': {'artifacts': fake_data}}
+ )
+ self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1))
+ self.waitUntilSettled()
+
+ self.assertHistory([
+ dict(name='project-merge', result='SUCCESS', changes='1,1'),
+ dict(name='project-test1', result='SUCCESS', changes='1,1'),
+ dict(name='project-test2', result='SUCCESS', changes='1,1'),
+ dict(name='project1-project2-integration',
+ result='SUCCESS', changes='1,1'),
+ ], ordered=False)
+ # Verify that the child jobs got the data from the parent
+ test1 = self.getJobFromHistory('project-test1')
+ self.assertEqual(fake_data[0]['url'],
+ test1.parameters['zuul']['artifacts'][0]['url'])
+ integration = self.getJobFromHistory('project1-project2-integration')
+ self.assertEqual(fake_data[0]['url'],
+ integration.parameters['zuul']['artifacts'][0]['url'])
+
+ @model_version(4)
def test_model_4_5(self):
# Changes share a queue, but with only one job, the first
# merges before the second starts.
diff --git a/zuul/model.py b/zuul/model.py
index 0bd5cb88b..79041cf86 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -3478,8 +3478,6 @@ class Build(zkobject.ZKObject):
# Load the object from ZK
data['_' + job_data_key] = JobData.fromZK(
context, job_data['path'])
- else:
- data['_' + job_data_key] = None
return data
def getPath(self):