]> git.proxmox.com Git - mirror_frr.git/commitdiff
tests: Fix topotests for bgp_srv6l3vpn
authorRyoga Saito <ryoga.saito@linecorp.com>
Sun, 4 Dec 2022 07:51:24 +0000 (16:51 +0900)
committerRyoga Saito <ryoga.saito@linecorp.com>
Sun, 4 Dec 2022 08:02:30 +0000 (17:02 +0900)
In bgp_srv6l3vpn tests, check_ping checks reachability. However, this
function have a bug and if we set expect_connected to True, check will
pass even if all ping packets are lost. This commit fixes this issue.

Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
tests/topotests/bgp_srv6l3vpn_to_bgp_vrf/test_bgp_srv6l3vpn_to_bgp_vrf.py
tests/topotests/bgp_srv6l3vpn_to_bgp_vrf2/test_bgp_srv6l3vpn_to_bgp_vrf2.py
tests/topotests/bgp_srv6l3vpn_to_bgp_vrf3/test_bgp_srv6l3vpn_to_bgp_vrf3.py

index 10d890effb30a636f44c5c862168774363187780..7c23d4c576462a0e96486abc911deb0f77039ed1 100755 (executable)
@@ -155,7 +155,7 @@ def check_ping(name, dest_addr, expect_connected):
         if match not in output:
             return "ping fail"
 
-    match = "{} packet loss".format("0%" if expect_connected else "100%")
+    match = "{} packet loss".format("0%" if expect_connected else "100%")
     logger.info("[+] check {} {} {}".format(name, dest_addr, match))
     tgen = get_topogen()
     func = functools.partial(_check, name, dest_addr, match)
index af66a5a7919eea8f7336247d521c687893b9e296..1209e9d6e3789a24bcbb7350b27ecab3156790a7 100755 (executable)
@@ -69,10 +69,12 @@ def setup_module(mod):
     tgen.start_topology()
     for rname, router in tgen.routers().items():
         router.run("/bin/bash {}/{}/setup.sh".format(CWD, rname))
-        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_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
+        )
+        router.load_config(
+            TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
+        )
 
     tgen.gears["r1"].run("sysctl net.vrf.strict_mode=1")
     tgen.gears["r1"].run("ip link add vrf10 type vrf table 10")
@@ -114,7 +116,7 @@ def check_ping(name, dest_addr, expect_connected):
         logger.info(output)
         assert match in output, "ping fail"
 
-    match = "{} packet loss".format("0%" if expect_connected else "100%")
+    match = "{} packet loss".format("0%" if expect_connected else "100%")
     logger.info("[+] check {} {} {}".format(name, dest_addr, match))
     tgen = get_topogen()
     func = functools.partial(_check, name, dest_addr, match)
@@ -131,7 +133,7 @@ def check_rib(name, cmd, expected_file):
         expected = open_json_file("{}/{}".format(CWD, expected_file))
         return topotest.json_cmp(output, expected)
 
-    logger.info("[+] check {} \"{}\" {}".format(name, cmd, expected_file))
+    logger.info('[+] check {} "{}" {}'.format(name, cmd, expected_file))
     tgen = get_topogen()
     func = functools.partial(_check, name, cmd, expected_file)
     success, result = topotest.run_and_expect(func, None, count=10, wait=0.5)
@@ -154,16 +156,16 @@ def test_rib():
 
 
 def test_ping():
-    check_ping("ce1", "192.168.2.2", " 0% packet loss")
-    check_ping("ce1", "192.168.3.2", " 0% packet loss")
-    check_ping("ce1", "192.168.4.2", " 100% packet loss")
-    check_ping("ce1", "192.168.5.2", " 100% packet loss")
-    check_ping("ce1", "192.168.6.2", " 100% packet loss")
-    check_ping("ce4", "192.168.1.2", " 100% packet loss")
-    check_ping("ce4", "192.168.2.2", " 100% packet loss")
-    check_ping("ce4", "192.168.3.2", " 100% packet loss")
-    check_ping("ce4", "192.168.5.2", " 0% packet loss")
-    check_ping("ce4", "192.168.6.2", " 0% packet loss")
+    check_ping("ce1", "192.168.2.2", True)
+    check_ping("ce1", "192.168.3.2", True)
+    check_ping("ce1", "192.168.4.2", False)
+    check_ping("ce1", "192.168.5.2", False)
+    check_ping("ce1", "192.168.6.2", False)
+    check_ping("ce4", "192.168.1.2", False)
+    check_ping("ce4", "192.168.2.2", False)
+    check_ping("ce4", "192.168.3.2", False)
+    check_ping("ce4", "192.168.5.2", True)
+    check_ping("ce4", "192.168.6.2", True)
 
 
 if __name__ == "__main__":
index e410bbbdeb3c6c59a7b067a3c149a9bbd2da2edf..61ac7418a456fcb339ef0cc9d1ebba4f8f9b6ff4 100644 (file)
@@ -66,10 +66,12 @@ def setup_module(mod):
     tgen.start_topology()
     for rname, router in tgen.routers().items():
         router.run("/bin/bash {}/{}/setup.sh".format(CWD, rname))
-        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_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
+        )
+        router.load_config(
+            TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
+        )
 
     tgen.gears["r1"].run("sysctl net.vrf.strict_mode=1")
     tgen.gears["r1"].run("ip link add vrf10 type vrf table 10")
@@ -111,7 +113,7 @@ def check_ping4(name, dest_addr, expect_connected):
         logger.info(output)
         assert match in output, "ping fail"
 
-    match = "{} packet loss".format("0%" if expect_connected else "100%")
+    match = "{} packet loss".format("0%" if expect_connected else "100%")
     logger.info("[+] check {} {} {}".format(name, dest_addr, match))
     tgen = get_topogen()
     func = functools.partial(_check, name, dest_addr, match)
@@ -144,7 +146,7 @@ def check_rib(name, cmd, expected_file):
         expected = open_json_file("{}/{}".format(CWD, expected_file))
         return topotest.json_cmp(output, expected)
 
-    logger.info("[+] check {} \"{}\" {}".format(name, cmd, expected_file))
+    logger.info('[+] check {} "{}" {}'.format(name, cmd, expected_file))
     tgen = get_topogen()
     func = functools.partial(_check, name, cmd, expected_file)
     success, result = topotest.run_and_expect(func, None, count=10, wait=0.5)
@@ -214,10 +216,18 @@ def test_bgp_sid_vpn_export_disable():
            no sid vpn per-vrf export
         """
     )
-    check_rib("r1", "show bgp ipv4 vpn json", "r1/vpnv4_rib_sid_vpn_export_disabled.json")
-    check_rib("r2", "show bgp ipv4 vpn json", "r2/vpnv4_rib_sid_vpn_export_disabled.json")
-    check_rib("r1", "show bgp ipv6 vpn json", "r1/vpnv6_rib_sid_vpn_export_disabled.json")
-    check_rib("r2", "show bgp ipv6 vpn json", "r2/vpnv6_rib_sid_vpn_export_disabled.json")
+    check_rib(
+        "r1", "show bgp ipv4 vpn json", "r1/vpnv4_rib_sid_vpn_export_disabled.json"
+    )
+    check_rib(
+        "r2", "show bgp ipv4 vpn json", "r2/vpnv4_rib_sid_vpn_export_disabled.json"
+    )
+    check_rib(
+        "r1", "show bgp ipv6 vpn json", "r1/vpnv6_rib_sid_vpn_export_disabled.json"
+    )
+    check_rib(
+        "r2", "show bgp ipv6 vpn json", "r2/vpnv6_rib_sid_vpn_export_disabled.json"
+    )
     check_ping4("ce1", "192.168.2.2", False)
     check_ping6("ce1", "2001:2::2", False)
 
@@ -233,10 +243,18 @@ def test_bgp_sid_vpn_export_reenable():
            sid vpn per-vrf export auto
         """
     )
-    check_rib("r1", "show bgp ipv4 vpn json", "r1/vpnv4_rib_sid_vpn_export_reenabled.json")
-    check_rib("r2", "show bgp ipv4 vpn json", "r2/vpnv4_rib_sid_vpn_export_reenabled.json")
-    check_rib("r1", "show bgp ipv6 vpn json", "r1/vpnv6_rib_sid_vpn_export_reenabled.json")
-    check_rib("r2", "show bgp ipv6 vpn json", "r2/vpnv6_rib_sid_vpn_export_reenabled.json")
+    check_rib(
+        "r1", "show bgp ipv4 vpn json", "r1/vpnv4_rib_sid_vpn_export_reenabled.json"
+    )
+    check_rib(
+        "r2", "show bgp ipv4 vpn json", "r2/vpnv4_rib_sid_vpn_export_reenabled.json"
+    )
+    check_rib(
+        "r1", "show bgp ipv6 vpn json", "r1/vpnv6_rib_sid_vpn_export_reenabled.json"
+    )
+    check_rib(
+        "r2", "show bgp ipv6 vpn json", "r2/vpnv6_rib_sid_vpn_export_reenabled.json"
+    )
     check_ping4("ce1", "192.168.2.2", True)
     check_ping6("ce1", "2001:2::2", True)