]> git.puffer.fish Git - mirror/frr.git/commitdiff
topotests: check when community-limit is set to 0
authorPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 11 Mar 2025 16:29:22 +0000 (17:29 +0100)
committerPhilippe Guibert <philippe.guibert@6wind.com>
Tue, 11 Mar 2025 16:31:22 +0000 (17:31 +0100)
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 <philippe.guibert@6wind.com>
tests/topotests/bgp_comm_list_match/test_bgp_comm_list_match.py

index c14ef6b8c365981fbe754fa8623b6f461e802954..0d4c8c856493e39f9aea5211fba3cd0bb89ec013 100644 (file)
@@ -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()