mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 10:54:47 +00:00
ospf: test route kernel installation
Added tests to validate that OSPF routes are being installed/uninstalled in the Linux kernel.
This commit is contained in:
parent
99a7a912fd
commit
d1c3108673
@ -164,6 +164,25 @@ def test_ospf_convergence():
|
||||
count=20, wait=3)
|
||||
assert result, 'OSPF did not converge on {}:\n{}'.format(router, diff)
|
||||
|
||||
def test_ospf_kernel_route():
|
||||
"Test OSPF kernel route installation"
|
||||
tgen = get_topogen()
|
||||
rlist = tgen.routers().values()
|
||||
for router in rlist:
|
||||
logger.info('Checking OSPF IPv4 kernel routes in "%s"', router.name)
|
||||
|
||||
routes = topotest.ip4_route(router)
|
||||
expected = {
|
||||
'10.0.1.0/24': {},
|
||||
'10.0.2.0/24': {},
|
||||
'10.0.3.0/24': {},
|
||||
'10.0.10.0/24': {},
|
||||
'172.16.0.0/24': {},
|
||||
'172.16.1.0/24': {},
|
||||
}
|
||||
assertmsg = 'OSPF IPv4 route mismatch in router "{}"'.format(router.name)
|
||||
assert topotest.json_cmp(routes, expected) is None, assertmsg
|
||||
|
||||
def test_ospf6_convergence():
|
||||
"Test OSPF6 daemon convergence"
|
||||
for rnum in range(1, 5):
|
||||
@ -181,6 +200,25 @@ def test_ospf6_convergence():
|
||||
count=20, wait=3)
|
||||
assert result, 'OSPF6 did not converge on {}:\n{}'.format(router, diff)
|
||||
|
||||
def test_ospf6_kernel_route():
|
||||
"Test OSPF kernel route installation"
|
||||
tgen = get_topogen()
|
||||
rlist = tgen.routers().values()
|
||||
for router in rlist:
|
||||
logger.info('Checking OSPF IPv6 kernel routes in "%s"', router.name)
|
||||
|
||||
routes = topotest.ip6_route(router)
|
||||
expected = {
|
||||
'2001:db8:1::/64': {},
|
||||
'2001:db8:2::/64': {},
|
||||
'2001:db8:3::/64': {},
|
||||
'2001:db8:100::/64': {},
|
||||
'2001:db8:200::/64': {},
|
||||
'2001:db8:300::/64': {},
|
||||
}
|
||||
assertmsg = 'OSPF IPv6 route mismatch in router "{}"'.format(router.name)
|
||||
assert topotest.json_cmp(routes, expected) is None, assertmsg
|
||||
|
||||
def test_ospf_json():
|
||||
"Test 'show ip ospf json' output for coherency."
|
||||
tgen = get_topogen()
|
||||
@ -273,6 +311,41 @@ def test_ospf_link_down():
|
||||
count=20, wait=3)
|
||||
assert result, 'OSPF did not converge on {}:\n{}'.format(router, diff)
|
||||
|
||||
def test_ospf_link_down_kernel_route():
|
||||
"Test OSPF kernel route installation"
|
||||
tgen = get_topogen()
|
||||
rlist = tgen.routers().values()
|
||||
for router in rlist:
|
||||
logger.info('Checking OSPF IPv4 kernel routes in "%s" after link down', router.name)
|
||||
|
||||
routes = topotest.ip4_route(router)
|
||||
expected = {
|
||||
'10.0.1.0/24': {},
|
||||
'10.0.2.0/24': {},
|
||||
'10.0.3.0/24': {},
|
||||
'10.0.10.0/24': {},
|
||||
'172.16.0.0/24': {},
|
||||
'172.16.1.0/24': {},
|
||||
}
|
||||
if router.name == 'r1' or router.name == 'r2':
|
||||
expected.update({
|
||||
'10.0.10.0/24': None,
|
||||
'172.16.0.0/24': None,
|
||||
'172.16.1.0/24': None,
|
||||
})
|
||||
elif router.name == 'r3' or router.name == 'r4':
|
||||
expected.update({
|
||||
'10.0.1.0/24': None,
|
||||
'10.0.2.0/24': None,
|
||||
})
|
||||
# Route '10.0.3.0' is no longer available for r4 since it is down.
|
||||
if router.name == 'r4':
|
||||
expected.update({
|
||||
'10.0.3.0/24': None,
|
||||
})
|
||||
assertmsg = 'OSPF IPv4 route mismatch in router "{}" after link down'.format(router.name)
|
||||
assert topotest.json_cmp(routes, expected) is None, assertmsg
|
||||
|
||||
def test_ospf6_link_down():
|
||||
"Test OSPF6 daemon convergence after link goes down"
|
||||
|
||||
@ -291,6 +364,41 @@ def test_ospf6_link_down():
|
||||
count=20, wait=3)
|
||||
assert result, 'OSPF6 did not converge on {}:\n{}'.format(router, diff)
|
||||
|
||||
def test_ospf6_link_down_kernel_route():
|
||||
"Test OSPF kernel route installation"
|
||||
tgen = get_topogen()
|
||||
rlist = tgen.routers().values()
|
||||
for router in rlist:
|
||||
logger.info('Checking OSPF IPv6 kernel routes in "%s" after link down', router.name)
|
||||
|
||||
routes = topotest.ip6_route(router)
|
||||
expected = {
|
||||
'2001:db8:1::/64': {},
|
||||
'2001:db8:2::/64': {},
|
||||
'2001:db8:3::/64': {},
|
||||
'2001:db8:100::/64': {},
|
||||
'2001:db8:200::/64': {},
|
||||
'2001:db8:300::/64': {},
|
||||
}
|
||||
if router.name == 'r1' or router.name == 'r2':
|
||||
expected.update({
|
||||
'2001:db8:100::/64': None,
|
||||
'2001:db8:200::/64': None,
|
||||
'2001:db8:300::/64': None,
|
||||
})
|
||||
elif router.name == 'r3' or router.name == 'r4':
|
||||
expected.update({
|
||||
'2001:db8:1::/64': None,
|
||||
'2001:db8:2::/64': None,
|
||||
})
|
||||
# Route '2001:db8:3::/64' is no longer available for r4 since it is down.
|
||||
if router.name == 'r4':
|
||||
expected.update({
|
||||
'2001:db8:3::/64': None,
|
||||
})
|
||||
assertmsg = 'OSPF IPv6 route mismatch in router "{}" after link down'.format(router.name)
|
||||
assert topotest.json_cmp(routes, expected) is None, assertmsg
|
||||
|
||||
def test_memory_leak():
|
||||
"Run the memory leak test and report results."
|
||||
tgen = get_topogen()
|
||||
|
Loading…
Reference in New Issue
Block a user