From c3038acf3cf4c615a140d2ab0cf53cc9188c0ed7 Mon Sep 17 00:00:00 2001 From: Philippe Guibert Date: Tue, 11 Mar 2025 17:29:22 +0100 Subject: [PATCH] topotests: check when community-limit is set to 0 Add a test to control that when the community limit is set to 0, then only 2 BGP updates are received on R3. Signed-off-by: Philippe Guibert --- .../test_bgp_comm_list_match.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/tests/topotests/bgp_comm_list_match/test_bgp_comm_list_match.py b/tests/topotests/bgp_comm_list_match/test_bgp_comm_list_match.py index c14ef6b8c3..0d4c8c8564 100644 --- a/tests/topotests/bgp_comm_list_match/test_bgp_comm_list_match.py +++ b/tests/topotests/bgp_comm_list_match/test_bgp_comm_list_match.py @@ -154,6 +154,11 @@ def test_bgp_comm_list_limit_match(): "vrfName": "default", "routerId": "192.168.1.3", "localAS": 65003, + "routes": { + "172.16.255.2/32": [{"prefix": "172.16.255.2", "prefixLen": 32}], + "172.16.255.5/32": [{"prefix": "172.16.255.5", "prefixLen": 32}], + "192.168.0.0/24": [{"prefix": "192.168.0.0", "prefixLen": 24}], + }, "totalRoutes": 3, "totalPaths": 3, } @@ -165,6 +170,42 @@ def test_bgp_comm_list_limit_match(): assert result is None, "Failed to check that 3 routes have been received on R3" +def test_bgp_comm_list_limit_match_no_community(): + tgen = get_topogen() + + if tgen.routers_have_failure(): + pytest.skip(tgen.errors) + + router = tgen.gears["r3"] + router.vtysh_cmd( + """ + configure terminal + route-map r1 permit 20 + match community-limit 0 + """ + ) + + def _bgp_count(): + output = json.loads(router.vtysh_cmd("show bgp ipv4 json")) + expected = { + "vrfName": "default", + "routerId": "192.168.1.3", + "localAS": 65003, + "routes": { + "172.16.255.2/32": [{"prefix": "172.16.255.2", "prefixLen": 32}], + "192.168.0.0/24": [{"prefix": "192.168.0.0", "prefixLen": 24}], + }, + "totalRoutes": 2, + "totalPaths": 2, + } + return topotest.json_cmp(output, expected) + + step("Check that 2 routes have been received on R3") + test_func = functools.partial(_bgp_count) + _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5) + assert result is None, "Failed to check that 2 routes have been received on R3" + + def test_bgp_comm_list_reset_limit_match(): tgen = get_topogen() -- 2.39.5