summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show.json5
-rw-r--r--tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show_set.json5
-rw-r--r--tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show_unset.json5
-rwxr-xr-xtests/topotests/srv6_encap_src_addr/test_srv6_encap_src_addr.py50
4 files changed, 49 insertions, 16 deletions
diff --git a/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show.json b/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show.json
new file mode 100644
index 0000000000..868e7180f0
--- /dev/null
+++ b/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show.json
@@ -0,0 +1,5 @@
+[
+ {
+ "tunsrc": "fc00:0:1::1"
+ }
+] \ No newline at end of file
diff --git a/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show_set.json b/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show_set.json
new file mode 100644
index 0000000000..868e7180f0
--- /dev/null
+++ b/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show_set.json
@@ -0,0 +1,5 @@
+[
+ {
+ "tunsrc": "fc00:0:1::1"
+ }
+] \ No newline at end of file
diff --git a/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show_unset.json b/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show_unset.json
new file mode 100644
index 0000000000..309050f5ce
--- /dev/null
+++ b/tests/topotests/srv6_encap_src_addr/r1/ip_tunsrc_show_unset.json
@@ -0,0 +1,5 @@
+[
+ {
+ "tunsrc": "::"
+ }
+] \ No newline at end of file
diff --git a/tests/topotests/srv6_encap_src_addr/test_srv6_encap_src_addr.py b/tests/topotests/srv6_encap_src_addr/test_srv6_encap_src_addr.py
index 854bc1cdad..2db5e70695 100755
--- a/tests/topotests/srv6_encap_src_addr/test_srv6_encap_src_addr.py
+++ b/tests/topotests/srv6_encap_src_addr/test_srv6_encap_src_addr.py
@@ -18,6 +18,7 @@ import os
import sys
import json
import pytest
+from functools import partial
CWD = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(CWD, "../"))
@@ -27,7 +28,7 @@ from lib import topotest
from lib.topogen import Topogen, TopoRouter, get_topogen
from lib.topolog import logger
-pytestmark = [pytest.mark.bgpd, pytest.mark.sharpd]
+pytestmark = [pytest.mark.sharpd]
def open_json_file(filename):
@@ -46,12 +47,6 @@ def setup_module(mod):
router.load_config(
TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
)
- router.load_config(
- TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
- )
- router.load_config(
- TopoRouter.RD_SHARP, os.path.join(CWD, "{}/sharpd.conf".format(rname))
- )
tgen.start_router()
@@ -60,6 +55,28 @@ def teardown_module():
tgen.stop_topology()
+def router_compare_json_output(rname, command, reference, count=120, wait=0.5):
+ "Compare router JSON output"
+
+ def _router_json_cmp(router, cmd, data, exact=False):
+ """
+ Runs `cmd` that returns JSON data and compare with `data` contents.
+ """
+ return topotest.json_cmp(json.loads(router.cmd(cmd)), data, exact)
+
+ logger.info('Comparing router "%s" "%s" output', rname, command)
+
+ tgen = get_topogen()
+ filename = "{}/{}/{}".format(CWD, rname, reference)
+ expected = json.loads(open(filename).read())
+
+ # Run test function until we get an result. Wait at most 60 seconds.
+ test_func = partial(_router_json_cmp, tgen.gears[rname], command, expected)
+ _, diff = topotest.run_and_expect(test_func, None, count=count, wait=wait)
+ assertmsg = '"{}" JSON output mismatches the expected result'.format(rname)
+ assert diff is None, assertmsg
+
+
def test_zebra_srv6_encap_src_addr(tgen):
"Test SRv6 encapsulation source address."
logger.info("Test SRv6 encapsulation source address.")
@@ -70,12 +87,11 @@ def test_zebra_srv6_encap_src_addr(tgen):
expected = json.loads(open(json_file).read())
ok = topotest.router_json_cmp_retry(
- r1, "show segment-routing srv6 manager json", expected
+ r1, "show segment-routing srv6 manager json", expected, retry_timeout=15
)
assert ok, '"r1" JSON output mismatches'
- output = r1.cmd("ip sr tunsrc show")
- assert output == "tunsrc addr fc00:0:1::1\n"
+ router_compare_json_output("r1", "ip --json sr tunsrc show", "ip_tunsrc_show.json")
def test_zebra_srv6_encap_src_addr_unset(tgen):
@@ -99,12 +115,13 @@ def test_zebra_srv6_encap_src_addr_unset(tgen):
expected = json.loads(open(json_file).read())
ok = topotest.router_json_cmp_retry(
- r1, "show segment-routing srv6 manager json", expected
+ r1, "show segment-routing srv6 manager json", expected, retry_timeout=15
)
assert ok, '"r1" JSON output mismatches'
- output = r1.cmd("ip sr tunsrc show")
- assert output == "tunsrc addr ::\n"
+ router_compare_json_output(
+ "r1", "ip --json sr tunsrc show", "ip_tunsrc_show_unset.json"
+ )
def test_zebra_srv6_encap_src_addr_set(tgen):
@@ -128,12 +145,13 @@ def test_zebra_srv6_encap_src_addr_set(tgen):
expected = json.loads(open(json_file).read())
ok = topotest.router_json_cmp_retry(
- r1, "show segment-routing srv6 manager json", expected
+ r1, "show segment-routing srv6 manager json", expected, retry_timeout=15
)
assert ok, '"r1" JSON output mismatches'
- output = r1.cmd("ip sr tunsrc show")
- assert output == "tunsrc addr fc00:0:1::1\n"
+ router_compare_json_output(
+ "r1", "ip --json sr tunsrc show", "ip_tunsrc_show_set.json"
+ )
if __name__ == "__main__":