diff --git a/tests/platform_tests/sfp/test_show_intf_xcvr.py b/tests/platform_tests/sfp/test_show_intf_xcvr.py index a76d8582ba2..9690f7190b5 100644 --- a/tests/platform_tests/sfp/test_show_intf_xcvr.py +++ b/tests/platform_tests/sfp/test_show_intf_xcvr.py @@ -76,8 +76,20 @@ def test_check_show_lpmode(duthosts, enum_rand_one_per_hwsku_frontend_hostname, duthost = duthosts[enum_rand_one_per_hwsku_frontend_hostname] portmap, dev_conn = get_dev_conn( duthost, conn_graph_facts, enum_frontend_asic_index) - sfp_lpmode = duthost.command(cmd_sfp_lpmode) + sfp_lpmode = duthost.command(cmd_sfp_lpmode, module_ignore_errors=True) + sfp_lpmode_data = sfp_lpmode["stdout_lines"] + + # Check if the header is present + header = sfp_lpmode_data[0] + logging.info(f"The header is: {header}") + if header.replace(" ", "") != "Port Low-power Mode".replace(" ", ""): + logging.error("Invalid output format: Header missing") + return False + + # Check interface lpmode + sfp_lpmode_info = parse_output(sfp_lpmode_data[2:]) + logging.info(f"The interface sfp lpmode info is: {sfp_lpmode_info}") for intf in dev_conn: if intf not in xcvr_skip_list[duthost.hostname]: assert validate_transceiver_lpmode( - sfp_lpmode['stdout']), "Interface mode incorrect in 'show interface transceiver lpmode'" + sfp_lpmode_info, intf), "Interface mode incorrect in 'show interface transceiver lpmode'" diff --git a/tests/platform_tests/sfp/util.py b/tests/platform_tests/sfp/util.py index 50065ceb421..c793291b432 100644 --- a/tests/platform_tests/sfp/util.py +++ b/tests/platform_tests/sfp/util.py @@ -47,15 +47,14 @@ def get_dev_conn(duthost, conn_graph_facts, asic_index): return portmap, dev_conn -def validate_transceiver_lpmode(output): - lines = output.strip().split('\n') - # Check if the header is present - if lines[0].replace(" ", "") != "Port Low-power Mode".replace(" ", ""): - logging.error("Invalid output format: Header missing") +def validate_transceiver_lpmode(sfp_lpmode, port): + lpmode = sfp_lpmode.get(port) + if lpmode is None: + logging.error(f"Interface {port} does not present in the show command") return False - for line in lines[2:]: - port, lpmode = line.strip().split() - if lpmode not in ["Off", "On"]: - logging.error("Invalid low-power mode {} for port {}".format(lpmode, port)) - return False + + if lpmode not in ["Off", "On"]: + logging.error("Invalid low-power mode {} for port {}".format(lpmode, port)) + return False + return True