]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: Check received routes count for labeled-unicast with addpath
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 30 Mar 2023 13:50:15 +0000 (16:50 +0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Fri, 31 Mar 2023 11:56:05 +0000 (11:56 +0000)
Test failed time to time, let's try this way:

```
$ for x in $(seq 1 20); do cp test_bgp_labeled_unicast_addpath.py test_$x.py; done
$ sudo pytest -s -n 20
```

Ran 10 times using this pattern, no failure :shrug:

Before this change, we checked advertised routes, and at some point `=` was
missing from the output, but advertised correctly. Receiving router gets as
much routes as expected to receive.

I reversed checking received routes, not advertised.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 9db7ed2fc9353e249c4ba5f0faf542ae100ff7ef)

tests/topotests/bgp_labeled_unicast_addpath/test_bgp_labeled_unicast_addpath.py

index aae901eabee4e79b087b487afadd5b88896c3d52..6ca07fd4ed0963d9a987c45140f6083d50f80e0c 100644 (file)
@@ -95,53 +95,23 @@ def test_bgp_addpath_labeled_unicast():
     r3 = tgen.gears["r3"]
     r4 = tgen.gears["r4"]
 
-    def _bgp_check_advertised_routes(prefix_num):
-        output = json.loads(
-            r3.vtysh_cmd(
-                "show bgp ipv4 labeled-unicast neighbors 192.168.34.4 advertised-routes json"
-            )
-        )
+    def _bgp_check_received_routes(pfxcount):
+        output = json.loads(r4.vtysh_cmd("show bgp ipv4 labeled-unicast summary json"))
         expected = {
-            "advertisedRoutes": {
-                "10.0.0.1/32": {
-                    "appliedStatusSymbols": {
-                        "*": True,
-                        ">": True,
-                        "=": True,
-                    }
+            "peers": {
+                "192.168.34.3": {
+                    "pfxRcd": pfxcount,
+                    "state": "Established",
                 }
-            },
-            "totalPrefixCounter": prefix_num,
+            }
         }
         return topotest.json_cmp(output, expected)
 
-    test_func = functools.partial(_bgp_check_advertised_routes, 2)
+    test_func = functools.partial(_bgp_check_received_routes, 2)
     _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
     assert (
         result is None
-    ), "Failed to advertise labeled-unicast with addpath (multipath)"
-
-    def _bgp_check_received_routes():
-        output = json.loads(r4.vtysh_cmd("show bgp ipv4 labeled-unicast json"))
-        expected = {
-            "routes": {
-                "10.0.0.1/32": [
-                    {
-                        "valid": True,
-                        "path": "65003 65001",
-                    },
-                    {
-                        "valid": True,
-                        "path": "65003 65002",
-                    },
-                ]
-            }
-        }
-        return topotest.json_cmp(output, expected)
-
-    test_func = functools.partial(_bgp_check_received_routes)
-    _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
-    assert result is None, "Failed to receive labeled-unicast with addpath (multipath)"
+    ), "Failed to receive labeled-unicast with addpath (multipath=2)"
 
     step("Enable BGP session for R5")
     r3.vtysh_cmd(
@@ -152,11 +122,11 @@ def test_bgp_addpath_labeled_unicast():
         """
     )
 
-    test_func = functools.partial(_bgp_check_advertised_routes, 3)
+    test_func = functools.partial(_bgp_check_received_routes, 3)
     _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
     assert (
         result is None
-    ), "Failed to advertise labeled-unicast with addpath (multipath)"
+    ), "Failed to receive labeled-unicast with addpath (multipath=3)"
 
     step("Disable BGP session for R5")
     r3.vtysh_cmd(
@@ -167,11 +137,11 @@ def test_bgp_addpath_labeled_unicast():
         """
     )
 
-    test_func = functools.partial(_bgp_check_advertised_routes, 2)
+    test_func = functools.partial(_bgp_check_received_routes, 2)
     _, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
     assert (
         result is None
-    ), "Failed to advertise labeled-unicast with addpath (multipath)"
+    ), "Failed to receive labeled-unicast with addpath (multipath=2)"
 
 
 if __name__ == "__main__":