]> git.proxmox.com Git - mirror_frr.git/blobdiff - tests/topotests/mgmt_startup/test_config.py
tests: add unified config tests
[mirror_frr.git] / tests / topotests / mgmt_startup / test_config.py
index c215652daf6f540fde3e59e65f2e5e34b27bcca3..6a54f7191011d380e5216209876807fd553b4cf6 100644 (file)
@@ -26,13 +26,10 @@ Topotest compat:
 
 """
 
-import ipaddress
-import re
-
 import pytest
-from lib.common_config import retry, step
+from lib.common_config import step
 from lib.topogen import Topogen, TopoRouter
-from lib.topolog import logger
+from util import check_kernel
 
 # pytestmark = [pytest.mark.staticd, pytest.mark.mgmtd]
 pytestmark = [pytest.mark.staticd]
@@ -43,7 +40,7 @@ def tgen(request):
     "Setup/Teardown the environment and provide tgen argument to tests"
 
     topodef = {
-        "s1": ("r1", "r2", "r3"),
+        "s1": ("r1", "r2", "r3", "r4"),
     }
 
     tgen = Topogen(topodef, request.module.__name__)
@@ -63,34 +60,19 @@ def tgen(request):
     # configure mgmtd using backup config file `zebra.conf`
     tgen.gears["r3"].load_config(TopoRouter.RD_ZEBRA, "zebra.conf")
 
+    # configure mgmtd using current mgmtd config file
+    tgen.gears["r4"].load_frr_config("frr.conf")
+
     tgen.start_router()
     yield tgen
     tgen.stop_topology()
 
 
-@retry(retry_timeout=3, initial_wait=0.1)
-def check_kernel(r1, prefix, expected=True):
-    net = ipaddress.ip_network(prefix)
-    if net.version == 6:
-        kernel = r1.net.cmd_nostatus("ip -6 route show", warn=not expected)
-    else:
-        kernel = r1.net.cmd_nostatus("ip -4 route show", warn=not expected)
-
-    logger.debug("checking kernel routing table:\n%s", kernel)
-    route = f"{str(net)}(?: nhid [0-9]+)?.*proto (static|196)"
-    m = re.search(route, kernel)
-    if expected and not m:
-        return f"Failed to find \n'{route}'\n in \n'{kernel}'"
-    elif not expected and m:
-        return f"Failed found \n'{route}'\n in \n'{kernel}'"
-    return None
-
-
-def test_staticd_late_start(tgen):
+def test_staticd_routes_present(tgen):
     if tgen.routers_have_failure():
         pytest.skip(tgen.errors)
 
-    for x in ["r1", "r2", "r3"]:
+    for x in ["r1", "r2", "r3", "r4"]:
         tgen.gears[x].net.cmd_nostatus(
             "vtysh -c 'debug mgmt client frontend' "
             "-c 'debug mgmt client backend' "
@@ -100,6 +82,7 @@ def test_staticd_late_start(tgen):
     r1 = tgen.routers()["r1"]
     r2 = tgen.routers()["r2"]
     r3 = tgen.routers()["r3"]
+    r4 = tgen.routers()["r4"]
 
     step("Verifying routes are present on r1")
     result = check_kernel(r1, "12.0.0.0/24")
@@ -118,3 +101,9 @@ def test_staticd_late_start(tgen):
     assert result is None
     result = check_kernel(r3, "12.0.0.0/24")
     assert result is None
+
+    step("Verifying routes are present on r4")
+    result = check_kernel(r4, "11.0.0.0/24")
+    assert result is None
+    result = check_kernel(r4, "12.0.0.0/24")
+    assert result is None