mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-02 22:09:48 +00:00
tests: add tests for OSPF GR unplanned outages
Reuse the exiting GR topotests since planned and unplanned GR should behave the same. The only difference is that for unplanned GR there's no preparation phase. The OSPF daemons are just killed (SIGTERM) and restarted normally. The tests then proceed to do the same checks they do for planned GRs. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
0c05ceae00
commit
763c4113aa
@ -430,6 +430,144 @@ def test_gr_rt7():
|
||||
check_routers(restarting="rt7")
|
||||
|
||||
|
||||
#
|
||||
# Test rt1 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt1():
|
||||
logger.info("Test: verify rt1 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt1", ["ospf6d"], save_config=False)
|
||||
start_router_daemons(tgen, "rt1", ["ospf6d"])
|
||||
|
||||
expect_grace_lsa(restarting="1.1.1.1", helper="rt2")
|
||||
ensure_gr_is_in_zebra("rt1")
|
||||
check_routers(restarting="rt1")
|
||||
|
||||
|
||||
#
|
||||
# Test rt2 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt2():
|
||||
logger.info("Test: verify rt2 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt2", ["ospf6d"], save_config=False)
|
||||
start_router_daemons(tgen, "rt2", ["ospf6d"])
|
||||
|
||||
expect_grace_lsa(restarting="2.2.2.2", helper="rt1")
|
||||
expect_grace_lsa(restarting="2.2.2.2", helper="rt3")
|
||||
ensure_gr_is_in_zebra("rt2")
|
||||
check_routers(restarting="rt2")
|
||||
|
||||
|
||||
#
|
||||
# Test rt3 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt3():
|
||||
logger.info("Test: verify rt3 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt3", ["ospf6d"], save_config=False)
|
||||
start_router_daemons(tgen, "rt3", ["ospf6d"])
|
||||
|
||||
expect_grace_lsa(restarting="3.3.3.3", helper="rt2")
|
||||
expect_grace_lsa(restarting="3.3.3.3", helper="rt4")
|
||||
expect_grace_lsa(restarting="3.3.3.3", helper="rt6")
|
||||
ensure_gr_is_in_zebra("rt3")
|
||||
check_routers(restarting="rt3")
|
||||
|
||||
|
||||
#
|
||||
# Test rt4 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt4():
|
||||
logger.info("Test: verify rt4 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt4", ["ospf6d"], save_config=False)
|
||||
start_router_daemons(tgen, "rt4", ["ospf6d"])
|
||||
|
||||
expect_grace_lsa(restarting="4.4.4.4", helper="rt3")
|
||||
expect_grace_lsa(restarting="4.4.4.4", helper="rt5")
|
||||
ensure_gr_is_in_zebra("rt4")
|
||||
check_routers(restarting="rt4")
|
||||
|
||||
|
||||
#
|
||||
# Test rt5 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt5():
|
||||
logger.info("Test: verify rt5 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt5", ["ospf6d"], save_config=False)
|
||||
start_router_daemons(tgen, "rt5", ["ospf6d"])
|
||||
|
||||
expect_grace_lsa(restarting="5.5.5.5", helper="rt4")
|
||||
ensure_gr_is_in_zebra("rt5")
|
||||
check_routers(restarting="rt5")
|
||||
|
||||
|
||||
#
|
||||
# Test rt6 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt6():
|
||||
logger.info("Test: verify rt6 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt6", ["ospf6d"], save_config=False)
|
||||
start_router_daemons(tgen, "rt6", ["ospf6d"])
|
||||
|
||||
expect_grace_lsa(restarting="6.6.6.6", helper="rt3")
|
||||
expect_grace_lsa(restarting="6.6.6.6", helper="rt7")
|
||||
ensure_gr_is_in_zebra("rt6")
|
||||
check_routers(restarting="rt6")
|
||||
|
||||
|
||||
#
|
||||
# Test rt7 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt7():
|
||||
logger.info("Test: verify rt7 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt7", ["ospf6d"], save_config=False)
|
||||
start_router_daemons(tgen, "rt7", ["ospf6d"])
|
||||
|
||||
expect_grace_lsa(restarting="6.6.6.6", helper="rt6")
|
||||
ensure_gr_is_in_zebra("rt7")
|
||||
check_routers(restarting="rt7")
|
||||
|
||||
|
||||
# Memory leak test template
|
||||
def test_memory_leak():
|
||||
"Run the memory leak test and report results."
|
||||
|
@ -434,6 +434,144 @@ def test_gr_rt7():
|
||||
check_routers(restarting="rt7")
|
||||
|
||||
|
||||
#
|
||||
# Test rt1 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt1():
|
||||
logger.info("Test: verify rt1 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt1", ["ospfd"], save_config=False)
|
||||
start_router_daemons(tgen, "rt1", ["ospfd"])
|
||||
|
||||
expect_grace_lsa(restarting="1.1.1.1", area="0.0.0.1", helper="rt2")
|
||||
ensure_gr_is_in_zebra("rt1")
|
||||
check_routers(restarting="rt1")
|
||||
|
||||
|
||||
#
|
||||
# Test rt2 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt2():
|
||||
logger.info("Test: verify rt2 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt2", ["ospfd"], save_config=False)
|
||||
start_router_daemons(tgen, "rt2", ["ospfd"])
|
||||
|
||||
expect_grace_lsa(restarting="2.2.2.2", area="0.0.0.1", helper="rt1")
|
||||
expect_grace_lsa(restarting="2.2.2.2", area="0.0.0.0", helper="rt3")
|
||||
ensure_gr_is_in_zebra("rt2")
|
||||
check_routers(restarting="rt2")
|
||||
|
||||
|
||||
#
|
||||
# Test rt3 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt3():
|
||||
logger.info("Test: verify rt3 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt3", ["ospfd"], save_config=False)
|
||||
start_router_daemons(tgen, "rt3", ["ospfd"])
|
||||
|
||||
expect_grace_lsa(restarting="3.3.3.3", area="0.0.0.0", helper="rt2")
|
||||
expect_grace_lsa(restarting="3.3.3.3", area="0.0.0.0", helper="rt4")
|
||||
expect_grace_lsa(restarting="3.3.3.3", area="0.0.0.0", helper="rt6")
|
||||
ensure_gr_is_in_zebra("rt3")
|
||||
check_routers(restarting="rt3")
|
||||
|
||||
|
||||
#
|
||||
# Test rt4 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt4():
|
||||
logger.info("Test: verify rt4 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt4", ["ospfd"], save_config=False)
|
||||
start_router_daemons(tgen, "rt4", ["ospfd"])
|
||||
|
||||
expect_grace_lsa(restarting="4.4.4.4", area="0.0.0.0", helper="rt3")
|
||||
expect_grace_lsa(restarting="4.4.4.4", area="0.0.0.2", helper="rt5")
|
||||
ensure_gr_is_in_zebra("rt4")
|
||||
check_routers(restarting="rt4")
|
||||
|
||||
|
||||
#
|
||||
# Test rt5 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt5():
|
||||
logger.info("Test: verify rt5 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt5", ["ospfd"], save_config=False)
|
||||
start_router_daemons(tgen, "rt5", ["ospfd"])
|
||||
|
||||
expect_grace_lsa(restarting="5.5.5.5", area="0.0.0.2", helper="rt4")
|
||||
ensure_gr_is_in_zebra("rt5")
|
||||
check_routers(restarting="rt5")
|
||||
|
||||
|
||||
#
|
||||
# Test rt6 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt6():
|
||||
logger.info("Test: verify rt6 performing an unplanned graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt6", ["ospfd"], save_config=False)
|
||||
start_router_daemons(tgen, "rt6", ["ospfd"])
|
||||
|
||||
expect_grace_lsa(restarting="6.6.6.6", area="0.0.0.0", helper="rt3")
|
||||
expect_grace_lsa(restarting="6.6.6.6", area="0.0.0.3", helper="rt7")
|
||||
ensure_gr_is_in_zebra("rt6")
|
||||
check_routers(restarting="rt6")
|
||||
|
||||
|
||||
#
|
||||
# Test rt7 performing an unplanned graceful restart
|
||||
#
|
||||
def test_unplanned_gr_rt7():
|
||||
logger.info("Test: verify rt7 performing a graceful restart")
|
||||
tgen = get_topogen()
|
||||
|
||||
# Skip if previous fatal error condition is raised
|
||||
if tgen.routers_have_failure():
|
||||
pytest.skip(tgen.errors)
|
||||
|
||||
kill_router_daemons(tgen, "rt7", ["ospfd"], save_config=False)
|
||||
start_router_daemons(tgen, "rt7", ["ospfd"])
|
||||
|
||||
expect_grace_lsa(restarting="7.7.7.7", area="0.0.0.3", helper="rt6")
|
||||
ensure_gr_is_in_zebra("rt7")
|
||||
check_routers(restarting="rt7")
|
||||
|
||||
|
||||
# Memory leak test template
|
||||
def test_memory_leak():
|
||||
"Run the memory leak test and report results."
|
||||
|
Loading…
Reference in New Issue
Block a user