def test_ospf_gr_helper_tc2_p0(request): """ OSPF GR on Broadcast : Verify DUT enters Helper mode when neighbor sends grace lsa, helps RR to restart gracefully (RR = DR) """ tc_name = request.node.name write_test_header(tc_name) tgen = get_topogen() # Don't run this test if we have any failure. if tgen.routers_have_failure(): pytest.skip(tgen.errors) global topo, intf, intf1, pkt step("Bring up the base config as per the topology") step( "Configure DR priority as 99 in RR , DUT dr priority = 98 " "& reset ospf process in all the routers" ) reset_config_on_routers(tgen) ospf_covergence = verify_ospf_neighbor(tgen, topo, lan=True) assert ( ospf_covergence is True ), "OSPF is not after reset config \n Error:" " {}".format(ospf_covergence) ospf_gr_r0 = { "r0": {"ospf": {"graceful-restart": {"helper enable": [], "opaque": True}}} } result = create_router_ospf(tgen, topo, ospf_gr_r0) assert result is True, "Testcase {} : Failed \n Error: {}".format(tc_name, result) ospf_gr_r1 = { "r1": {"ospf": {"graceful-restart": {"helper enable": [], "opaque": True}}} } result = create_router_ospf(tgen, topo, ospf_gr_r1) assert result is True, "Testcase {} : Failed \n Error: {}".format(tc_name, result) step("Verify that DUT enters into helper mode.") input_dict = {"activeRestarterCnt": 1} gracelsa_sent = False repeat = 0 dut = "r0" while not gracelsa_sent and repeat < Iters: gracelsa_sent = scapy_send_raw_packet(tgen, topo, "r1", intf1, pkt) result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) if isinstance(result, str): repeat += 1 gracelsa_sent = False assert result is True, "Testcase {} : Failed \n Error: {}".format(tc_name, result) delete_ospf() write_test_footer(tc_name)
def test_ospf_gr_helper_tc1_p0(request): """Verify by default helper support is disabled for FRR ospf""" tc_name = request.node.name write_test_header(tc_name) tgen = get_topogen() # Don't run this test if we have any failure. if tgen.routers_have_failure(): pytest.skip(tgen.errors) global topo, intf, intf1, pkt step("Bring up the base config as per the topology") reset_config_on_routers(tgen) ospf_covergence = verify_ospf_neighbor(tgen, topo, lan=True) assert ( ospf_covergence is True ), "OSPF is not after reset config \n Error:" " {}".format(ospf_covergence) step("Verify that GR helper route is disabled by default to the in" "the DUT.") input_dict = { "helperSupport": "Disabled", "strictLsaCheck": "Enabled", "restartSupoort": "Planned and Unplanned Restarts", "supportedGracePeriod": 1800, } dut = "r0" result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Verify that DUT does not enter helper mode upon receiving the " "grace lsa.") # send grace lsa scapy_send_raw_packet(tgen, topo, "r1", intf1, pkt) input_dict = {"activeRestarterCnt": 1} dut = "r0" result = verify_ospf_gr_helper(tgen, topo, dut, input_dict, expected=False) assert ( result is not True ), "Testcase {} : Failed. DUT entered helper role " " \n Error: {}".format( tc_name, result) step("Configure graceful restart in the DUT") ospf_gr_r0 = { "r0": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r0) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Verify that GR helper route is enabled in the DUT.") input_dict = { "helperSupport": "Enabled", "strictLsaCheck": "Enabled", "restartSupoort": "Planned and Unplanned Restarts", "supportedGracePeriod": 1800, } dut = "r0" result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) ospf_gr_r1 = { "r1": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r1) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Perform GR in RR.") step("Verify that DUT does enter helper mode upon receiving" " the grace lsa.") input_dict = {"activeRestarterCnt": 1} gracelsa_sent = False repeat = 0 dut = "r0" while not gracelsa_sent and repeat < Iters: gracelsa_sent = scapy_send_raw_packet(tgen, topo, "r1", intf1, pkt) result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) if isinstance(result, str): repeat += 1 gracelsa_sent = False assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Unconfigure the GR helper command.") ospf_gr_r0 = { "r0": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True, "delete": True, } } } } result = create_router_ospf(tgen, topo, ospf_gr_r0) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) input_dict = {"helperSupport": "Disabled"} dut = "r0" result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Configure gr helper using the router id") ospf_gr_r0 = { "r0": { "ospf": { "graceful-restart": { "helper enable": ["1.1.1.1"], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r0) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Verify that DUT does enter helper mode upon receiving" " the grace lsa.") input_dict = {"activeRestarterCnt": 1} gracelsa_sent = False repeat = 0 dut = "r0" while not gracelsa_sent and repeat < Iters: gracelsa_sent = scapy_send_raw_packet(tgen, topo, "r1", intf1, pkt) result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) if isinstance(result, str): repeat += 1 gracelsa_sent = False assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Un Configure gr helper using the router id") ospf_gr_r0 = { "r0": { "ospf": { "graceful-restart": { "helper enable": ["1.1.1.1"], "opaque": True, "delete": True, } } } } result = create_router_ospf(tgen, topo, ospf_gr_r0) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Verify that GR helper router is disabled in the DUT for" " router id x.x.x.x") input_dict = {"enabledRouterIds": [{"routerId": "1.1.1.1"}]} dut = "r0" result = verify_ospf_gr_helper(tgen, topo, dut, input_dict, expected=False) assert ( result is not True ), "Testcase {} : Failed, Helper role enabled for RR\n Error: {}".format( tc_name, result) delete_ospf() write_test_footer(tc_name)
def test_ospf_gr_helper_tc8_p1(request): """ Test ospf gr helper Verify helper functionality when dut is helping RR and new grace lsa is received from RR. """ tc_name = request.node.name write_test_header(tc_name) tgen = get_topogen() # Don't run this test if we have any failure. if tgen.routers_have_failure(): pytest.skip(tgen.errors) global topo, intf, intf1, pkt step("Bring up the base config as per the topology") step("Enable GR") reset_config_on_routers(tgen) ospf_covergence = verify_ospf_neighbor(tgen, topo, lan=True) assert ( ospf_covergence is True ), "OSPF is not after reset config \n Error:" " {}".format(ospf_covergence) ospf_gr_r0 = { "r0": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r0) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) ospf_gr_r1 = { "r1": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r1) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) input_dict = {"supportedGracePeriod": 1800} dut = "r0" result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Verify that DUT enters into helper mode.") input_dict = {"activeRestarterCnt": 1} gracelsa_sent = False repeat = 0 dut = "r0" while not gracelsa_sent and repeat < Iters: gracelsa_sent = scapy_send_raw_packet(tgen, topo, "r1", intf1, pkt) result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) if isinstance(result, str): repeat += 1 gracelsa_sent = False assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Send the Grace LSA again to DUT when RR is in GR.") input_dict = {"activeRestarterCnt": 1} gracelsa_sent = False repeat = 0 dut = "r0" while not gracelsa_sent and repeat < Iters: gracelsa_sent = scapy_send_raw_packet(tgen, topo, "r1", intf1, pkt) result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) if isinstance(result, str): repeat += 1 gracelsa_sent = False assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) delete_ospf() write_test_footer(tc_name)
def test_ospf_gr_helper_tc7_p1(request): """ Test ospf gr helper Verify helper when grace lsa is received with different configured value in process level (higher, lower, grace lsa timer above 1800) """ tc_name = request.node.name write_test_header(tc_name) tgen = get_topogen() # Don't run this test if we have any failure. if tgen.routers_have_failure(): pytest.skip(tgen.errors) global topo, intf, intf1, pkt step("Bring up the base config as per the topology") step("Configure DR priority as 99 in RR , DUT dr priority = 98 " "& reset ospf process in all the routers") step("Enable GR on RR and DUT with grace period on RR = 333" "and grace period on DUT = 300") reset_config_on_routers(tgen) ospf_covergence = verify_ospf_neighbor(tgen, topo, lan=True) assert ( ospf_covergence is True ), "OSPF is not after reset config \n Error:" " {}".format(ospf_covergence) ospf_gr_r0 = { "r0": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r0) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) ospf_gr_r1 = { "r1": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r1) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) input_dict = {"supportedGracePeriod": 1800} dut = "r0" result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Configure grace period = 1801 on RR and restart ospf .") grace_period_1801 = "01005e00000570708bd051ef080045c0005cbeb10000015907d111010101e00000050204004801010101000000009714000000000000000000000000000100010209030000000101010180000001c8e9002c000100040000016800020001010000000003000411010101" gracelsa_sent = scapy_send_raw_packet(tgen, topo, "r1", intf1, grace_period_1801) step("Verify R0 does not enter helper mode.") input_dict = {"activeRestarterCnt": 1} dut = "r0" result = verify_ospf_gr_helper(tgen, topo, dut, input_dict, expected=False) assert ( result is not True ), "Testcase {} : Failed. DUT entered helper role " " \n Error: {}".format( tc_name, result) delete_ospf() write_test_footer(tc_name)
def test_ospf_gr_helper_tc4_p1(request): """ OSPF GR on Broadcast : Verify DUT enters Helper mode when neighbor sends grace lsa, helps RR to restart gracefully (RR = DRother) """ tc_name = request.node.name write_test_header(tc_name) tgen = get_topogen() # Don't run this test if we have any failure. if tgen.routers_have_failure(): pytest.skip(tgen.errors) global topo, intf, intf1, pkt step("Bring up the base config as per the topology") step("Configure DR priority as 99 in RR , DUT dr priority = 98 " "& reset ospf process in all the routers") reset_config_on_routers(tgen) ospf_covergence = verify_ospf_neighbor(tgen, topo, lan=True) assert ( ospf_covergence is True ), "OSPF is not after reset config \n Error:" " {}".format(ospf_covergence) step("Configure DR pririty 100 on R0 and clear ospf neighbors " "on all the routers.") input_dict = { "r0": { "links": { sw_name: { "interface": topo["routers"]["r0"]["links"][sw_name]["interface"], "ospf": { "priority": 0 }, } } } } result = create_interfaces_cfg(tgen, input_dict) assert result is True, "Testcase {} :Failed \n Error: {}".format( tc_name, result) step("Clear ospf neighbours in all routers") for rtr in topo["routers"]: clear_ospf(tgen, rtr) step("Verify that DR election is triggered and R0 is elected as 2-Way") input_dict = { "r0": { "ospf": { "neighbors": { "r1": { "state": "Full", "role": "DR" }, "r2": { "state": "2-Way", "role": "DROther" }, "r3": { "state": "2-Way", "role": "DROther" }, } } } } dut = "r0" result = verify_ospf_neighbor(tgen, topo, dut, input_dict, lan=True) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) ospf_gr_r0 = { "r0": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r0) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) ospf_gr_r1 = { "r1": { "ospf": { "graceful-restart": { "helper enable": [], "opaque": True } } } } result = create_router_ospf(tgen, topo, ospf_gr_r1) assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) step("Verify that DUT enters into helper mode.") input_dict = {"activeRestarterCnt": 1} gracelsa_sent = False repeat = 0 dut = "r0" while not gracelsa_sent and repeat < Iters: gracelsa_sent = scapy_send_raw_packet(tgen, topo, "r1", intf1, pkt) result = verify_ospf_gr_helper(tgen, topo, dut, input_dict) if isinstance(result, str): repeat += 1 gracelsa_sent = False assert result is True, "Testcase {} : Failed \n Error: {}".format( tc_name, result) delete_ospf() write_test_footer(tc_name)