Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
febcacd
Added test case to verify ebtables rules.
abdosi Feb 6, 2021
9582616
Merge remote-tracking branch 'upstream/master'
abdosi Feb 9, 2021
940ebe4
Merge remote-tracking branch 'upstream/master'
abdosi Feb 28, 2021
36feb13
Merge remote-tracking branch 'upstream/master'
abdosi Mar 9, 2021
ab4beee
Merge remote-tracking branch 'upstream/master'
abdosi Mar 16, 2021
8d59326
Merge remote-tracking branch 'upstream/master'
abdosi Mar 18, 2021
fa03609
Merge remote-tracking branch 'upstream/master'
abdosi Mar 18, 2021
532639a
Merge remote-tracking branch 'upstream/master'
abdosi May 14, 2021
0833669
Merge remote-tracking branch 'upstream/master'
abdosi Jun 28, 2021
f2dbf92
Merge remote-tracking branch 'upstream/master'
abdosi Oct 4, 2021
915dc97
Merge remote-tracking branch 'upstream/master'
abdosi Oct 12, 2021
1aacc7a
Merge remote-tracking branch 'upstream/master'
abdosi Oct 12, 2021
6ca8577
Merge remote-tracking branch 'upstream/master'
abdosi Oct 13, 2021
7ad4900
Merge remote-tracking branch 'upstream/master'
abdosi Oct 27, 2021
a6d5c16
Fix to avoid overlap of Front Port Channel and Internal Pot Channel
abdosi Oct 27, 2021
03453b0
Merge remote-tracking branch 'upstream/master'
abdosi Nov 18, 2021
5fce19c
Merge remote-tracking branch 'upstream/master'
abdosi Jan 21, 2022
75aa39c
Merge remote-tracking branch 'upstream/master'
abdosi Jan 28, 2022
b167913
Merge remote-tracking branch 'upstream/master'
abdosi Feb 9, 2022
69b3115
Changes to make copp work for chassis.
abdosi Feb 9, 2022
0bee7e2
Merge remote-tracking branch 'upstream/master' into copp
abdosi Jan 27, 2023
e770a7c
Ehance copp test case for T2/multi-dut scenario.
abdosi Jan 27, 2023
02e4cdb
More fixes,
abdosi Jan 27, 2023
212df4c
Merge branch 'master' into copp
abdosi Jan 31, 2023
112202a
Address Review Comments
abdosi Feb 1, 2023
e05eef2
Merge branch 'copp' of https://github.com/abdosi/sonic-mgmt into copp
abdosi Feb 1, 2023
7c0ca59
Address review comments
abdosi Feb 1, 2023
840a579
Merge remote-tracking branch 'upstream/master' into copp
abdosi Feb 3, 2023
0fe1aad
Enhanced duts_running_config_facts() and duts_minigraph_facts()
abdosi Feb 3, 2023
f417035
Fix last commit
abdosi Feb 3, 2023
5ac8391
Merge remote-tracking branch 'upstream/master' into copp
abdosi Feb 18, 2023
dd16292
Fix everflow test case on platforms that do not have recirc port.
abdosi Feb 18, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions tests/common/fixtures/fib_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ def get_t2_fib_info(duthosts, duts_cfg_facts, duts_mg_facts):
for asic_cfg_facts in cfg_facts:
if duthost.facts['switch_type'] == "voq":
switch_type = "voq"
dut_inband_intfs.setdefault(duthost.hostname,[]).extend(asic_cfg_facts['VOQ_INBAND_INTERFACE'])
dut_port_channels.setdefault(duthost.hostname,{}).update(asic_cfg_facts.get('PORTCHANNEL', {}))
dut_inband_intfs.setdefault(duthost.hostname,[]).extend(asic_cfg_facts[1]['VOQ_INBAND_INTERFACE'])
dut_port_channels.setdefault(duthost.hostname,{}).update(asic_cfg_facts[1].get('PORTCHANNEL', {}))
sys_neigh = {}
if switch_type == "voq":
voq_db = VoqDbCli(duthosts.supervisor_nodes[0])
Expand All @@ -58,7 +58,8 @@ def get_t2_fib_info(duthosts, duts_cfg_facts, duts_mg_facts):
for duthost in duthosts.frontend_nodes:
cfg_facts = duts_cfg_facts[duthost.hostname]
mg_facts = duts_mg_facts[duthost.hostname]
for asic_index, asic_cfg_facts in enumerate(cfg_facts):
for list_index, asic_cfg_facts_tuple in enumerate(cfg_facts):
asic_index, asic_cfg_facts = asic_cfg_facts_tuple
asic = duthost.asic_instance(asic_index)

asic.shell("{} redis-dump -d 0 -k 'ROUTE*' -y > /tmp/fib.{}.txt".format(asic.ns_arg, timestamp))
Expand Down Expand Up @@ -86,7 +87,7 @@ def get_t2_fib_info(duthosts, duts_cfg_facts, duts_mg_facts):
if len(oports) == 0:
skip = True
else:
oports.append([str(mg_facts[asic_index]['minigraph_ptf_indices'][x]) for x in po[ifname]['members']])
oports.append([str(mg_facts[list_index][1]['minigraph_ptf_indices'][x]) for x in po[ifname]['members']])
skip = False
else:
if ifname in ports:
Expand Down Expand Up @@ -126,7 +127,7 @@ def get_t2_fib_info(duthosts, duts_cfg_facts, duts_mg_facts):
if remote_neigh_intf in a_asic_mg_facts['minigraph_port_indices']:
oports.append([str(a_asic_mg_facts['minigraph_ptf_indices'][remote_neigh_intf])])
else:
oports.append([str(mg_facts[asic_index]['minigraph_ptf_indices'][ifname])])
oports.append([str(mg_facts[list_index][1]['minigraph_ptf_indices'][ifname])])
skip = False
else:
logger.info("Route point to non front panel port {}:{}".format(k, v))
Expand Down Expand Up @@ -170,7 +171,9 @@ def get_fib_info(duthost, dut_cfg_facts, duts_mg_facts):
"""
timestamp = datetime.now().strftime('%Y-%m-%d-%H:%M:%S')
fib_info = {}
for asic_index, asic_cfg_facts in enumerate(dut_cfg_facts):
for list_index, asic_cfg_facts_tuple in enumerate(dut_cfg_facts):

asic_index, asic_cfg_facts = asic_cfg_facts_tuple

asic = duthost.asic_instance(asic_index)

Expand Down Expand Up @@ -198,15 +201,15 @@ def get_fib_info(duthost, dut_cfg_facts, duts_mg_facts):
if 'role' in ports[po[ifname]['members'][0]] and ports[po[ifname]['members'][0]]['role'] == 'Int':
skip = True
else:
oports.append([str(duts_mg_facts[asic_index]['minigraph_ptf_indices'][x]) for x in po[ifname]['members']])
oports.append([str(duts_mg_facts[list_index][1]['minigraph_ptf_indices'][x]) for x in po[ifname]['members']])
else:
if ifname in sub_interfaces:
oports.append([str(duts_mg_facts[asic_index]['minigraph_ptf_indices'][ifname.split('.')[0]])])
oports.append([str(duts_mg_facts[list_index][1]['minigraph_ptf_indices'][ifname.split('.')[0]])])
elif ifname in ports:
if 'role' in ports[ifname] and ports[ifname]['role'] == 'Int':
skip = True
else:
oports.append([str(duts_mg_facts[asic_index]['minigraph_ptf_indices'][ifname])])
oports.append([str(duts_mg_facts[list_index][1]['minigraph_ptf_indices'][ifname])])
else:
logger.info("Route point to non front panel port {}:{}".format(k, v))
skip = True
Expand Down
10 changes: 6 additions & 4 deletions tests/common/fixtures/ptfhost_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -460,9 +460,10 @@ def ptf_test_port_map(ptfhost, tbinfo, duthosts, mux_server_url, duts_running_co
target_dut_port = int(list(dut_intf_map.values())[0])
router_mac = router_macs[target_dut_index]
if len(duts_minigraph_facts[duthosts[target_dut_index].hostname]) > 1:
for idx, mg_facts in enumerate(duts_minigraph_facts[duthosts[target_dut_index].hostname]):
for list_idx, mg_facts_tuple in enumerate(duts_minigraph_facts[duthosts[target_dut_index].hostname]):
idx, mg_facts = mg_facts_tuple
if target_dut_port in mg_facts['minigraph_port_indices'].values():
router_mac = duts_running_config_facts[duthosts[target_dut_index].hostname][idx]['DEVICE_METADATA']['localhost']['mac'].lower()
router_mac = duts_running_config_facts[duthosts[target_dut_index].hostname][list_idx][1]['DEVICE_METADATA']['localhost']['mac'].lower()
asic_idx = idx
break
ports_map[ptf_port] = {
Expand Down Expand Up @@ -525,9 +526,10 @@ def ptf_test_port_map_active_active(ptfhost, tbinfo, duthosts, mux_server_url, d
target_dut_port = int(list(dut_intf_map.values())[0])
router_mac = router_macs[target_dut_index]
if len(duts_minigraph_facts[duthosts[target_dut_index].hostname]) > 1:
for idx, mg_facts in enumerate(duts_minigraph_facts[duthosts[target_dut_index].hostname]):
for list_idx, mg_facts_tuple in enumerate(duts_minigraph_facts[duthosts[target_dut_index].hostname]):
idx, mg_facts = mg_facts_tuple
if target_dut_port in mg_facts['minigraph_port_indices'].values():
router_mac = duts_running_config_facts[duthosts[target_dut_index].hostname][idx]['DEVICE_METADATA']['localhost']['mac'].lower()
router_mac = duts_running_config_facts[duthosts[target_dut_index].hostname][list_idx][1]['DEVICE_METADATA']['localhost']['mac'].lower()
asic_idx = idx
for a_dut_port, a_dut_port_index in mg_facts['minigraph_port_indices'].items():
if a_dut_port_index == target_dut_port and "Ethernet-Rec" not in a_dut_port and \
Expand Down
4 changes: 2 additions & 2 deletions tests/common/plugins/sanity_check/checks.py
Original file line number Diff line number Diff line change
Expand Up @@ -480,7 +480,7 @@ def _verify_show_mux_status():
return False

port_name = row['port']
port_idx = str(duts_minigraph_facts[dut_hostname][0]['minigraph_port_indices'][port_name])
port_idx = str(duts_minigraph_facts[dut_hostname][0][1]['minigraph_port_indices'][port_name])
mux_status = 0 if row["status"] == "standby" else 1
dut_parsed_mux_status[port_idx] = {"status": mux_status, "cable_type": port_cable_types[port_idx]}
if "hwstatus" in row:
Expand Down Expand Up @@ -523,7 +523,7 @@ def _verify_show_mux_status():
has_active_active_ports = False
for row in upper_tor_mux_config:
port_name = row["port"]
port_idx = str(duts_minigraph_facts[dut_upper_tor.hostname][0]['minigraph_port_indices'][port_name])
port_idx = str(duts_minigraph_facts[dut_upper_tor.hostname][0][1]['minigraph_port_indices'][port_name])
if "cable_type" in row:
if row["cable_type"] and row["cable_type"] not in (CableType.active_active, CableType.active_standby):
err_msg = "Unsupported cable type %s for %s" % (row["cable_type"], port_name)
Expand Down
12 changes: 6 additions & 6 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -1647,8 +1647,8 @@ def duts_running_config_facts(duthosts):
Returns:
dict: {
<dut hostname>: [
{asic0_cfg_facts},
{asic1_cfg_facts}
(asic0_idx, {asic0_cfg_facts}),
(asic1_idx, {asic1_cfg_facts})
]
}
"""
Expand All @@ -1659,7 +1659,7 @@ def duts_running_config_facts(duthosts):
if asic.is_it_backend():
continue
asic_cfg_facts = asic.config_facts(source='running')['ansible_facts']
cfg_facts[duthost.hostname].append(asic_cfg_facts)
cfg_facts[duthost.hostname].append((asic.asic_index, asic_cfg_facts))
return cfg_facts


Expand Down Expand Up @@ -1716,8 +1716,8 @@ def duts_minigraph_facts(duthosts, tbinfo):
Returns:
dict: {
<dut hostname>: [
{asic0_mg_facts},
{asic1_mg_facts}
(asic0_idx, {asic0_mg_facts}),
(asic1_idx, {asic1_mg_facts})
]
}
"""
Expand All @@ -1728,7 +1728,7 @@ def duts_minigraph_facts(duthosts, tbinfo):
if asic.is_it_backend():
continue
asic_mg_facts = asic.get_extended_minigraph_facts(tbinfo)
mg_facts[duthost.hostname].append(asic_mg_facts)
mg_facts[duthost.hostname].append((asic.asic_index, asic_mg_facts))

return mg_facts

Expand Down
6 changes: 4 additions & 2 deletions tests/copp/test_copp.py
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,8 @@ def _gather_test_params(tbinfo, duthost, request, duts_minigraph_facts):
mg_fact = duts_minigraph_facts[duthost.hostname]

port_index_map = {}
for index, mg_facts in enumerate(mg_fact):
for mg_facts_tuple in mg_fact:
index, mg_facts = mg_facts_tuple
# filter out server peer port and only bgp peer ports remain, to support T0 topologies
bgp_peer_name_set = set([bgp_peer["name"] for bgp_peer in mg_facts["minigraph_bgp"]])
# get the port_index_map using the ptf_indicies to support multi DUT topologies
Expand All @@ -318,7 +319,8 @@ def _gather_test_params(tbinfo, duthost, request, duts_minigraph_facts):
peerip = None
nn_target_vlanid = None

for index, mg_facts in enumerate(mg_fact):
for mg_facts_tuple in mg_fact:
index, mg_facts = mg_facts_tuple
if nn_target_interface not in mg_facts["minigraph_neighbors"]:
continue
for bgp_peer in mg_facts["minigraph_bgp"]:
Expand Down
2 changes: 1 addition & 1 deletion tests/decap/test_decap.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def loopback_ips(duthosts, duts_running_config_facts):
lo_ip = None
lo_ipv6 = None
# Loopback0 ip is same on all ASICs
for addr in cfg_facts[0]["LOOPBACK_INTERFACE"]["Loopback0"]:
for addr in cfg_facts[0][1]["LOOPBACK_INTERFACE"]["Loopback0"]:
ip = IPNetwork(addr).ip
if ip.version == 4 and not lo_ip:
lo_ip = str(ip)
Expand Down
3 changes: 2 additions & 1 deletion tests/drop_packets/test_configurable_drop_counters.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,8 @@ def add_default_route_to_dut(duts_running_config_facts, duthosts, tbinfo):
try:
for duthost in duthosts:
cfg_facts = duts_running_config_facts[duthost.hostname]
for asic_index, asic_cfg_facts in enumerate(cfg_facts):
for asic_cfg_facts_tuple in cfg_facts:
asic_index, asic_cfg_facts = asic_cfg_facts_tuple
asic = duthost.asic_instance(asic_index)
bgp_neighbors = asic_cfg_facts["BGP_NEIGHBOR"]
ipv4_cmd_parts = ["ip route add default"]
Expand Down
44 changes: 23 additions & 21 deletions tests/everflow/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,30 @@ def setup_recycle_port(duthosts, tbinfo):
rec_intf = {}
if "t2" in tbinfo['topo']['name']:
for duthost in duthosts.frontend_nodes:
rec_intf[duthost.hostname] = {}
for asic in duthost.asics:
output = duthost.command("show ip interfaces {} -d all".format(asic.cli_ns_option))['stdout_lines']
if 'Ethernet-Rec' not in output:
rec_intf[duthost.hostname][asic.namespace] = 1
cmd = "sudo config interface {ns} ip add Ethernet-Rec{rec} 1.1.1.{an}/32".format(
ns=asic.cli_ns_option,
rec=asic.asic_index,
an=asic.asic_index + 1)
logging.info(cmd)
duthost.command(cmd)
duthost.command("sudo config save -y")
if duthost.facts['switch_type'] == "voq":
rec_intf[duthost.hostname] = {}
for asic in duthost.asics:
output = duthost.command("show ip interfaces {} -d all".format(asic.cli_ns_option))['stdout_lines']
if 'Ethernet-Rec' not in output:
rec_intf[duthost.hostname][asic.namespace] = 1
cmd = "sudo config interface {ns} ip add Ethernet-Rec{rec} 1.1.1.{an}/32".format(
ns=asic.cli_ns_option,
rec=asic.asic_index,
an=asic.asic_index + 1)
logging.info(cmd)
duthost.command(cmd)
duthost.command("sudo config save -y")
yield
if "t2" in tbinfo['topo']['name']:
for duthost in duthosts.frontend_nodes:
for asic in duthost.asics:
if rec_intf[duthost.hostname][asic.namespace]:
cmd = "sudo config interface {ns} ip remove Ethernet-Rec{rec} 1.1.1.{an}/32".format(
ns=asic.cli_ns_option,
rec=asic.asic_index,
an=asic.asic_index + 1)
logging.info(cmd)
duthost.command(cmd)
duthost.command("sudo config save -y")
if duthost.facts['switch_type'] == "voq":
for asic in duthost.asics:
if rec_intf[duthost.hostname][asic.namespace]:
cmd = "sudo config interface {ns} ip remove Ethernet-Rec{rec} 1.1.1.{an}/32".format(
ns=asic.cli_ns_option,
rec=asic.asic_index,
an=asic.asic_index + 1)
logging.info(cmd)
duthost.command(cmd)
duthost.command("sudo config save -y")

7 changes: 4 additions & 3 deletions tests/fib/test_fib.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,9 @@ def get_vlan_untag_ports(duthosts, duts_running_config_facts):
ports = []
for asic_cfg_facts in duts_running_config_facts[duthost.hostname]:

vlans = asic_cfg_facts.get('VLAN_INTERFACE', {}).keys()
vlans = asic_cfg_facts[1].get('VLAN_INTERFACE', {}).keys()
for vlan in vlans:
vlan_member_info = asic_cfg_facts.get('VLAN_MEMBER', {}).get(vlan, {})
vlan_member_info = asic_cfg_facts[1].get('VLAN_MEMBER', {}).get(vlan, {})
if vlan_member_info:
for port_name, tag_mode in vlan_member_info.items():
if tag_mode['tagging_mode'] == 'untagged':
Expand Down Expand Up @@ -244,7 +244,8 @@ def add_default_route_to_dut(duts_running_config_facts, duthosts, tbinfo):
try:
for duthost in duthosts:
cfg_facts = duts_running_config_facts[duthost.hostname]
for asic_index, asic_cfg_facts in enumerate(cfg_facts):
for asic_cfg_facts_tuple in (cfg_facts):
asic_index, asic_cfg_facts = asic_cfg_facts_tuple
asic = duthost.asic_instance(asic_index)
bgp_neighbors = asic_cfg_facts["BGP_NEIGHBOR"]
ipv4_cmd_parts = ["ip route add default"]
Expand Down
4 changes: 2 additions & 2 deletions tests/platform_tests/test_link_down.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ def check_interfaces_and_services_all_LCs(duthosts, conn_graph_facts, xcvr_skip_


def test_link_down_on_sup_reboot(duthosts, localhost, enum_supervisor_dut_hostname,
conn_graph_facts, duts_running_config_facts,
conn_graph_facts,
fanouthosts, tbinfo, xcvr_skip_list, set_max_to_reboot):
if len(duthosts.nodes) == 1:
pytest.skip("Skip single-host dut for this test")
Expand Down Expand Up @@ -189,7 +189,7 @@ def test_link_down_on_sup_reboot(duthosts, localhost, enum_supervisor_dut_hostna


def test_link_status_on_host_reboot(duthosts, localhost, enum_frontend_dut_hostname,
duts_running_config_facts, conn_graph_facts,
conn_graph_facts,
fanouthosts, xcvr_skip_list, tbinfo, set_max_to_reboot):
duthost = duthosts[enum_frontend_dut_hostname]
hostname = duthost.hostname
Expand Down