mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-31 06:56:13 +00:00
Merge pull request #12313 from louis-6wind/fix-lfa-topo
tests: fix bfd in isis_lfa_topo1 step24
This commit is contained in:
commit
9d44fb97a1
@ -1,6 +1,4 @@
|
||||
hostname rt1
|
||||
!
|
||||
bfd
|
||||
peer 2001:db8:1000::2 multihop local-address 2001:db8:1000::1
|
||||
!
|
||||
!
|
||||
|
@ -1,6 +1,4 @@
|
||||
hostname rt2
|
||||
!
|
||||
bfd
|
||||
peer 2001:db8:1000::1 multihop local-address 2001:db8:1000::2
|
||||
!
|
||||
!
|
||||
|
@ -758,6 +758,80 @@ def test_rib_ipv6_step17():
|
||||
# - Route switchover of routes via eth-rt2
|
||||
#
|
||||
def test_rib_ipv6_step18():
|
||||
def _rt2_neigh_down(router):
|
||||
output = json.loads(router.vtysh_cmd("show isis neighbor rt2 json"))
|
||||
|
||||
"""
|
||||
Previous output was:
|
||||
{
|
||||
"areas":[
|
||||
{
|
||||
"area":"1",
|
||||
"circuits":[
|
||||
{
|
||||
"circuit":0,
|
||||
"adj":"rt2",
|
||||
"interface":{
|
||||
"name":"eth-rt2",
|
||||
"state":"Up",
|
||||
"adj-flaps":1,
|
||||
"last-ago":"21s",
|
||||
"circuit-type":"L1",
|
||||
"speaks":"IPv6",
|
||||
"topologies":{
|
||||
"topo-0":"ipv6-unicast"
|
||||
},
|
||||
"snpa":"2020.2020.2020",
|
||||
"area-address":{
|
||||
"isonet":"49.0000"
|
||||
},
|
||||
"ipv6-link-local":{
|
||||
"ipv6":"fe80::ac19:a8ff:fee5:f48f"
|
||||
},
|
||||
"adj-sid":{
|
||||
}
|
||||
},
|
||||
"level":1,
|
||||
"expires-in":"2s"
|
||||
},
|
||||
{
|
||||
"circuit":0
|
||||
},
|
||||
{
|
||||
"circuit":0
|
||||
},
|
||||
{
|
||||
"circuit":0
|
||||
},
|
||||
{
|
||||
"circuit":0
|
||||
},
|
||||
{
|
||||
"circuit":0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
"""
|
||||
|
||||
expected = {
|
||||
"areas": [
|
||||
{
|
||||
"area": "1",
|
||||
"circuits": [
|
||||
{"circuit": 0},
|
||||
{"circuit": 0},
|
||||
{"circuit": 0},
|
||||
{"circuit": 0},
|
||||
{"circuit": 0},
|
||||
{"circuit": 0},
|
||||
],
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
return topotest.json_cmp(output, expected, exact=True)
|
||||
|
||||
logger.info("Test (step 18): verify IPv6 RIB")
|
||||
tgen = get_topogen()
|
||||
|
||||
@ -769,23 +843,10 @@ def test_rib_ipv6_step18():
|
||||
tgen.net.cmd_raises("ip link set s1 down")
|
||||
|
||||
rname = "rt1"
|
||||
|
||||
retry = 200 + 1
|
||||
|
||||
while retry:
|
||||
retry -= 1
|
||||
output = tgen.gears[rname].vtysh_cmd("show isis neighbor json")
|
||||
output_json = json.loads(output)
|
||||
found = False
|
||||
for neighbor in output_json["areas"][0]["circuits"]:
|
||||
if "adj" in neighbor and neighbor["adj"] == "rt2":
|
||||
found = True
|
||||
break
|
||||
if not found:
|
||||
break
|
||||
time.sleep(0.05)
|
||||
|
||||
assert not found, "rt2 neighbor is still present"
|
||||
router = tgen.gears[rname]
|
||||
test_func = partial(_rt2_neigh_down, router)
|
||||
success, result = topotest.run_and_expect(test_func, None, count=200, wait=0.05)
|
||||
assert result is None, 'rt2 neighbor is still present on "{}"'.format(router)
|
||||
|
||||
router_compare_json_output(
|
||||
rname,
|
||||
@ -941,14 +1002,14 @@ def test_rib_ipv6_step23():
|
||||
conf_file = os.path.join(CWD, "{}/bfdd.conf".format(rname))
|
||||
tgen.net[rname].cmd("vtysh -f {}".format(conf_file))
|
||||
|
||||
rname = "rt1"
|
||||
expect = '[{"multihop":true,"peer":"2001:db8:1000::2","local":"2001:db8:1000::1","status":"up"}]'
|
||||
router_compare_json_output(rname, "show bfd peers json", expect)
|
||||
|
||||
logger.info("Set ISIS BFD")
|
||||
tgen.net["rt1"].cmd('vtysh -c "conf t" -c "int eth-rt2" -c "isis bfd"')
|
||||
tgen.net["rt2"].cmd('vtysh -c "conf t" -c "int eth-rt1" -c "isis bfd"')
|
||||
|
||||
rname = "rt1"
|
||||
expect = '[{"multihop":false,"interface":"eth-rt2","status":"up"}]'
|
||||
router_compare_json_output(rname, "show bfd peers json", expect)
|
||||
|
||||
router_compare_json_output(
|
||||
rname,
|
||||
"show ipv6 route isis json",
|
||||
@ -968,6 +1029,11 @@ def test_rib_ipv6_step23():
|
||||
# - Route switchover of routes via eth-rt2
|
||||
#
|
||||
def test_rib_ipv6_step24():
|
||||
def _bfd_down(router):
|
||||
output = json.loads(router.vtysh_cmd("show bfd peers json"))
|
||||
expected = []
|
||||
return topotest.json_cmp(output, expected, exact=True)
|
||||
|
||||
logger.info("Test (step 24): verify IPv6 RIB")
|
||||
tgen = get_topogen()
|
||||
|
||||
@ -979,14 +1045,10 @@ def test_rib_ipv6_step24():
|
||||
tgen.net.cmd_raises("ip link set s1 down")
|
||||
|
||||
rname = "rt1"
|
||||
expect = '[{"multihop":true,"peer":"2001:db8:1000::2","local":"2001:db8:1000::1","status":"down"}]'
|
||||
router_compare_json_output(
|
||||
rname,
|
||||
"show bfd peers json",
|
||||
expect,
|
||||
count=40,
|
||||
wait=0.05,
|
||||
)
|
||||
router = tgen.gears[rname]
|
||||
test_func = partial(_bfd_down, router)
|
||||
success, result = topotest.run_and_expect(test_func, None, count=30, wait=0.05)
|
||||
assert result is None, 'BFD session is still up on "{}"'.format(router)
|
||||
|
||||
router_compare_json_output(
|
||||
rname,
|
||||
|
Loading…
Reference in New Issue
Block a user