summaryrefslogtreecommitdiffstats
path: root/tests/topotests/bgp_vpnv4_ebgp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/topotests/bgp_vpnv4_ebgp')
-rw-r--r--tests/topotests/bgp_vpnv4_ebgp/r1/bgpd.conf1
-rw-r--r--tests/topotests/bgp_vpnv4_ebgp/test_bgp_vpnv4_ebgp.py162
2 files changed, 163 insertions, 0 deletions
diff --git a/tests/topotests/bgp_vpnv4_ebgp/r1/bgpd.conf b/tests/topotests/bgp_vpnv4_ebgp/r1/bgpd.conf
index 0249279..d8a45ce 100644
--- a/tests/topotests/bgp_vpnv4_ebgp/r1/bgpd.conf
+++ b/tests/topotests/bgp_vpnv4_ebgp/r1/bgpd.conf
@@ -1,3 +1,4 @@
+bgp route-map delay-timer 1
router bgp 65500
bgp router-id 192.0.2.1
no bgp ebgp-requires-policy
diff --git a/tests/topotests/bgp_vpnv4_ebgp/test_bgp_vpnv4_ebgp.py b/tests/topotests/bgp_vpnv4_ebgp/test_bgp_vpnv4_ebgp.py
index 61e1163..8b2e674 100644
--- a/tests/topotests/bgp_vpnv4_ebgp/test_bgp_vpnv4_ebgp.py
+++ b/tests/topotests/bgp_vpnv4_ebgp/test_bgp_vpnv4_ebgp.py
@@ -25,6 +25,10 @@ sys.path.append(os.path.join(CWD, "../"))
# pylint: disable=C0413
# Import topogen and topotest helpers
from lib import topotest
+from lib.bgpcheck import (
+ check_show_bgp_vpn_prefix_found,
+ check_show_bgp_vpn_prefix_not_found,
+)
from lib.topogen import Topogen, TopoRouter, get_topogen
from lib.topolog import logger
@@ -214,6 +218,164 @@ def test_protocols_convergence():
assert result is None, assertmsg
+def test_export_route_target_empty():
+ """
+ Check that when removing 'rt vpn export' command, exported prefix is removed
+ """
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+ router = tgen.gears["r1"]
+ logger.info("r1, Remove 'rt vpn export 52:100' command")
+ router.vtysh_cmd(
+ "configure terminal\nrouter bgp 65500 vrf vrf1\naddress-family ipv4 unicast\nno rt vpn export 52:100\n"
+ )
+
+ prefix = "172.31.0.1/32"
+ logger.info("r1, check that exported prefix {} is removed".format(prefix))
+ test_func = partial(
+ check_show_bgp_vpn_prefix_not_found,
+ router,
+ "ipv4",
+ prefix,
+ "444:1",
+ )
+ success, result = topotest.run_and_expect(test_func, None, count=10, wait=0.5)
+ assert success, "{}, vpnv4 update {} still present".format(router.name, prefix)
+
+
+def test_export_route_target_with_routemap_with_export_route_target():
+ """
+ Check that when removing 'rt vpn export' command, exported prefix is added back
+ """
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+ router = tgen.gears["r1"]
+ logger.info("r1, configuring route target with route-map with export route target")
+ router.vtysh_cmd(
+ "configure terminal\nrouter bgp 65500 vrf vrf1\naddress-family ipv4 unicast\nroute-map vpn export rmap\n"
+ )
+ router.vtysh_cmd(
+ "configure terminal\nroute-map rmap permit 1\nset extcommunity rt 52:100\n"
+ )
+
+ prefix = "172.31.0.1/32"
+ logger.info("r1, check that exported prefix {} is added back".format(prefix))
+ test_func = partial(
+ check_show_bgp_vpn_prefix_found,
+ router,
+ "ipv4",
+ prefix,
+ "444:1",
+ )
+ success, result = topotest.run_and_expect(test_func, None, count=10, wait=0.5)
+ assert success, "{}, vpnv4 update {} still not present".format(router.name, prefix)
+
+
+def test_export_route_target_with_routemap_without_export_route_target():
+ """
+ Check that when removing 'set extcommunity rt' command, prefix is removed
+ """
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+ router = tgen.gears["r1"]
+ logger.info("r1, removing 'set extcommunity rt 52:100.")
+ router.vtysh_cmd(
+ "configure terminal\nroute-map rmap permit 1\nno set extcommunity rt\n"
+ )
+
+ prefix = "172.31.0.1/32"
+ logger.info("r1, check that exported prefix {} is removed".format(prefix))
+ test_func = partial(
+ check_show_bgp_vpn_prefix_not_found,
+ router,
+ "ipv4",
+ prefix,
+ "444:1",
+ )
+ success, result = topotest.run_and_expect(test_func, None, count=10, wait=0.5)
+ assert success, "{}, vpnv4 update {} still present".format(router.name, prefix)
+
+
+def test_export_route_target_with_default_command():
+ """
+ Add back route target with 'rt vpn export' command
+ """
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+ router = tgen.gears["r1"]
+ logger.info("r1, detach route-map and re-add route target vpn export")
+ router.vtysh_cmd(
+ "configure terminal\nrouter bgp 65500 vrf vrf1\naddress-family ipv4 unicast\nrt vpn export 52:100\n"
+ )
+ prefix = "172.31.0.1/32"
+ logger.info("r1, check that exported prefix {} is added back".format(prefix))
+ test_func = partial(
+ check_show_bgp_vpn_prefix_found,
+ router,
+ "ipv4",
+ prefix,
+ "444:1",
+ )
+ success, result = topotest.run_and_expect(test_func, None, count=10, wait=0.5)
+ assert success, "{}, vpnv4 update {} still not present".format(router.name, prefix)
+
+
+def test_export_suppress_route_target_with_route_map_command():
+ """
+ Add back route target with 'rt vpn export' command
+ """
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+ router = tgen.gears["r1"]
+ logger.info("r1, add an extended comm-list to delete 52:100")
+
+ router.vtysh_cmd("configure terminal\nbgp extcommunity-list 1 permit rt 52:100\n")
+ router.vtysh_cmd(
+ "configure terminal\nroute-map rmap permit 1\nset extended-comm-list 1 delete\n"
+ )
+ prefix = "172.31.0.1/32"
+ logger.info("r1, check that exported prefix {} is removed".format(prefix))
+ test_func = partial(
+ check_show_bgp_vpn_prefix_not_found,
+ router,
+ "ipv4",
+ prefix,
+ "444:1",
+ )
+ success, result = topotest.run_and_expect(test_func, None, count=10, wait=0.5)
+ assert success, "{}, vpnv4 update {} still present".format(router.name, prefix)
+
+
+def test_export_add_route_target_to_route_map_command():
+ """
+ Add route target with route-map so that route is added back
+ """
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+ router = tgen.gears["r1"]
+ logger.info("r1, add an additional set extcommunity 52:101")
+ router.vtysh_cmd(
+ "configure terminal\nroute-map rmap permit 1\nset extcommunity rt 52:101\n"
+ )
+ prefix = "172.31.0.1/32"
+ logger.info("r1, check that exported prefix {} is added back".format(prefix))
+ test_func = partial(
+ check_show_bgp_vpn_prefix_found,
+ router,
+ "ipv4",
+ prefix,
+ "444:1",
+ )
+ success, result = topotest.run_and_expect(test_func, None, count=10, wait=0.5)
+ assert success, "{}, vpnv4 update {} still not present".format(router.name, prefix)
+
+
def test_memory_leak():
"Run the memory leak test and report results."
tgen = get_topogen()