Skip to content

Commit

Permalink
qos-sai:dwrr:cisco-8000:Handle non-multiasic part as well for the dsh…
Browse files Browse the repository at this point in the history
…ell-script change. (sonic-net#16315)

Description of PR
Summary:
Fixes # 16314

Approach
What is the motivation for this PR?
The recent commit for dwrr works for multi-asic only. This PR handles the single asic platforms.

How did you do it?
Making sure to use the correct container to use for single asic tests.

How did you verify/test it?
Not done yet. @kevinskwang , @yejianquan : Can you pls try this out ? I will try it when I get the testbed access.

Any platform specific information?
For cisco-8000 only.

co-authorized by: [email protected]
  • Loading branch information
rraghav-cisco authored Jan 13, 2025
1 parent 8b4f733 commit 6080489
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
10 changes: 7 additions & 3 deletions tests/qos/qos_sai_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -2664,7 +2664,7 @@ def change_lag_lacp_timer(self, duthosts, get_src_dst_asic_and_duts, tbinfo, nbr
"Changing lacp timer multiplier to default for %s in %s" % (neighbor_lag_member, vm_host))
vm_host.no_lacp_time_multiplier(neighbor_lag_member)

def copy_and_run_set_cir_script_cisco_8000(self, dut, ports, asic="", speed="10000000"):
def copy_set_cir_script_cisco_8000(self, dut, ports, asic="", speed="10000000"):
if dut.facts['asic_type'] != "cisco-8000":
raise RuntimeError("This function should have been called only for cisco-8000.")
dshell_script = '''
Expand All @@ -2684,8 +2684,12 @@ def set_port_cir(interface, rate):

script_path = "/tmp/set_scheduler.py"
dut.copy(content=dshell_script, dest=script_path)
if dut.sonichost.is_multi_asic:
dest = f"syncd{asic}"
else:
dest = "syncd"
dut.docker_copy_to_all_asics(
container_name=f"syncd{asic}",
container_name=dest,
src=script_path,
dst="/")

Expand All @@ -2712,7 +2716,7 @@ def set_cir_change(self, get_src_dst_asic_and_duts, dutConfig):
interfaces = match.group(1).split(' ')

# Set scheduler to 5 Gbps.
self.copy_and_run_set_cir_script_cisco_8000(
self.copy_set_cir_script_cisco_8000(
dut=dst_dut,
ports=interfaces,
asic=dst_index,
Expand Down
15 changes: 11 additions & 4 deletions tests/saitests/py3/sai_qos_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3847,17 +3847,24 @@ def runTest(self):
recv_pkt = scapy.Ether(received.packet)

if asic_type == 'cisco-8000':
cmd_opt = ""
if 'dst_asic_index' in self.test_params:
cmd_opt = "-n asic{}".format(self.test_params['dst_asic_index'])
out, err, ret = self.exec_cmd_on_dut(
self.dst_server_ip,
self.test_params['dut_username'],
self.test_params['dut_password'],
"show platform summary | egrep 'ASIC Count' | awk -F: '{print $2}'")
cmd_opt = "-n asic{}".format(self.test_params['dst_asic_index'])
if out[0].strip() == "1":
cmd_opt = ""
cmd = "sudo show platform npu script {} -s set_scheduler.py".format(cmd_opt)
out, err, ret = self.exec_cmd_on_dut(
self.dst_server_ip,
self.test_params['dut_username'],
self.test_params['dut_password'],
cmd)
if err != "" and out == "":
if err and out == []:
raise RuntimeError("cmd({}) might have failed in the DUT. Error:{}".format(cmd, err))
else:
print("Success in setting scheduler in DUT.", file=sys.stderr)
else:
# Release port
self.sai_thrift_port_tx_enable(
Expand Down

0 comments on commit 6080489

Please sign in to comment.