diff options
-rw-r--r-- | tests/base.py | 37 | ||||
-rw-r--r-- | tests/unit/test_configloader.py | 16 | ||||
-rw-r--r-- | tests/unit/test_github_driver.py | 6 | ||||
-rw-r--r-- | tests/unit/test_scheduler.py | 12 | ||||
-rw-r--r-- | tests/unit/test_sos.py | 6 | ||||
-rw-r--r-- | tests/unit/test_v3.py | 6 |
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) |