diff options
author | Ivan Ivanets <iivanets@cisco.com> | 2024-10-31 18:55:27 +0000 |
---|---|---|
committer | Dave Wallace <dwallacelf@gmail.com> | 2024-11-19 16:52:48 +0000 |
commit | 9765e2763545fbf2879456d53557fab849534765 (patch) | |
tree | 41312b92e3a5c71c78509e5b1158119d2dfc559e /test/vm_vpp_interfaces.py | |
parent | a2bc88bb694302fa6e2e65fca737ca3dd3b0854e (diff) |
tests: vpp_qemu_utils with concurrency handling
Type: test
Enhance vpp_qemu_utils functions with mutex locking, handle namespace
and
host interface existence, unique namespace/interface name, error
handling and retries, check error code explicitly.
Change-Id: I1ea66eeefbc1fee9b58e8b9886f4dd6fd8d33444
Signed-off-by: Ivan Ivanets <iivanets@cisco.com>
Diffstat (limited to 'test/vm_vpp_interfaces.py')
-rw-r--r-- | test/vm_vpp_interfaces.py | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/test/vm_vpp_interfaces.py b/test/vm_vpp_interfaces.py index 0f1e33d679b..66f88969ccd 100644 --- a/test/vm_vpp_interfaces.py +++ b/test/vm_vpp_interfaces.py @@ -3,9 +3,9 @@ import unittest from ipaddress import ip_address, ip_interface from vpp_qemu_utils import ( create_namespace, - delete_namespace, + delete_all_namespaces, create_host_interface, - delete_host_interfaces, + delete_all_host_interfaces, set_interface_mtu, disable_interface_gso, add_namespace_route, @@ -18,6 +18,7 @@ from config import config from vpp_papi import VppEnum import time import sys +import os from vm_test_config import test_config # @@ -226,7 +227,16 @@ class TestVPPInterfacesQemu: # prevent conflicts when TEST_JOBS > 1 self.client_namespace = test_config["client_namespace"] + str(test["id"]) self.server_namespace = test_config["server_namespace"] + str(test["id"]) - create_namespace([self.client_namespace, self.server_namespace]) + self.ns_history_file = ( + f"{config.tmp_dir}/vpp-unittest-{self.__class__.__name__}/history_ns.txt" + ) + self.if_history_name = ( + f"{config.tmp_dir}/vpp-unittest-{self.__class__.__name__}/history_if.txt" + ) + delete_all_namespaces(self.ns_history_file) + create_namespace( + self.ns_history_file, ns=[self.client_namespace, self.server_namespace] + ) # Set a unique iPerf port for parallel server and client runs self.iperf_port = 5000 + test["id"] # IPerf client & server ingress/egress interface indexes in VPP @@ -258,11 +268,11 @@ class TestVPPInterfacesQemu: "iprf_server_interface_on_vpp" ] + str(test["id"]) # Handle client interface types + delete_all_host_interfaces(self.if_history_name) for client_if_type in client_if_types: if client_if_type == "af_packet": create_host_interface( - self.iprf_client_host_interface_on_linux, - self.iprf_client_host_interface_on_vpp, + self.if_history_name, self.client_namespace, ( layer2["client_ip4_prefix"] @@ -274,6 +284,8 @@ class TestVPPInterfacesQemu: if x_connect_mode == "L2" else layer3["client_ip6_prefix"] ), + vpp_if_name=self.iprf_client_host_interface_on_vpp, + host_if_name=self.iprf_client_host_interface_on_linux, ) self.ingress_if_idx = self.create_af_packet( version=client_if_version, @@ -352,11 +364,12 @@ class TestVPPInterfacesQemu: for server_if_type in server_if_types: if server_if_type == "af_packet": create_host_interface( - self.iprf_server_host_interface_on_linux, - self.iprf_server_host_interface_on_vpp, + self.if_history_name, self.server_namespace, server_ip4_prefix, server_ip6_prefix, + vpp_if_name=self.iprf_server_host_interface_on_vpp, + host_if_name=self.iprf_server_host_interface_on_linux, ) self.egress_if_idx = self.create_af_packet( version=server_if_version, @@ -480,12 +493,7 @@ class TestVPPInterfacesQemu: except Exception: pass try: - delete_host_interfaces( - self.iprf_client_host_interface_on_linux, - self.iprf_server_host_interface_on_linux, - self.iprf_client_host_interface_on_vpp, - self.iprf_server_host_interface_on_vpp, - ) + delete_all_host_interfaces(self.if_history_name) except Exception: pass try: @@ -506,12 +514,7 @@ class TestVPPInterfacesQemu: except Exception: pass try: - delete_namespace( - [ - self.client_namespace, - self.server_namespace, - ] - ) + delete_all_namespaces(self.ns_history_file) except Exception: pass try: |