diff options
author | Philippe Guibert <philippe.guibert@6wind.com> | 2024-12-30 10:41:32 +0100 |
---|---|---|
committer | Philippe Guibert <philippe.guibert@6wind.com> | 2024-12-30 15:13:38 +0100 |
commit | e4bbe12c179dbf5a8b5bcd345c3945f2877e4cc4 (patch) | |
tree | a48b77bc10926bef6fc13e985422aa91fd0f9654 /tests | |
parent | topotests: bmp_collector, fix display peer distinguisher IP:AS2B (diff) | |
download | frr-e4bbe12c179dbf5a8b5bcd345c3945f2877e4cc4.tar.xz frr-e4bbe12c179dbf5a8b5bcd345c3945f2877e4cc4.zip |
topotests: bgp_bmp, add peer message test when RD changes
Add a test to control the peer up and down message sent when the route
distinguisher is updated.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/topotests/bgp_bmp/bgpbmp.py | 3 | ||||
-rw-r--r-- | tests/topotests/bgp_bmp/test_bgp_bmp_2.py | 76 |
2 files changed, 79 insertions, 0 deletions
diff --git a/tests/topotests/bgp_bmp/bgpbmp.py b/tests/topotests/bgp_bmp/bgpbmp.py index ddd723bee..acbc405aa 100644 --- a/tests/topotests/bgp_bmp/bgpbmp.py +++ b/tests/topotests/bgp_bmp/bgpbmp.py @@ -193,6 +193,7 @@ def bmp_check_for_peer_message( bmp_log_file, is_rd_instance=False, peer_bgp_id=None, + peer_distinguisher=None, ): """ Check for the presence of a peer up message for the peer @@ -214,6 +215,8 @@ def bmp_check_for_peer_message( for m in messages: if is_rd_instance and m["peer_distinguisher"] == "0:0": continue + if peer_distinguisher and m["peer_distinguisher"] != peer_distinguisher: + continue if peer_bgp_id and m["peer_bgp_id"] != peer_bgp_id: continue if ( diff --git a/tests/topotests/bgp_bmp/test_bgp_bmp_2.py b/tests/topotests/bgp_bmp/test_bgp_bmp_2.py index 2c4ea76ac..e0b9a0f60 100644 --- a/tests/topotests/bgp_bmp/test_bgp_bmp_2.py +++ b/tests/topotests/bgp_bmp/test_bgp_bmp_2.py @@ -339,6 +339,82 @@ def test_bgp_routerid_changed(): ), "Checking the BMP peer up LOC-RIB message with router-id set to 192.168.1.77 failed !." +def test_reconfigure_route_distinguisher_vrf1(): + """ + Checking for BMP peers down messages + """ + tgen = get_topogen() + + bmp_update_seq( + tgen.gears["bmp1vrf"], os.path.join(tgen.logdir, "bmp1vrf", "bmp.log") + ) + peers = ["0.0.0.0"] + + tgen.gears["r1vrf"].vtysh_cmd( + """ + configure terminal + router bgp 65501 vrf vrf1 + address-family ipv4 unicast + rd vpn export 666:22 + exit-address-family + address-family ipv6 unicast + rd vpn export 666:22 + """ + ) + logger.info( + "checking for BMP peer down LOC-RIB message with route-distinguisher set to 444:1" + ) + test_func = partial( + bmp_check_for_peer_message, + peers, + "peer down", + tgen.gears["bmp1vrf"], + os.path.join(tgen.logdir, "bmp1vrf", "bmp.log"), + is_rd_instance=True, + peer_distinguisher="444:1", + ) + success, _ = topotest.run_and_expect(test_func, True, count=30, wait=1) + assert ( + success + ), "Checking the BMP peer down LOC-RIB message with route-distinguisher set to 444:1 failed !." + + logger.info( + "checking for BMP peer up LOC-RIB messages with route-distinguisher set to 666:22" + ) + test_func = partial( + bmp_check_for_peer_message, + peers, + "peer up", + tgen.gears["bmp1vrf"], + os.path.join(tgen.logdir, "bmp1vrf", "bmp.log"), + is_rd_instance=True, + peer_bgp_id="192.168.1.77", + peer_distinguisher="666:22", + ) + success, _ = topotest.run_and_expect(test_func, True, count=30, wait=1) + assert ( + success + ), "Checking the BMP peer up LOC-RIB message with route-distinguisher set to 666:22 failed !." + + logger.info( + "checking for BMP peer up messages with route-distinguisher set to 666:22" + ) + peers = ["192.168.0.2", "192:168::2"] + test_func = partial( + bmp_check_for_peer_message, + peers, + "peer up", + tgen.gears["bmp1vrf"], + os.path.join(tgen.logdir, "bmp1vrf", "bmp.log"), + is_rd_instance=True, + peer_distinguisher="666:22", + ) + success, _ = topotest.run_and_expect(test_func, True, count=30, wait=1) + assert ( + success + ), "Checking the BMP peer up messages with route-distinguisher set to 666:22 failed !." + + if __name__ == "__main__": args = ["-s"] + sys.argv[1:] sys.exit(pytest.main(args)) |