mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-17 20:09:38 +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
|
router bgp 65001
|
||||||
bgp default show-hostname
|
bgp default show-hostname
|
||||||
neighbor 192.168.255.1 remote-as 65000
|
neighbor 192.168.255.1 remote-as 65000
|
||||||
address-family ipv4 unicast
|
neighbor 192.168.254.1 remote-as 65001
|
||||||
redistribute connected
|
|
||||||
|
@ -5,5 +5,8 @@ interface lo
|
|||||||
interface r2-eth0
|
interface r2-eth0
|
||||||
ip address 192.168.255.2/24
|
ip address 192.168.255.2/24
|
||||||
!
|
!
|
||||||
|
interface r2-eth1
|
||||||
|
ip address 192.168.254.2/24
|
||||||
|
!
|
||||||
ip forwarding
|
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_bgp_show_ip_bgp_fqdn.py:
|
||||||
Test if FQND is visible in `show [ip] bgp` output if
|
Test if FQND is visible in `show [ip] bgp` output if
|
||||||
`bgp default show-hostname` is toggled.
|
`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
|
import os
|
||||||
@ -49,13 +56,17 @@ class TemplateTopo(Topo):
|
|||||||
def build(self, *_args, **_opts):
|
def build(self, *_args, **_opts):
|
||||||
tgen = get_topogen(self)
|
tgen = get_topogen(self)
|
||||||
|
|
||||||
for routern in range(1, 3):
|
for routern in range(1, 4):
|
||||||
tgen.add_router("r{}".format(routern))
|
tgen.add_router("r{}".format(routern))
|
||||||
|
|
||||||
switch = tgen.add_switch("s1")
|
switch = tgen.add_switch("s1")
|
||||||
switch.add_link(tgen.gears["r1"])
|
switch.add_link(tgen.gears["r1"])
|
||||||
switch.add_link(tgen.gears["r2"])
|
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):
|
def setup_module(mod):
|
||||||
tgen = Topogen(TemplateTopo, mod.__name__)
|
tgen = Topogen(TemplateTopo, mod.__name__)
|
||||||
@ -85,30 +96,36 @@ def test_bgp_show_ip_bgp_hostname():
|
|||||||
if tgen.routers_have_failure():
|
if tgen.routers_have_failure():
|
||||||
pytest.skip(tgen.errors)
|
pytest.skip(tgen.errors)
|
||||||
|
|
||||||
router = tgen.gears["r2"]
|
|
||||||
|
|
||||||
def _bgp_converge(router):
|
def _bgp_converge(router):
|
||||||
output = json.loads(router.vtysh_cmd("show ip bgp neighbor 192.168.255.1 json"))
|
output = json.loads(router.vtysh_cmd("show ip bgp 172.16.255.254/32 json"))
|
||||||
expected = {
|
expected = {"prefix": "172.16.255.254/32"}
|
||||||
"192.168.255.1": {
|
|
||||||
"bgpState": "Established",
|
|
||||||
"addressFamilyInfo": {"ipv4Unicast": {"acceptedPrefixCounter": 2}},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return topotest.json_cmp(output, expected)
|
return topotest.json_cmp(output, expected)
|
||||||
|
|
||||||
def _bgp_show_nexthop_hostname_and_ip(router):
|
def _bgp_show_nexthop_hostname_and_ip(router):
|
||||||
output = json.loads(router.vtysh_cmd("show ip bgp json"))
|
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:
|
if "hostname" in nh and "ip" in nh:
|
||||||
return True
|
return True
|
||||||
return False
|
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)
|
success, result = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
|
||||||
|
|
||||||
assert result is None, 'Failed bgp convergence in "{}"'.format(router)
|
test_func = functools.partial(_bgp_converge, tgen.gears["r3"])
|
||||||
assert _bgp_show_nexthop_hostname_and_ip(router) == True
|
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__":
|
if __name__ == "__main__":
|
||||||
|
Loading…
Reference in New Issue
Block a user