"""
-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]
"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__)
# 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' "
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")
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