diff options
| author | Nathan Bahr <nbahr@atcorp.com> | 2025-02-24 20:02:54 +0000 | 
|---|---|---|
| committer | Nathan Bahr <nbahr@atcorp.com> | 2025-02-24 20:02:54 +0000 | 
| commit | bc290128630acdf3e5ca55d87c9c38c4a88413d1 (patch) | |
| tree | 24c5ea507036096c5a31e46a703bb713d6cdcc53 /tests | |
| parent | 2539e678848b8f9f629c395c6c21770cc9237d09 (diff) | |
pim: Fix autorp group joins
Group joining got broken when moving the autorp socket to open/close
as needed. This fixes it so autorp group joining is properly handled
as part of opening the socket.
Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
(cherry picked from commit d840560b74e3a6117aa1e4b1203dcdd8fb254ef6)
Fixed merge conflicts for backport
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/topotests/pim_autorp/test_pim_autorp.py | 84 | 
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/topotests/pim_autorp/test_pim_autorp.py b/tests/topotests/pim_autorp/test_pim_autorp.py index ad618af29e..a95c9be0a1 100644 --- a/tests/topotests/pim_autorp/test_pim_autorp.py +++ b/tests/topotests/pim_autorp/test_pim_autorp.py @@ -132,6 +132,90 @@ def test_pim_autorp_discovery_single_rp(request):      result = verify_pim_rp_info_is_empty(tgen, "r2")      assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result) +def test_pim_autorp_disable_enable(request): +    "Test PIM AutoRP disable and re-enable works properly" +    tgen = get_topogen() +    tc_name = request.node.name +    write_test_header(tc_name) + +    if tgen.routers_have_failure(): +        pytest.skip(tgen.errors) + +    step("Ensure AutoRP groups are joined on all routers") +    for rtr in ["r1", "r2"]: +        expected = { +            f"{rtr}-eth0": { +                "name": f"{rtr}-eth0", +                "224.0.1.40": "*", +            }, +        } + +        test_func = partial( +            topotest.router_json_cmp, +            tgen.gears[rtr], +            "show ip igmp sources json", +            expected, +        ) +        _, result = topotest.run_and_expect(test_func, None) +        assert result is None, "{} does not have correct autorp groups joined".format( +            rtr +        ) + +    step("Disable AutoRP on all routers") +    for rtr in ["r1", "r2"]: +        tgen.routers()[rtr].vtysh_cmd( +            """ +            conf +            router pim +              no autorp discovery +            """ +        ) + +    step("Ensure AutoRP groups are no longer joined on all routers") +    for rtr in ["r1", "r2"]: +        expected = {f"{rtr}-eth0": None} + +        test_func = partial( +            topotest.router_json_cmp, +            tgen.gears[rtr], +            "show ip igmp sources json", +            expected, +        ) +        _, result = topotest.run_and_expect(test_func, None) +        assert result is None, "{} does not have correct autorp groups joined".format( +            rtr +        ) + +    step("Re-enable AutoRP on all routers") +    for rtr in ["r1", "r2"]: +        tgen.routers()[rtr].vtysh_cmd( +            """ +            conf +            router pim +              autorp discovery +            """ +        ) + +    step("Ensure AutoRP groups are re-joined on all routers") +    for rtr in ["r1", "r2"]: +        expected = { +            f"{rtr}-eth0": { +                "name": f"{rtr}-eth0", +                "224.0.1.40": "*", +            }, +        } + +        test_func = partial( +            topotest.router_json_cmp, +            tgen.gears[rtr], +            "show ip igmp sources json", +            expected, +        ) +        _, result = topotest.run_and_expect(test_func, None) +        assert result is None, "{} does not have correct autorp groups joined".format( +            rtr +        ) +  def test_pim_autorp_discovery_multiple_rp(request):      "Test PIM AutoRP Discovery with multiple RP's"  | 
