diff options
| author | Renato Westphal <renato@opensourcerouting.org> | 2023-03-03 13:09:20 -0300 | 
|---|---|---|
| committer | Renato Westphal <renato@opensourcerouting.org> | 2023-05-08 21:47:44 -0300 | 
| commit | 763c4113aa2df2f44fc0277db38e191abd73c300 (patch) | |
| tree | 6191568c48f2577c6ff8eeef0a72a2a92f182f68 /tests/topotests/ospf_gr_topo1 | |
| parent | 0c05ceae008182616af113cb97005801532c3988 (diff) | |
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>
Diffstat (limited to 'tests/topotests/ospf_gr_topo1')
| -rwxr-xr-x | tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py | 138 | 
1 files changed, 138 insertions, 0 deletions
diff --git a/tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py b/tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py index ca2a3b287c..73185d501d 100755 --- a/tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py +++ b/tests/topotests/ospf_gr_topo1/test_ospf_gr_topo1.py @@ -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."  | 
