forked from FRRouting/frr
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Christian Hopps <chopps@labn.net>
- Loading branch information
Showing
2 changed files
with
140 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
log timestamp precision 6 | ||
log file frr.log | ||
|
||
! debug mgmt backend datastore frontend transaction | ||
! debug mgmt client frontend | ||
! debug mgmt client backend | ||
|
||
interface r1-eth0 | ||
ip address 1.1.1.1/24 | ||
exit | ||
ip route 11.11.11.11/32 1.1.1.2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
#!/usr/bin/env python | ||
# -*- coding: utf-8 eval: (blacken-mode 1) -*- | ||
# SPDX-License-Identifier: ISC | ||
# | ||
# Copyright (c) 2021, LabN Consulting, L.L.C. | ||
# Copyright (c) 2019-2020 by | ||
# Donatas Abraitis <donatas.abraitis@gmail.com> | ||
# | ||
# noqa: E501 | ||
# | ||
""" | ||
Test static route functionality | ||
""" | ||
import pytest | ||
from lib.common_config import step | ||
from lib.topogen import Topogen | ||
from munet.watchlog import WatchLog | ||
|
||
pytestmark = [pytest.mark.staticd] | ||
|
||
|
||
@pytest.fixture(scope="module") | ||
def tgen(request): | ||
"Setup/Teardown the environment and provide tgen argument to tests" | ||
|
||
topodef = {"s1": ("r1",)} | ||
tgen = Topogen(topodef, request.module.__name__) | ||
tgen.start_topology() | ||
|
||
for rname, router in tgen.routers().items(): | ||
router.load_frr_config("frr.conf") | ||
|
||
tgen.start_router() | ||
yield tgen | ||
tgen.stop_topology() | ||
|
||
|
||
def test_client_debug_enable(tgen): | ||
if tgen.routers_have_failure(): | ||
pytest.skip(tgen.errors) | ||
|
||
r1 = tgen.gears["r1"] | ||
|
||
# Start watching log files | ||
watch_mgmtd_log = WatchLog(r1.net.rundir / "mgmtd.log") | ||
watch_staticd_log = WatchLog(r1.net.rundir / "staticd.log") | ||
|
||
def __test_debug(r1, on): | ||
watch_mgmtd_log.snapshot() | ||
watch_staticd_log.snapshot() | ||
|
||
# Add ip route and remove look for debug. | ||
r1.vtysh_cmd("conf t\nip route 11.11.11.11/32 1.1.1.2") | ||
r1.vtysh_cmd("conf t\nno ip route 11.11.11.11/32 1.1.1.2") | ||
|
||
new_mgmt_logs = watch_mgmtd_log.snapshot() | ||
new_be_logs = watch_staticd_log.snapshot() | ||
|
||
fe_cl_msg = "Sending SET_CONFIG_REQ" | ||
fe_ad_msg = "Got SETCFG_REQ" | ||
be_ad_msg = "Sending CFGDATA_CREATE_REQ" | ||
be_cl_msg = "Got CFG_APPLY_REQ" | ||
|
||
if on: | ||
assert fe_cl_msg in new_mgmt_logs | ||
assert fe_ad_msg in new_mgmt_logs | ||
assert be_ad_msg in new_mgmt_logs | ||
assert be_cl_msg in new_be_logs | ||
else: | ||
assert fe_cl_msg not in new_mgmt_logs | ||
assert fe_ad_msg not in new_mgmt_logs | ||
assert be_ad_msg not in new_mgmt_logs | ||
assert be_cl_msg not in new_be_logs | ||
|
||
step("test debug off") | ||
__test_debug(r1, False) | ||
|
||
# Turn it on | ||
step("tests debug on") | ||
r1.vtysh_cmd("debug mgmt client frontend") | ||
r1.vtysh_cmd("debug mgmt client backend") | ||
r1.vtysh_cmd("debug mgmt backend frontend") | ||
__test_debug(r1, True) | ||
|
||
# Turn it off | ||
step("tests debug off") | ||
r1.vtysh_cmd("no debug mgmt client frontend") | ||
r1.vtysh_cmd("no debug mgmt client backend") | ||
r1.vtysh_cmd("no debug mgmt backend frontend") | ||
__test_debug(r1, False) | ||
|
||
# Configure it on | ||
step("tests debug on") | ||
r1.vtysh_cmd("conf t\ndebug mgmt client frontend") | ||
r1.vtysh_cmd("conf t\ndebug mgmt client backend") | ||
r1.vtysh_cmd("conf t\ndebug mgmt backend frontend") | ||
__test_debug(r1, True) | ||
|
||
# Configure it off | ||
step("tests debug off") | ||
r1.vtysh_cmd("conf t\nno debug mgmt client frontend") | ||
r1.vtysh_cmd("conf t\nno debug mgmt client backend") | ||
r1.vtysh_cmd("conf t\nno debug mgmt backend frontend") | ||
__test_debug(r1, False) | ||
|
||
# Turn it on | ||
step("tests debug on") | ||
r1.vtysh_cmd("debug mgmt client frontend") | ||
r1.vtysh_cmd("debug mgmt client backend") | ||
r1.vtysh_cmd("debug mgmt backend frontend") | ||
__test_debug(r1, True) | ||
# Configure it on | ||
step("tests debug on") | ||
r1.vtysh_cmd("conf t\ndebug mgmt client frontend") | ||
r1.vtysh_cmd("conf t\ndebug mgmt client backend") | ||
r1.vtysh_cmd("conf t\ndebug mgmt backend frontend") | ||
__test_debug(r1, True) | ||
# Turn it off | ||
step("tests debug on") | ||
r1.vtysh_cmd("no debug mgmt client frontend") | ||
r1.vtysh_cmd("no debug mgmt client backend") | ||
r1.vtysh_cmd("no debug mgmt backend frontend") | ||
__test_debug(r1, True) | ||
# Configure it off | ||
step("tests debug off") | ||
r1.vtysh_cmd("conf t\nno debug mgmt client frontend") | ||
r1.vtysh_cmd("conf t\nno debug mgmt client backend") | ||
r1.vtysh_cmd("conf t\nno debug mgmt backend frontend") | ||
__test_debug(r1, False) |