]> git.proxmox.com Git - mirror_frr.git/blobdiff - tests/topotests/bgp_remove_private_as/test_bgp_remove_private_as.py
Merge pull request #12798 from donaldsharp/rib_match_multicast
[mirror_frr.git] / tests / topotests / bgp_remove_private_as / test_bgp_remove_private_as.py
index 7d52048ebeca5d893b2cf78239a4f817efd56257..11342374471194a912c3987940af42fb9d1026ac 100644 (file)
@@ -1,4 +1,5 @@
 #!/usr/bin/env python
+# SPDX-License-Identifier: ISC
 
 #
 # test_bgp_remove_private_as.py
@@ -6,20 +7,6 @@
 # Copyright (C) 2022  NVIDIA Corporation
 # Trey Aspelund
 #
-# Permission to use, copy, modify, and/or distribute this software
-# for any purpose with or without fee is hereby granted, provided
-# that the above copyright notice and this permission notice appear
-# in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND NVIDIA DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NVIDIA BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
-# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-#
 
 """
 test_bgp_remove_private_as.py tests the following conditions:
@@ -361,13 +348,6 @@ def test_bgp_remove_private_as():
                 return True
         return False
 
-    def _get_pfx_path_from_nh(router, prefix, nh):
-        """Return as-path for a specific route + path."""
-        output = json.loads(tgen.gears[router].vtysh_cmd(f"show ip bgp {prefix} json"))
-        for path in output[prefix]:
-            if path["nexthops"]["ip"] == nh:
-                return path["aspath"]["string"]
-
     def _routers_up(tx_rtrs, rx_rtrs):
         """Ensure all BGP sessions are up and all routes are installed."""
         # all sessions go through tx_routers, so ensure all their peers are up
@@ -408,11 +388,7 @@ def test_bgp_remove_private_as():
                 for pfx in prefixes:
                     good_path = expected_paths[rtr][remove_type][peer][pfx]
                     real_path = adj_rib_in["receivedRoutes"][pfx]["path"]
-                    msg = (
-                        f"{rtr} received incorrect AS-Path from {peer} "
-                        f'({p_ip}) for {pfx}. remove_type: "{remove_type}"'
-                    )
-                    assert real_path == good_path, msg
+                    return real_path == good_path
 
     #######################
     # Begin Test
@@ -424,7 +400,11 @@ def test_bgp_remove_private_as():
     # test each variation of remove-private-AS
     for rmv_type in remove_types:
         _change_remove_type(rmv_type, "add")
-        _validate_paths(rmv_type)
+
+        test_func = partial(_validate_paths, rmv_type)
+        _, result = topotest.run_and_expect(test_func, True, count=60, wait=0.5)
+        assert result == True, "Not all routes have correct AS-Path values!"
+
         # each variation sets a separate peer flag in bgpd. we need to clear
         # the old flag after each iteration so we only test the flags we expect.
         _change_remove_type(rmv_type, "del")