summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/base.py37
-rw-r--r--tests/unit/test_configloader.py16
-rw-r--r--tests/unit/test_github_driver.py6
-rw-r--r--tests/unit/test_scheduler.py12
-rw-r--r--tests/unit/test_sos.py6
-rw-r--r--tests/unit/test_v3.py6
6 files changed, 28 insertions, 55 deletions
diff --git a/tests/base.py b/tests/base.py
index e99ec2702..04c189521 100644
--- a/tests/base.py
+++ b/tests/base.py
@@ -71,9 +71,7 @@ import requests_mock
from kazoo.exceptions import NoNodeError
from zuul import model
-from zuul.model import (
- BuildRequest, Change, MergeRequest, PRECEDENCE_NORMAL, WebInfo
-)
+from zuul.model import BuildRequest, Change, MergeRequest, WebInfo
from zuul.rpcclient import RPCClient
from zuul.driver.zuul import ZuulDriver
@@ -3203,8 +3201,10 @@ class HoldableMergerApi(MergerApi):
def submit(self, request, params, needs_result=False):
self.log.debug("Appending merge job to history: %s", request.uuid)
- self.history[request.uuid] = FakeMergeRequest(
- request.uuid, request.job_type, params)
+ self.history.setdefault(request.job_type, [])
+ self.history[request.job_type].append(
+ FakeMergeRequest(request.uuid, request.job_type, params)
+ )
return super().submit(request, params, needs_result)
@property
@@ -3257,28 +3257,10 @@ class TestingMergerApi(HoldableMergerApi):
return self._test_getMergeJobsInState()
-class RecordingMergeClient(zuul.merger.client.MergeClient):
+class HoldableMergeClient(zuul.merger.client.MergeClient):
_merger_api_class = HoldableMergerApi
- def __init__(self, config, sched):
- super().__init__(config, sched)
- self.history = {}
-
- def submitJob(
- self,
- job_type,
- data,
- build_set,
- precedence=PRECEDENCE_NORMAL,
- needs_result=False,
- event=None,
- ):
- self.history.setdefault(job_type, [])
- self.history[job_type].append((data, build_set))
- return super().submitJob(
- job_type, data, build_set, precedence, needs_result, event=event)
-
class HoldableExecutorApi(ExecutorApi):
def __init__(self, *args, **kwargs):
@@ -3481,7 +3463,7 @@ class RecordingExecutorServer(zuul.executor.server.ExecutorServer):
class TestScheduler(zuul.scheduler.Scheduler):
- _merger_client_class = RecordingMergeClient
+ _merger_client_class = HoldableMergeClient
_executor_client_class = HoldableExecutorClient
@@ -5204,9 +5186,10 @@ class ZuulTestCase(BaseTestCase):
@property
def merge_job_history(self):
- history = {}
+ history = defaultdict(list)
for app in self.scheds:
- history.update(app.sched.merger.merger_api.history)
+ for job_type, jobs in app.sched.merger.merger_api.history.items():
+ history[job_type].extend(jobs)
return history
@merge_job_history.deleter
diff --git a/tests/unit/test_configloader.py b/tests/unit/test_configloader.py
index 2de1bdb2e..47bf0d69a 100644
--- a/tests/unit/test_configloader.py
+++ b/tests/unit/test_configloader.py
@@ -363,9 +363,7 @@ class TestTenantGroups4(TenantParserTestCase):
tpc.load_classes)
# Check that only one merger:cat job was requested
# org/project1 and org/project2 have an empty load_classes
- cat_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == MergeRequest.CAT]
- self.assertEqual(1, len(cat_jobs))
+ self.assertEqual(1, len(self.merge_job_history.get(MergeRequest.CAT)))
old_layout = tenant.layout
# Check that creating a change in project1 doesn't cause a
@@ -398,9 +396,7 @@ class TestTenantGroups5(TenantParserTestCase):
tpc.load_classes)
# Check that only one merger:cat job was requested
# org/project1 and org/project2 have an empty load_classes
- cat_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == MergeRequest.CAT]
- self.assertEqual(1, len(cat_jobs))
+ self.assertEqual(1, len(self.merge_job_history.get(MergeRequest.CAT)))
class TestTenantFromScript(TestTenantSimple):
@@ -677,9 +673,7 @@ class TestUnparsedConfigCache(ZuulTestCase):
# As the cache should be valid (cache ltime of org/project2 newer than
# event ltime) we don't expect any cat jobs.
- cat_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == MergeRequest.CAT]
- self.assertEqual(len(cat_jobs), 0)
+ self.assertIsNone(self.merge_job_history.get(MergeRequest.CAT))
# Set canary value so we can detect if the configloader used
# the cache in Zookeeper (it shouldn't).
@@ -703,9 +697,7 @@ class TestUnparsedConfigCache(ZuulTestCase):
# As the cache should be valid (cache ltime of org/project2 newer than
# event ltime) we don't expect any cat jobs.
- cat_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == MergeRequest.CAT]
- self.assertEqual(len(cat_jobs), 0)
+ self.assertIsNone(self.merge_job_history.get(MergeRequest.CAT))
sched.apsched.start()
diff --git a/tests/unit/test_github_driver.py b/tests/unit/test_github_driver.py
index df214651f..41142aa68 100644
--- a/tests/unit/test_github_driver.py
+++ b/tests/unit/test_github_driver.py
@@ -996,8 +996,7 @@ class TestGithubDriver(ZuulTestCase):
if expected_cat_jobs is not None:
# Check the expected number of cat jobs here as the (empty) config
# of org/project should be cached.
- cat_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == MergeRequest.CAT]
+ cat_jobs = self.merge_job_history.get(MergeRequest.CAT)
self.assertEqual(expected_cat_jobs, len(cat_jobs), cat_jobs)
@simple_layout('layouts/basic-github.yaml', driver='github')
@@ -1607,8 +1606,7 @@ class TestGithubUnprotectedBranches(ZuulTestCase):
if expected_cat_jobs is not None:
# Check the expected number of cat jobs here as the (empty) config
# of org/project should be cached.
- cat_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == MergeRequest.CAT]
+ cat_jobs = self.merge_job_history.get(MergeRequest.CAT, [])
self.assertEqual(expected_cat_jobs, len(cat_jobs), cat_jobs)
def test_push_event_reconfigure_complex_branch(self):
diff --git a/tests/unit/test_scheduler.py b/tests/unit/test_scheduler.py
index 8f220a2e3..69d90b3cd 100644
--- a/tests/unit/test_scheduler.py
+++ b/tests/unit/test_scheduler.py
@@ -4220,10 +4220,11 @@ class TestScheduler(ZuulTestCase):
self.assertEqual(len(self.builds), 2)
merge_count_project1 = 0
- for job in self.merge_job_history.values():
- if job.job_type == zuul.model.MergeRequest.REF_STATE:
- if job.payload["items"][0]["project"] == "org/project1":
- merge_count_project1 += 1
+ for job in self.merge_job_history.get(
+ zuul.model.MergeRequest.REF_STATE
+ ):
+ if job.payload["items"][0]["project"] == "org/project1":
+ merge_count_project1 += 1
self.assertEquals(merge_count_project1, 0,
"project1 shouldn't have any refstate call")
@@ -8942,8 +8943,7 @@ class TestSchedulerSmartReconfiguration(ZuulTestCase):
# We're only adding two new repos, so we should only need to
# issue 2 cat jobs.
- cat_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == zuul.model.MergeRequest.CAT]
+ cat_jobs = self.merge_job_history.get(zuul.model.MergeRequest.CAT)
self.assertEqual(len(cat_jobs), 2)
# Ensure that tenant-one has not been reconfigured
diff --git a/tests/unit/test_sos.py b/tests/unit/test_sos.py
index 5fa53e856..cbdabc91f 100644
--- a/tests/unit/test_sos.py
+++ b/tests/unit/test_sos.py
@@ -77,8 +77,10 @@ class TestScaleOutScheduler(ZuulTestCase):
second_app.sched.local_layout_state.get("tenant-one"))
# Make sure only the first schedulers issued cat jobs
- self.assertIsNotNone(first_app.sched.merger.history.get("cat"))
- self.assertIsNone(second_app.sched.merger.history.get("cat"))
+ self.assertIsNotNone(
+ first_app.sched.merger.merger_api.history.get("cat"))
+ self.assertIsNone(
+ second_app.sched.merger.merger_api.history.get("cat"))
for _ in iterate_timeout(
10, "Wait for all schedulers to have the same system config"):
diff --git a/tests/unit/test_v3.py b/tests/unit/test_v3.py
index 8b0cb3bf1..3e49d0027 100644
--- a/tests/unit/test_v3.py
+++ b/tests/unit/test_v3.py
@@ -3208,8 +3208,7 @@ class TestNonLiveMerges(ZuulTestCase):
# We expect one merge call per live change, plus one call for
# each non-live change with a config update (which is all of them).
- merge_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == MergeRequest.MERGE]
+ merge_jobs = self.merge_job_history.get(MergeRequest.MERGE)
self.assertEqual(len(merge_jobs), 6)
def test_non_live_merges(self):
@@ -3233,8 +3232,7 @@ class TestNonLiveMerges(ZuulTestCase):
self.waitUntilSettled()
# We expect one merge call per live change.
- merge_jobs = [job for job in self.merge_job_history.values()
- if job.job_type == MergeRequest.MERGE]
+ merge_jobs = self.merge_job_history.get(MergeRequest.MERGE)
self.assertEqual(len(merge_jobs), 3)