mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 13:27:53 +00:00
tests: Check if the right next-hop is shown (bgp_show_ip_bgp_fqdn)
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
parent
2ba93fd65b
commit
c3b426212f
@ -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
|
||||
|
@ -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
|
||||
!
|
||||
|
3
tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf
Normal file
3
tests/topotests/bgp_show_ip_bgp_fqdn/r3/bgpd.conf
Normal file
@ -0,0 +1,3 @@
|
||||
router bgp 65001
|
||||
bgp default show-hostname
|
||||
neighbor 192.168.254.2 remote-as 65001
|
6
tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf
Normal file
6
tests/topotests/bgp_show_ip_bgp_fqdn/r3/zebra.conf
Normal file
@ -0,0 +1,6 @@
|
||||
!
|
||||
interface r3-eth0
|
||||
ip address 192.168.254.1/24
|
||||
!
|
||||
ip forwarding
|
||||
!
|
@ -26,6 +26,13 @@
|
||||
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__":
|
||||
|
Loading…
Reference in New Issue
Block a user