]> git.proxmox.com Git - mirror_frr.git/commitdiff
Merge pull request #4969 from ton31337/feature/rewrite_bgp_aggregate-address_route...
authorSri Mohana Singamsetty <srimohans@gmail.com>
Fri, 13 Sep 2019 18:03:36 +0000 (11:03 -0700)
committerGitHub <noreply@github.com>
Fri, 13 Sep 2019 18:03:36 +0000 (11:03 -0700)
tests: Improve bgp_aggregate-address_route-map test

tests/topotests/bgp_aggregate-address_route-map/test_bgp_aggregate-address_route-map.py

index bee51153233fa0ec1e7379183554fec5e3bd1c2a..d6753e9b2360f2ededafe691d5f4c1ef2fc76475 100644 (file)
@@ -39,6 +39,7 @@ import sys
 import json
 import time
 import pytest
+import functools
 
 CWD = os.path.dirname(os.path.realpath(__file__))
 sys.path.append(os.path.join(CWD, '../'))
@@ -88,21 +89,42 @@ def test_bgp_maximum_prefix_invalid():
     if tgen.routers_have_failure():
         pytest.skip(tgen.errors)
 
+    router = tgen.gears['r2']
+
     def _bgp_converge(router):
-        while True:
-            output = json.loads(tgen.gears[router].vtysh_cmd("show ip bgp neighbor 192.168.255.1 json"))
-            if output['192.168.255.1']['bgpState'] == 'Established':
-                if output['192.168.255.1']['addressFamilyInfo']['ipv4Unicast']['acceptedPrefixCounter'] == 3:
-                    return True
+        output = json.loads(router.vtysh_cmd("show ip bgp neighbor 192.168.255.1 json"))
+        expected = {
+            '192.168.255.1': {
+                'bgpState': 'Established',
+                'addressFamilyInfo': {
+                    'ipv4Unicast': {
+                        'acceptedPrefixCounter': 3
+                    }
+                }
+            }
+        }
+        return topotest.json_cmp(output, expected)
 
     def _bgp_aggregate_address_has_metric(router):
-        output = json.loads(tgen.gears[router].vtysh_cmd("show ip bgp 172.16.255.0/24 json"))
-        if output['paths'][0]['med'] == 123:
-            return True
-        return False
+        output = json.loads(router.vtysh_cmd("show ip bgp 172.16.255.0/24 json"))
+        expected = {
+            'paths': [
+                {
+                    'med': 123
+                }
+            ]
+        }
+        return topotest.json_cmp(output, expected)
+
+    test_func = functools.partial(_bgp_converge, router)
+    success, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
+
+    assert result is None, 'Failed to see bgp convergence in "{}"'.format(router)
+
+    test_func = functools.partial(_bgp_aggregate_address_has_metric, router)
+    success, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
 
-    if _bgp_converge('r2'):
-        assert _bgp_aggregate_address_has_metric('r2') == True
+    assert result is None, 'Failed to see applied metric for aggregated prefix in "{}"'.format(router)
 
 if __name__ == '__main__':
     args = ["-s"] + sys.argv[1:]