From fa7c238412b50836ea4acd0bcc7fd18ededf991c 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 | 16 ++++++++++++---- .../cms/ovn_kubernetes/tests/density_light.py | 7 ++++++- ovn-tester/ovn_utils.py | 5 +++++ 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..852cbd81 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,20 @@ 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..3327f016 100644 --- a/ovn-tester/cms/ovn_kubernetes/tests/density_light.py +++ b/ovn-tester/cms/ovn_kubernetes/tests/density_light.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 DensityCfg = namedtuple( @@ -21,12 +22,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..49293c94 100644 --- a/ovn-tester/ovn_utils.py +++ b/ovn-tester/ovn_utils.py @@ -912,3 +912,8 @@ 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 div for i in range(n_clusters)]