tests: do not run qemu interface tests if the environment does not allow it

cdf73b9731 has added the qemu tests as part of the default test run,
which results in "make test" failure in more restricted environments which do not allow the
namespace creation.

Add a config flag to skip those tests, and skip them if the namespace creation fails.

Type: test
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
Change-Id: Ie631f7fb2a80864f77c79619eba4a43712e950e5
This commit is contained in:
Andrew Yourtchenko
2023-06-20 14:52:08 +00:00
parent 4aeba37762
commit 9ba6dcf558
3 changed files with 39 additions and 2 deletions

View File

@@ -6,6 +6,22 @@ import subprocess
import sys
def can_create_namespaces():
"""Check if the environment allows creating the namespaces"""
try:
namespace = "vpp_chk_4212"
result = subprocess.run(["ip", "netns", "add", namespace], capture_output=True)
if result.returncode != 0:
return False
result = subprocess.run(["ip", "netns", "del", namespace], capture_output=True)
if result.returncode != 0:
return False
return True
except:
return False
def create_namespace(ns):
"""create one or more namespaces.
@@ -18,7 +34,9 @@ def create_namespace(ns):
namespaces = ns
try:
for namespace in namespaces:
subprocess.run(["ip", "netns", "add", namespace])
result = subprocess.run(["ip", "netns", "add", namespace])
if result.returncode != 0:
raise Exception(f"Error while creating namespace {namespace}")
except subprocess.CalledProcessError as e:
raise Exception("Error creating namespace:", e.output)
@@ -207,7 +225,11 @@ def delete_namespace(namespaces):
"""
try:
for namespace in namespaces:
subprocess.run(["ip", "netns", "del", namespace], capture_output=True)
result = subprocess.run(
["ip", "netns", "del", namespace], capture_output=True
)
if result.returncode != 0:
raise Exception(f"Error while deleting namespace {namespace}")
except subprocess.CalledProcessError as e:
raise Exception("Error deleting namespace:", e.output)