diff options
author | Zuul <zuul@review.opendev.org> | 2023-01-12 16:10:05 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2023-01-12 16:10:05 +0000 |
commit | a643be9a5d4202a3b70336118239e596a1baeec7 (patch) | |
tree | e27cd6dd879accdafc648592f81c9572724bd870 | |
parent | a1717e39ef200bb4c629e6f9e3d5d7bfae40f26f (diff) | |
parent | f82ef0882cbbbab468bf0b5551cdf91d715f0321 (diff) | |
download | zuul-a643be9a5d4202a3b70336118239e596a1baeec7.tar.gz |
Merge "Further avoid unnecessary change dependency updates"
-rw-r--r-- | tests/fixtures/layouts/two-check.yaml | 47 | ||||
-rw-r--r-- | tests/unit/test_scheduler.py | 16 | ||||
-rw-r--r-- | zuul/source/__init__.py | 2 |
3 files changed, 64 insertions, 1 deletions
diff --git a/tests/fixtures/layouts/two-check.yaml b/tests/fixtures/layouts/two-check.yaml new file mode 100644 index 000000000..bc3e59818 --- /dev/null +++ b/tests/fixtures/layouts/two-check.yaml @@ -0,0 +1,47 @@ +- pipeline: + name: check1 + manager: independent + trigger: + gerrit: + - event: patchset-created + success: + gerrit: + Verified: 1 + failure: + gerrit: + Verified: -1 + +- pipeline: + name: check2 + manager: independent + trigger: + gerrit: + - event: patchset-created + success: + gerrit: + Verified: 1 + failure: + gerrit: + Verified: -1 + +- job: + name: base + parent: null + run: playbooks/base.yaml + nodeset: + nodes: + - label: ubuntu-xenial + name: controller + +- job: + name: check-job + run: playbooks/check.yaml + +- project: + name: org/project + check1: + jobs: + - check-job + check2: + jobs: + - check-job diff --git a/tests/unit/test_scheduler.py b/tests/unit/test_scheduler.py index 6a0da1279..5c36e6621 100644 --- a/tests/unit/test_scheduler.py +++ b/tests/unit/test_scheduler.py @@ -3713,6 +3713,22 @@ class TestScheduler(ZuulTestCase): self.assertEqual(self.history[4].pipeline, 'check') self.assertEqual(self.history[5].pipeline, 'check') + @simple_layout('layouts/two-check.yaml') + def test_query_dependency_count(self): + # Test that we efficiently query dependent changes + A = self.fake_gerrit.addFakeChange('org/project', 'master', 'A') + B = self.fake_gerrit.addFakeChange('org/project', 'master', 'B') + B.data['commitMessage'] = '%s\n\nDepends-On: %s\n' % ( + B.subject, A.data['url']) + self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1)) + self.waitUntilSettled() + # 1. The query to find the change id + # from the Depends-On string "change:1" (simpleQuery) + # 2. The query to populate the change once we know the id + # (queryChange) + self.assertEqual(A.queried, 2) + self.assertEqual(B.queried, 1) + def test_reconfigure_merge(self): """Test that two reconfigure events are merged""" # Wrap the recofiguration handler so we can count how many diff --git a/zuul/source/__init__.py b/zuul/source/__init__.py index dd11aa9b6..01a683b23 100644 --- a/zuul/source/__init__.py +++ b/zuul/source/__init__.py @@ -109,7 +109,7 @@ class BaseSource(object, metaclass=abc.ABCMeta): time.sleep(1) else: raise - return dep + return dep @abc.abstractmethod def getChangesDependingOn(self, change, projects, tenant): |