summaryrefslogtreecommitdiff
path: root/tests/topotests/all_protocol_startup/test_all_protocol_startup.py
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2024-09-19 21:06:40 -0400
committerDonald Sharp <sharpd@nvidia.com>2024-11-25 13:12:10 -0500
commitc23f505f45bd0cb670386149a50ae744f5c5bda5 (patch)
treefeae47179d45f3a4728faedf0270050a6f95a806 /tests/topotests/all_protocol_startup/test_all_protocol_startup.py
parent069dff269e8516aec24d0ae4408ac5344c5fd2e0 (diff)
tests: Add some test cases for missed coverage
I noticed that there was some missed code coverage in zebra. multicast [enable|disable] and show interface description vrf all Add a bit to get it covered. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'tests/topotests/all_protocol_startup/test_all_protocol_startup.py')
-rw-r--r--tests/topotests/all_protocol_startup/test_all_protocol_startup.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/topotests/all_protocol_startup/test_all_protocol_startup.py b/tests/topotests/all_protocol_startup/test_all_protocol_startup.py
index 0ffd762734..06a350c8e9 100644
--- a/tests/topotests/all_protocol_startup/test_all_protocol_startup.py
+++ b/tests/topotests/all_protocol_startup/test_all_protocol_startup.py
@@ -20,6 +20,7 @@ import sys
import pytest
import glob
from time import sleep
+from lib.topolog import logger
pytestmark = [
pytest.mark.babeld,
@@ -1715,6 +1716,77 @@ def test_resilient_nexthop_group():
net["r1"].cmd('vtysh -c "conf" -c "no nexthop-group resilience"')
+def test_interface_stuff():
+ global fatal_error
+ net = get_topogen().net
+
+ # Skip if previous fatal error condition is raised
+ if fatal_error != "":
+ pytest.skip(fatal_error)
+
+ print("\n\n** Verifying some interface code")
+ print("************************************\n")
+
+ net["r1"].cmd('vtysh -c "conf" -c "interface r1-eth0" -c "multicast enable"')
+
+ def _test_interface_multicast_on():
+ output = json.loads(net["r1"].cmd('vtysh -c "show int r1-eth0 json"'))
+ expected = {
+ "r1-eth0": {
+ "flags": "<UP,LOWER_UP,BROADCAST,RUNNING,MULTICAST>",
+ "multicastConfig": "Enabled by CLI",
+ }
+ }
+ return topotest.json_cmp(output, expected)
+
+ test_func = functools.partial(_test_interface_multicast_on)
+ _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+ assert result is None, "Multicast bit was not set on r1-eth0"
+
+ net["r1"].cmd('vtysh -c "conf" -c "interface r1-eth0" -c "multicast disable"')
+
+ def _test_interface_multicast_off():
+ output = json.loads(
+ net["r1"].cmd('vtysh -c "show int r1-eth0 vrf default json"')
+ )
+ expected = {
+ "r1-eth0": {
+ "flags": "<UP,LOWER_UP,BROADCAST,RUNNING>",
+ "multicastConfig": "Disabled by CLI",
+ }
+ }
+ return topotest.json_cmp(output, expected)
+
+ test_func = functools.partial(_test_interface_multicast_off)
+ _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+ assert result is None, "Multicast bit was not turned off on r1-eth0"
+
+ net["r1"].cmd('vtysh -c "conf" -c "interface r1-eth0" -c "no multicast disable"')
+
+ def _test_interface_multicast_disable():
+ output = json.loads(net["r1"].cmd('vtysh -c "show int r1-eth0 json"'))
+ expected = {
+ "r1-eth0": {
+ "flags": "<UP,LOWER_UP,BROADCAST,RUNNING>",
+ "multicastConfig": "Not specified by CLI",
+ }
+ }
+ return topotest.json_cmp(output, expected)
+
+ test_func = functools.partial(_test_interface_multicast_disable)
+ _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+ assert result is None, "Multicast bit was set on r1-eth0"
+
+ logger.info("Ensure that these commands are still nominally working")
+ rc, o, e = net["r1"].cmd_status('vtysh -c "show interface description vrf all"')
+ logger.info(o)
+ assert rc == 0
+
+ rc, o, e = net["r1"].cmd_status('vtysh -c "show interface description vrf default"')
+ logger.info(o)
+ assert rc == 0
+
+
def test_shutdown_check_stderr():
global fatal_error
net = get_topogen().net