From 608048971a4939fb4ceb71e8fe488e6ef464d9aa Mon Sep 17 00:00:00 2001 From: rraghav-cisco <58446052+rraghav-cisco@users.noreply.github.com> Date: Sun, 12 Jan 2025 19:53:22 -0800 Subject: [PATCH] qos-sai:dwrr:cisco-8000:Handle non-multiasic part as well for the dshell-script change. (#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: jianquanye@microsoft.com --- tests/qos/qos_sai_base.py | 10 +++++++--- tests/saitests/py3/sai_qos_tests.py | 15 +++++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/tests/qos/qos_sai_base.py b/tests/qos/qos_sai_base.py index 34bde31b9a3..ac266c640e4 100644 --- a/tests/qos/qos_sai_base.py +++ b/tests/qos/qos_sai_base.py @@ -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 = ''' @@ -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="/") @@ -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, diff --git a/tests/saitests/py3/sai_qos_tests.py b/tests/saitests/py3/sai_qos_tests.py index 4291f0bc74e..06e5f8d687e 100755 --- a/tests/saitests/py3/sai_qos_tests.py +++ b/tests/saitests/py3/sai_qos_tests.py @@ -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(