def test_standby_tor_downstream_bgp_recovered( rand_selected_dut, require_mocked_dualtor, verify_crm_nexthop_counter_not_increased, get_testbed_params, tbinfo): """ Verify traffic is shifted to the active links and no traffic drop observed; Verify traffic is distributed evenly after BGP session is recovered; Verify CRM that no new nexthop created """ # require real dualtor, because for mocked testbed, the route to standby is mocked. pt_require('dualtor' in tbinfo['topo']['name'], "Only run on dualtor testbed") PAUSE_TIME = 30 down_bgp = shutdown_random_one_bgp_session(rand_selected_dut) time.sleep(PAUSE_TIME) params = get_testbed_params() try: check_tunnel_balance(**params) except Exception as e: startup_bgp_session(rand_selected_dut, down_bgp) raise e startup_bgp_session(rand_selected_dut, down_bgp) time.sleep(PAUSE_TIME) params = get_testbed_params() check_tunnel_balance(**params)
def test_standby_tor_downstream_loopback_route_readded(ptfhost, rand_selected_dut, rand_unselected_dut, tbinfo): """ Verify traffic is equally distributed via loopback route """ pt_require('dualtor' in tbinfo['topo']['name'], "Only run on dualtor testbed") params = dualtor_info(ptfhost, rand_selected_dut, rand_unselected_dut, tbinfo) active_tor_loopback0 = params['active_tor_ip'] # Remove loopback routes and verify traffic is equally distributed remove_static_routes(rand_selected_dut, active_tor_loopback0) check_tunnel_balance(**params) # Readd loopback routes and verify traffic is equally distributed add_nexthop_routes(rand_selected_dut, active_tor_loopback0) check_tunnel_balance(**params)
def proxy_arp_enabled(rand_selected_dut, config_facts): """ Tries to enable proxy ARP for each VLAN on the ToR Also checks CONFIG_DB to see if the attempt was successful During teardown, restores the original proxy ARP setting Yields: (bool) True if proxy ARP was enabled for all VLANs, False otherwise """ duthost = rand_selected_dut pt_require(duthost.has_config_subcommand('config vlan proxy_arp'), "Proxy ARP command does not exist on device") proxy_arp_check_cmd = 'sonic-db-cli CONFIG_DB HGET "VLAN_INTERFACE|Vlan{}" proxy_arp' proxy_arp_config_cmd = 'config vlan proxy_arp {} {}' vlans = config_facts['VLAN'] vlan_ids = [vlans[vlan]['vlanid'] for vlan in vlans.keys()] old_proxy_arp_vals = {} new_proxy_arp_vals = [] # Enable proxy ARP/NDP for the VLANs on the DUT for vid in vlan_ids: old_proxy_arp_res = duthost.shell(proxy_arp_check_cmd.format(vid)) old_proxy_arp_vals[vid] = old_proxy_arp_res['stdout'] duthost.shell(proxy_arp_config_cmd.format(vid, 'enabled')) logger.info("Enabled proxy ARP for Vlan{}".format(vid)) new_proxy_arp_res = duthost.shell(proxy_arp_check_cmd.format(vid)) new_proxy_arp_vals.append(new_proxy_arp_res['stdout']) yield all('enabled' in val for val in new_proxy_arp_vals) for vid, proxy_arp_val in old_proxy_arp_vals.items(): if 'enabled' not in proxy_arp_val: duthost.shell(proxy_arp_config_cmd.format(vid, 'disabled'))