From d8189cf6ef2e017b958076af265992e3568ead82 Mon Sep 17 00:00:00 2001 From: Dumitru Ceara Date: Thu, 14 Mar 2024 15:58:39 +0100 Subject: [PATCH] density_heavy: density_light: Fix startup stages when running in IC mode. In this mode we should actually distribute the ports that are created in the startup stage between AZs (clusters) instead of creating all of them in all AZs. Fixes: 2562afb45721 ("ovn-tester: extend density_light testing for ovn-ic") Fixes: 84649236d689 ("ovn-tester: extend density_heavy for ovn-ic") Signed-off-by: Dumitru Ceara --- .../cms/ovn_kubernetes/tests/density_heavy.py | 14 ++++++++++---- .../cms/ovn_kubernetes/tests/density_light.py | 8 +++++++- ovn-tester/ovn_utils.py | 6 ++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/ovn-tester/cms/ovn_kubernetes/tests/density_heavy.py b/ovn-tester/cms/ovn_kubernetes/tests/density_heavy.py index 1c3d87f1..9ad77ddc 100644 --- a/ovn-tester/cms/ovn_kubernetes/tests/density_heavy.py +++ b/ovn-tester/cms/ovn_kubernetes/tests/density_heavy.py @@ -2,6 +2,7 @@ from ovn_context import Context from cms.ovn_kubernetes import Namespace from ovn_ext_cmd import ExtCmd +from ovn_utils import distribute_n_tasks_per_clusters import ovn_load_balancer as lb import ovn_exceptions import netaddr @@ -72,13 +73,18 @@ def run(self, clusters, global_cfg): return ns = Namespace(clusters, 'ns_density_heavy', global_cfg) + n_startup_per_cluster = distribute_n_tasks_per_clusters( + self.config.n_startup, len(clusters) + ) + with Context( clusters, 'density_heavy_startup', brief_report=True ) as ctx: - for i in range( - 0, self.config.n_startup, self.config.pods_vip_ratio - ): - self.run_iteration(clusters, ns, i, global_cfg, passive=True) + for i in range(len(clusters)): + for j in range( + 0, n_startup_per_cluster[i], self.config.pods_vip_ratio + ): + self.run_iteration(clusters, ns, j, global_cfg, passive=True) with Context( clusters, diff --git a/ovn-tester/cms/ovn_kubernetes/tests/density_light.py b/ovn-tester/cms/ovn_kubernetes/tests/density_light.py index a0bf135d..c38bd161 100644 --- a/ovn-tester/cms/ovn_kubernetes/tests/density_light.py +++ b/ovn-tester/cms/ovn_kubernetes/tests/density_light.py @@ -2,6 +2,8 @@ from ovn_context import Context from cms.ovn_kubernetes import Namespace from ovn_ext_cmd import ExtCmd +from ovn_utils import distribute_n_tasks_per_clusters +import ovn_utils DensityCfg = namedtuple( @@ -21,12 +23,16 @@ def __init__(self, config, clusters, global_cfg): def run(self, clusters, global_cfg): ns = Namespace(clusters, 'ns_density_light', global_cfg) + n_startup_per_cluster = distribute_n_tasks_per_clusters( + self.config.n_startup, len(clusters) + ) + with Context( clusters, 'density_light_startup', len(clusters), brief_report=True ) as ctx: for i in ctx: ports = clusters[i].provision_ports( - self.config.n_startup, passive=True + n_startup_per_cluster[i], passive=True ) ns.add_ports(ports, i) diff --git a/ovn-tester/ovn_utils.py b/ovn-tester/ovn_utils.py index c79c0a11..0fa8b27a 100644 --- a/ovn-tester/ovn_utils.py +++ b/ovn-tester/ovn_utils.py @@ -912,3 +912,9 @@ def uuid_transaction(self, func): def ts_add(self): log.info('Creating transit switch') self.uuid_transaction(partial(self.idl.ts_add, 'ts')) + + +def distribute_n_tasks_per_clusters(n_tasks, n_clusters): + div, rest = divmod(n_tasks, n_clusters) + return [div + 1 if i < rest else 0 for i in range(n_clusters)] +