]> git.puffer.fish Git - matthieu/frr.git/commitdiff
tests: Check if the right next-hop is shown (bgp_show_ip_bgp_fqdn)
authorDonatas Abraitis <donatas.abraitis@gmail.com>
Thu, 16 Apr 2020 07:37:21 +0000 (10:37 +0300)
committerDonatas Abraitis <donatas.abraitis@gmail.com>
Thu, 16 Apr 2020 07:37:21 +0000 (10:37 +0300)
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
tests/topotests/bgp_show_ip_bgp_fqdn/r2/bgpd.conf
tests/topotests/bgp_show_ip_bgp_fqdn/r2/zebra.conf
tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf [new file with mode: 0644]
tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf [new file with mode: 0644]
tests/topotests/bgp_show_ip_bgp_fqdn/test_bgp_show_ip_bgp_fqdn.py

index c05bfd5a6b1e9a755357eb075b5d46e2fde418a3..21698790f5b056a0b9dd2b55cf75c845230ec202 100644 (file)
@@ -1,5 +1,4 @@
 router bgp 65001
   bgp default show-hostname
   neighbor 192.168.255.1 remote-as 65000
-  address-family ipv4 unicast
-    redistribute connected
+  neighbor 192.168.254.1 remote-as 65001
index 5abba71ce8d256cd589e3547f1a0f2c232357238..e9e2e4391f2b80e534401c573e0cc685070289d9 100644 (file)
@@ -5,5 +5,8 @@ interface lo
 interface r2-eth0
  ip address 192.168.255.2/24
 !
+interface r2-eth1
+ ip address 192.168.254.2/24
+!
 ip forwarding
 !
diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf b/tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf
new file mode 100644 (file)
index 0000000..8fcf6a7
--- /dev/null
@@ -0,0 +1,3 @@
+router bgp 65001
+  bgp default show-hostname
+  neighbor 192.168.254.2 remote-as 65001
diff --git a/tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf b/tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf
new file mode 100644 (file)
index 0000000..a8b8bc3
--- /dev/null
@@ -0,0 +1,6 @@
+!
+interface r3-eth0
+ ip address 192.168.254.1/24
+!
+ip forwarding
+!
index c41ae7cb2a1ad1b2ac2cedfd83774668610cb492..e8ad180935cd74bd664b644bf0bb39e6ca397a91 100644 (file)
 test_bgp_show_ip_bgp_fqdn.py:
 Test if FQND is visible in `show [ip] bgp` output if
 `bgp default show-hostname` is toggled.
+
+Topology:
+r1 <-- eBGP --> r2 <-- iBGP --> r3
+
+1. Check if both hostname and ip are added to JSON output
+for 172.16.255.254/32 on r2.
+2. Check if only ip is added to JSON output for 172.16.255.254/32 on r3.
 """
 
 import os
@@ -49,13 +56,17 @@ class TemplateTopo(Topo):
     def build(self, *_args, **_opts):
         tgen = get_topogen(self)
 
-        for routern in range(1, 3):
+        for routern in range(1, 4):
             tgen.add_router("r{}".format(routern))
 
         switch = tgen.add_switch("s1")
         switch.add_link(tgen.gears["r1"])
         switch.add_link(tgen.gears["r2"])
 
+        switch = tgen.add_switch("s2")
+        switch.add_link(tgen.gears["r2"])
+        switch.add_link(tgen.gears["r3"])
+
 
 def setup_module(mod):
     tgen = Topogen(TemplateTopo, mod.__name__)
@@ -85,30 +96,36 @@ def test_bgp_show_ip_bgp_hostname():
     if tgen.routers_have_failure():
         pytest.skip(tgen.errors)
 
-    router = tgen.gears["r2"]
-
     def _bgp_converge(router):
-        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": 2}},
-            }
-        }
+        output = json.loads(router.vtysh_cmd("show ip bgp 172.16.255.254/32 json"))
+        expected = {"prefix": "172.16.255.254/32"}
         return topotest.json_cmp(output, expected)
 
     def _bgp_show_nexthop_hostname_and_ip(router):
         output = json.loads(router.vtysh_cmd("show ip bgp json"))
-        for nh in output["routes"]["172.16.255.253/32"][0]["nexthops"]:
+        for nh in output["routes"]["172.16.255.254/32"][0]["nexthops"]:
             if "hostname" in nh and "ip" in nh:
                 return True
         return False
 
-    test_func = functools.partial(_bgp_converge, router)
+    def _bgp_show_nexthop_ip_only(router):
+        output = json.loads(router.vtysh_cmd("show ip bgp json"))
+        for nh in output["routes"]["172.16.255.254/32"][0]["nexthops"]:
+            if "ip" in nh and not "hostname" in nh:
+                return True
+        return False
+
+    test_func = functools.partial(_bgp_converge, tgen.gears["r2"])
     success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
 
-    assert result is None, 'Failed bgp convergence in "{}"'.format(router)
-    assert _bgp_show_nexthop_hostname_and_ip(router) == True
+    test_func = functools.partial(_bgp_converge, tgen.gears["r3"])
+    success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+
+    assert result is None, 'Failed bgp convergence in "{}"'.format(tgen.gears["r2"])
+    assert _bgp_show_nexthop_hostname_and_ip(tgen.gears["r2"]) == True
+
+    assert result is None, 'Failed bgp convergence in "{}"'.format(tgen.gears["r3"])
+    assert _bgp_show_nexthop_ip_only(tgen.gears["r3"]) == True
 
 
 if __name__ == "__main__":