From 21fca9bbcfda65395988874a3c7bef82317fb9f6 Mon Sep 17 00:00:00 2001 From: Igor Ryzhov Date: Sat, 13 Jan 2024 22:58:19 +0200 Subject: [PATCH] tests: add tests for mgmt get-data with config Signed-off-by: Igor Ryzhov --- tests/topotests/mgmt_oper/oper.py | 4 +-- tests/topotests/mgmt_oper/r1/frr-simple.conf | 4 ++- .../result-intf-description.json | 14 +++++++++++ .../result-intf-eth0-only-config.json | 10 ++++++++ .../result-intf-eth0-with-config.json | 25 +++++++++++++++++++ tests/topotests/mgmt_oper/test_simple.py | 15 +++++++++++ 6 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 tests/topotests/mgmt_oper/simple-results/result-intf-description.json create mode 100644 tests/topotests/mgmt_oper/simple-results/result-intf-eth0-only-config.json create mode 100644 tests/topotests/mgmt_oper/simple-results/result-intf-eth0-with-config.json diff --git a/tests/topotests/mgmt_oper/oper.py b/tests/topotests/mgmt_oper/oper.py index e3386067bc32..0f6c3cdf5f1e 100644 --- a/tests/topotests/mgmt_oper/oper.py +++ b/tests/topotests/mgmt_oper/oper.py @@ -66,7 +66,7 @@ def do_oper_test(tgen, query_results): r1 = tgen.gears["r1"].net qcmd = ( - r"vtysh -c 'show mgmt get-data {}' " + r"vtysh -c 'show mgmt get-data {} {}' " r"""| sed -e 's/"phy-address": ".*"/"phy-address": "rubout"/'""" r"""| sed -e 's/"uptime": ".*"/"uptime": "rubout"/'""" r"""| sed -e 's/"vrf": "[0-9]*"/"vrf": "rubout"/'""" @@ -81,7 +81,7 @@ def do_oper_test(tgen, query_results): if doreset: doreset = False expected = open(qr[1], encoding="ascii").read() - output = r1.cmd_nostatus(qcmd.format(qr[0])) + output = r1.cmd_nostatus(qcmd.format(qr[0], qr[2] if len(qr) > 2 else "")) try: ojson = json.loads(output) diff --git a/tests/topotests/mgmt_oper/r1/frr-simple.conf b/tests/topotests/mgmt_oper/r1/frr-simple.conf index cf8ba160f4b7..d262afe35945 100644 --- a/tests/topotests/mgmt_oper/r1/frr-simple.conf +++ b/tests/topotests/mgmt_oper/r1/frr-simple.conf @@ -14,10 +14,12 @@ debug mgmt client backend interface r1-eth0 ip address 1.1.1.1/24 + description r1-eth0-desc exit interface r1-eth1 vrf red ip address 3.3.3.1/24 + description r1-eth1-desc exit ip route 11.11.11.11/32 1.1.1.2 -!ip route 13.13.13.13/32 3.3.3.2 vrf red \ No newline at end of file +!ip route 13.13.13.13/32 3.3.3.2 vrf red diff --git a/tests/topotests/mgmt_oper/simple-results/result-intf-description.json b/tests/topotests/mgmt_oper/simple-results/result-intf-description.json new file mode 100644 index 000000000000..8f8092ec1a55 --- /dev/null +++ b/tests/topotests/mgmt_oper/simple-results/result-intf-description.json @@ -0,0 +1,14 @@ +{ + "frr-interface:lib": { + "interface": [ + { + "name": "r1-eth0", + "description": "r1-eth0-desc" + }, + { + "name": "r1-eth1", + "description": "r1-eth1-desc" + } + ] + } +} diff --git a/tests/topotests/mgmt_oper/simple-results/result-intf-eth0-only-config.json b/tests/topotests/mgmt_oper/simple-results/result-intf-eth0-only-config.json new file mode 100644 index 000000000000..adcf99053fca --- /dev/null +++ b/tests/topotests/mgmt_oper/simple-results/result-intf-eth0-only-config.json @@ -0,0 +1,10 @@ +{ + "frr-interface:lib": { + "interface": [ + { + "name": "r1-eth0", + "description": "r1-eth0-desc" + } + ] + } +} diff --git a/tests/topotests/mgmt_oper/simple-results/result-intf-eth0-with-config.json b/tests/topotests/mgmt_oper/simple-results/result-intf-eth0-with-config.json new file mode 100644 index 000000000000..47c96862522f --- /dev/null +++ b/tests/topotests/mgmt_oper/simple-results/result-intf-eth0-with-config.json @@ -0,0 +1,25 @@ +{ + "frr-interface:lib": { + "interface": [ + { + "name": "r1-eth0", + "vrf": "default", + "description": "r1-eth0-desc", + "state": { + "if-index": "rubout", + "mtu": 1500, + "mtu6": 1500, + "speed": 10000, + "metric": 0, + "phy-address": "rubout" + }, + "frr-zebra:zebra": { + "state": { + "up-count": 0, + "down-count": 0 + } + } + } + ] + } +} diff --git a/tests/topotests/mgmt_oper/test_simple.py b/tests/topotests/mgmt_oper/test_simple.py index 008733ee724c..2f75dfc822f2 100644 --- a/tests/topotests/mgmt_oper/test_simple.py +++ b/tests/topotests/mgmt_oper/test_simple.py @@ -112,6 +112,21 @@ def test_oper_simple(tgen): 'route[prefix="1.1.1.0/24"]/route-entry[protocol="connected"]/metric', "simple-results/result-singleton-metric.json", ), + ( + '/frr-interface:lib/interface[name="r1-eth0"]', + "simple-results/result-intf-eth0-with-config.json", + "with-config", + ), + ( + '/frr-interface:lib/interface[name="r1-eth0"]', + "simple-results/result-intf-eth0-only-config.json", + "only-config", + ), + ( + "/frr-interface:lib/interface/description", + "simple-results/result-intf-description.json", + "with-config", + ), # Interface state ( '/frr-interface:lib/interface[name="r1-eth0"]/state',