]> 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)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 30 Mar 2023 14:33:21 +0000 (17:33 +0300)
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>
tests/topotests/bgp_labeled_unicast_addpath/test_bgp_labeled_unicast_addpath.py

index 3af779c427c24b12ea254f8c2823b08806fa1121..f4bb487e4091238245e75f3620267208c7a9d12e 100644 (file)
@@ -82,53 +82,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(
@@ -139,11 +109,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(
@@ -154,11 +124,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__":