tests: add iproute2 API guard to svd test

Add a iproute2 API guard to the SVD test using `bridge fdb get`.

While it SHOULD be present on most systems based on their kernel
version it may not be present due to kernel/iproute2 version mismatch
weirdness.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
This commit is contained in:
Stephen Worley 2023-02-13 18:09:54 -05:00
parent cc07a819e4
commit 51c33a5724
2 changed files with 26 additions and 0 deletions

View File

@ -205,6 +205,9 @@ def check_vni_macs_present(tgen, router, vni, maclist):
return None
def check_flood_entry_present(pe, vni, vtep):
if not topotest.iproute2_is_fdb_get_capable():
return None
output = pe.run("bridge fdb get 00:00:00:00:00:00 dev vxlan0 vni {} self".format(vni))
if str(vtep) not in output:

View File

@ -595,6 +595,29 @@ def iproute2_is_vrf_capable():
pass
return False
def iproute2_is_fdb_get_capable():
"""
Checks if the iproute2 version installed on the system is capable of
handling `bridge fdb get` commands to query neigh table resolution.
Returns True if capability can be detected, returns False otherwise.
"""
if is_linux():
try:
subp = subprocess.Popen(
["bridge", "fdb", "get", "help"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE,
)
iproute2_out = subp.communicate()[1].splitlines()[0].split()[0]
if "Usage" in str(iproute2_out):
return True
except Exception:
pass
return False
def module_present_linux(module, load):
"""