Skip to content

Commit

Permalink
topotests: improve test reliability
Browse files Browse the repository at this point in the history
Decrease the protocol timers, wait for peers to connect (and test it)
then finally wait a bit more for SAs to be propagated.

Signed-off-by: Rafael Zalamena <[email protected]>
  • Loading branch information
rzalamena committed Jan 13, 2025
1 parent 35c0c82 commit dda4f00
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
1 change: 1 addition & 0 deletions tests/topotests/msdp_topo3/r1/frr.conf
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@ router pim
msdp originator-id 10.254.254.1
msdp log sa-events
msdp peer 192.168.1.2 source 192.168.1.1
msdp timers 10 20 3
rp 192.168.1.1
!
1 change: 1 addition & 0 deletions tests/topotests/msdp_topo3/r2/frr.conf
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ router bgp 65200
router pim
msdp log sa-events
msdp peer 192.168.1.1 source 192.168.1.2
msdp timers 10 20 3
rp 192.168.1.2
!
29 changes: 26 additions & 3 deletions tests/topotests/msdp_topo3/test_msdp_topo3.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,29 @@ def expect_loopback_route(router, iptype, route, proto):
expect_loopback_route("r2", "ip", "10.254.254.1/32", "bgp")


def test_msdp_connect():
"Test that the MSDP peers have connected."
tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)

def msdp_is_connected(router, peer):
logger.info(f"waiting MSDP peer {peer} in router {router}")
expected = {peer: {"state": "established"}}
test_func = partial(
topotest.router_json_cmp,
tgen.gears[router],
"show ip msdp peer json",
expected,
)
_, result = topotest.run_and_expect(test_func, None, count=40, wait=2)
assertmsg = '"{}" convergence failure'.format(router)
assert result is None, assertmsg

msdp_is_connected("r1", "192.168.1.2")
msdp_is_connected("r2", "192.168.1.1")


def test_sa_learn():
"""
Test that the learned SA uses the configured originator ID instead
Expand All @@ -145,10 +168,10 @@ def test_sa_learn():
"local": "no",
}
}
}
},
)
_, result = topotest.run_and_expect(test_func, None, count=100, wait=1)
assert result is None, 'r2 SA convergence failure'
_, result = topotest.run_and_expect(test_func, None, count=80, wait=2)
assert result is None, "r2 SA convergence failure"


def test_memory_leak():
Expand Down

0 comments on commit dda4f00

Please sign in to comment.