From fe434dcdbe7d2fe09d5d44e44253488747ffd2c4 Mon Sep 17 00:00:00 2001 From: Wei Bai Date: Wed, 5 May 2021 07:15:55 +0000 Subject: [PATCH 1/4] Skip trigger_pfcwd=False test cases for Broadcom devices --- tests/ixia/pfcwd/files/pfcwd_basic_helper.py | 10 +++++++++- tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/ixia/pfcwd/files/pfcwd_basic_helper.py b/tests/ixia/pfcwd/files/pfcwd_basic_helper.py index 62d94ed014b..b717894c593 100644 --- a/tests/ixia/pfcwd/files/pfcwd_basic_helper.py +++ b/tests/ixia/pfcwd/files/pfcwd_basic_helper.py @@ -1,9 +1,10 @@ import time from math import ceil -from tests.common.helpers.assertions import pytest_assert +from tests.common.helpers.assertions import pytest_assert, pytest_require from tests.common.fixtures.conn_graph_facts import conn_graph_facts,\ fanout_graph_facts +from tests.common.broadcom_data import is_broadcom_device from tests.common.ixia.ixia_fixtures import ixia_api_serv_ip, ixia_api_serv_port,\ ixia_api_serv_user, ixia_api_serv_passwd, ixia_api from tests.common.ixia.ixia_helpers import get_dut_port_id @@ -59,6 +60,13 @@ def run_pfcwd_basic_test(api, """ pytest_assert(testbed_config is not None, 'Fail to get L2/3 testbed config') + """ + PFC watchdog on Broadcom devices use some approximation techniques to detect + PFC storms, which may cause some fake alerts. Therefore, we skip test cases + whose trigger_pfcwd is False for Broadcom devices. + """ + pytest_require(trigger_pfcwd is True or is_broadcom_device(duthost) is False, + 'Skip trigger_pfcwd=False test cases for Broadcom devices') start_pfcwd(duthost) enable_packet_aging(duthost) diff --git a/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py b/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py index eedb70e6bc7..0e46887e9ee 100644 --- a/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py +++ b/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py @@ -4,6 +4,7 @@ from tests.common.helpers.assertions import pytest_assert, pytest_require from tests.common.fixtures.conn_graph_facts import conn_graph_facts,\ fanout_graph_facts +from tests.common.broadcom_data import is_broadcom_device from tests.common.ixia.ixia_fixtures import ixia_api_serv_ip, ixia_api_serv_port,\ ixia_api_serv_user, ixia_api_serv_passwd, ixia_api from tests.common.ixia.ixia_helpers import get_dut_port_id @@ -68,6 +69,14 @@ def run_pfcwd_multi_node_test(api, pattern, ' or '.join(['"{}"'.format(src) for src in patterns]))) pytest_assert(testbed_config is not None, 'Fail to get L2/3 testbed config') + """ + PFC watchdog on Broadcom devices use some approximation techniques to detect + PFC storms, which may cause some fake alerts. Therefore, we skip test cases + whose trigger_pfcwd is False for Broadcom devices. + """ + pytest_require(trigger_pfcwd is True or is_broadcom_device(duthost) is False, + 'Skip trigger_pfcwd=False test cases for Broadcom devices') + num_ports = len(port_config_list) pytest_require(num_ports >= 3, "This test requires at least 3 ports") From d5ed9d6c91d9dc1d24625c1bdc1cab5ff2b4d9db Mon Sep 17 00:00:00 2001 From: Wei Bai Date: Wed, 5 May 2021 08:02:59 +0000 Subject: [PATCH 2/4] Add skip_pfcwd_test function to skip PFC wd test cases --- tests/ixia/pfcwd/files/pfcwd_basic_helper.py | 10 +--------- tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py | 8 -------- tests/ixia/pfcwd/test_pfcwd_a2a.py | 3 +++ tests/ixia/pfcwd/test_pfcwd_basic.py | 14 +++++++++++++- tests/ixia/pfcwd/test_pfcwd_m2o.py | 3 +++ 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/tests/ixia/pfcwd/files/pfcwd_basic_helper.py b/tests/ixia/pfcwd/files/pfcwd_basic_helper.py index b717894c593..62d94ed014b 100644 --- a/tests/ixia/pfcwd/files/pfcwd_basic_helper.py +++ b/tests/ixia/pfcwd/files/pfcwd_basic_helper.py @@ -1,10 +1,9 @@ import time from math import ceil -from tests.common.helpers.assertions import pytest_assert, pytest_require +from tests.common.helpers.assertions import pytest_assert from tests.common.fixtures.conn_graph_facts import conn_graph_facts,\ fanout_graph_facts -from tests.common.broadcom_data import is_broadcom_device from tests.common.ixia.ixia_fixtures import ixia_api_serv_ip, ixia_api_serv_port,\ ixia_api_serv_user, ixia_api_serv_passwd, ixia_api from tests.common.ixia.ixia_helpers import get_dut_port_id @@ -60,13 +59,6 @@ def run_pfcwd_basic_test(api, """ pytest_assert(testbed_config is not None, 'Fail to get L2/3 testbed config') - """ - PFC watchdog on Broadcom devices use some approximation techniques to detect - PFC storms, which may cause some fake alerts. Therefore, we skip test cases - whose trigger_pfcwd is False for Broadcom devices. - """ - pytest_require(trigger_pfcwd is True or is_broadcom_device(duthost) is False, - 'Skip trigger_pfcwd=False test cases for Broadcom devices') start_pfcwd(duthost) enable_packet_aging(duthost) diff --git a/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py b/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py index 0e46887e9ee..6adbaf2aea2 100644 --- a/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py +++ b/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py @@ -4,7 +4,6 @@ from tests.common.helpers.assertions import pytest_assert, pytest_require from tests.common.fixtures.conn_graph_facts import conn_graph_facts,\ fanout_graph_facts -from tests.common.broadcom_data import is_broadcom_device from tests.common.ixia.ixia_fixtures import ixia_api_serv_ip, ixia_api_serv_port,\ ixia_api_serv_user, ixia_api_serv_passwd, ixia_api from tests.common.ixia.ixia_helpers import get_dut_port_id @@ -69,13 +68,6 @@ def run_pfcwd_multi_node_test(api, pattern, ' or '.join(['"{}"'.format(src) for src in patterns]))) pytest_assert(testbed_config is not None, 'Fail to get L2/3 testbed config') - """ - PFC watchdog on Broadcom devices use some approximation techniques to detect - PFC storms, which may cause some fake alerts. Therefore, we skip test cases - whose trigger_pfcwd is False for Broadcom devices. - """ - pytest_require(trigger_pfcwd is True or is_broadcom_device(duthost) is False, - 'Skip trigger_pfcwd=False test cases for Broadcom devices') num_ports = len(port_config_list) pytest_require(num_ports >= 3, "This test requires at least 3 ports") diff --git a/tests/ixia/pfcwd/test_pfcwd_a2a.py b/tests/ixia/pfcwd/test_pfcwd_a2a.py index 34baed6e0c2..d92261be6c0 100644 --- a/tests/ixia/pfcwd/test_pfcwd_a2a.py +++ b/tests/ixia/pfcwd/test_pfcwd_a2a.py @@ -9,6 +9,7 @@ lossless_prio_list, lossy_prio_list from files.pfcwd_multi_node_helper import run_pfcwd_multi_node_test +from files.helper import skip_pfcwd_test pytestmark = [ pytest.mark.topology('tgen') ] @@ -50,6 +51,8 @@ def test_pfcwd_all_to_all(ixia_api, "Priority and port are not mapped to the expected DUT") duthost = duthosts[rand_one_dut_hostname] + skip_pfcwd_test(duthost=duthost, trigger_pfcwd=trigger_pfcwd) + testbed_config, port_config_list = ixia_testbed_config lossless_prio = int(lossless_prio) diff --git a/tests/ixia/pfcwd/test_pfcwd_basic.py b/tests/ixia/pfcwd/test_pfcwd_basic.py index 058ef31241f..db1c794680b 100644 --- a/tests/ixia/pfcwd/test_pfcwd_basic.py +++ b/tests/ixia/pfcwd/test_pfcwd_basic.py @@ -9,7 +9,7 @@ from tests.common.reboot import reboot from tests.common.utilities import wait_until from files.pfcwd_basic_helper import run_pfcwd_basic_test - +from files.helper import skip_pfcwd_test logger = logging.getLogger(__name__) @@ -50,6 +50,8 @@ def test_pfcwd_basic_single_lossless_prio(ixia_api, "Priority and port are not mapped to the expected DUT") duthost = duthosts[rand_one_dut_hostname] + skip_pfcwd_test(duthost=duthost, trigger_pfcwd=trigger_pfcwd) + testbed_config, port_config_list = ixia_testbed_config lossless_prio = int(lossless_prio) @@ -99,6 +101,8 @@ def test_pfcwd_basic_multi_lossless_prio(ixia_api, "Port is not mapped to the expected DUT") duthost = duthosts[rand_one_dut_hostname] + skip_pfcwd_test(duthost=duthost, trigger_pfcwd=trigger_pfcwd) + testbed_config, port_config_list = ixia_testbed_config run_pfcwd_basic_test(api=ixia_api, @@ -153,6 +157,8 @@ def test_pfcwd_basic_single_lossless_prio_reboot(ixia_api, "Priority and port are not mapped to the expected DUT") duthost = duthosts[rand_one_dut_hostname] + skip_pfcwd_test(duthost=duthost, trigger_pfcwd=trigger_pfcwd) + testbed_config, port_config_list = ixia_testbed_config lossless_prio = int(lossless_prio) @@ -214,6 +220,8 @@ def test_pfcwd_basic_multi_lossless_prio_reboot(ixia_api, "Port is not mapped to the expected DUT") duthost = duthosts[rand_one_dut_hostname] + skip_pfcwd_test(duthost=duthost, trigger_pfcwd=trigger_pfcwd) + testbed_config, port_config_list = ixia_testbed_config logger.info("Issuing a {} reboot on the dut {}".format(reboot_type, duthost.hostname)) @@ -272,6 +280,8 @@ def test_pfcwd_basic_single_lossless_prio_service_restart(ixia_api, "Priority and port are not mapped to the expected DUT") duthost = duthosts[rand_one_dut_hostname] + skip_pfcwd_test(duthost=duthost, trigger_pfcwd=trigger_pfcwd) + testbed_config, port_config_list = ixia_testbed_config lossless_prio = int(lossless_prio) @@ -332,6 +342,8 @@ def test_pfcwd_basic_multi_lossless_prio_restart_service(ixia_api, "Port is not mapped to the expected DUT") duthost = duthosts[rand_one_dut_hostname] + skip_pfcwd_test(duthost=duthost, trigger_pfcwd=trigger_pfcwd) + testbed_config, port_config_list = ixia_testbed_config logger.info("Issuing a restart of service {} on the dut {}".format(restart_service, duthost.hostname)) diff --git a/tests/ixia/pfcwd/test_pfcwd_m2o.py b/tests/ixia/pfcwd/test_pfcwd_m2o.py index 0154a2e2080..1b1170900d0 100644 --- a/tests/ixia/pfcwd/test_pfcwd_m2o.py +++ b/tests/ixia/pfcwd/test_pfcwd_m2o.py @@ -9,6 +9,7 @@ lossless_prio_list, lossy_prio_list from files.pfcwd_multi_node_helper import run_pfcwd_multi_node_test +from files.helper import skip_pfcwd_test pytestmark = [ pytest.mark.topology('tgen') ] @@ -50,6 +51,8 @@ def test_pfcwd_many_to_one(ixia_api, "Priority and port are not mapped to the expected DUT") duthost = duthosts[rand_one_dut_hostname] + skip_pfcwd_test(duthost=duthost, trigger_pfcwd=trigger_pfcwd) + testbed_config, port_config_list = ixia_testbed_config lossless_prio = int(lossless_prio) From aaaa055c47b493cdb97bb25df3c1325b9d4ea5c0 Mon Sep 17 00:00:00 2001 From: Wei Bai Date: Wed, 5 May 2021 08:04:47 +0000 Subject: [PATCH 3/4] Remove the empty line --- tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py b/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py index 6adbaf2aea2..eedb70e6bc7 100644 --- a/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py +++ b/tests/ixia/pfcwd/files/pfcwd_multi_node_helper.py @@ -68,7 +68,6 @@ def run_pfcwd_multi_node_test(api, pattern, ' or '.join(['"{}"'.format(src) for src in patterns]))) pytest_assert(testbed_config is not None, 'Fail to get L2/3 testbed config') - num_ports = len(port_config_list) pytest_require(num_ports >= 3, "This test requires at least 3 ports") From 34cd84f1df2f7f0fc7efd3ecd70ce9061668ae9a Mon Sep 17 00:00:00 2001 From: Wei Bai Date: Wed, 5 May 2021 08:07:11 +0000 Subject: [PATCH 4/4] Add skip_pfcwd_test --- tests/ixia/pfcwd/files/helper.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 tests/ixia/pfcwd/files/helper.py diff --git a/tests/ixia/pfcwd/files/helper.py b/tests/ixia/pfcwd/files/helper.py new file mode 100644 index 00000000000..beb0b16499c --- /dev/null +++ b/tests/ixia/pfcwd/files/helper.py @@ -0,0 +1,20 @@ +from tests.common.helpers.assertions import pytest_require +from tests.common.broadcom_data import is_broadcom_device + +def skip_pfcwd_test(duthost, trigger_pfcwd): + """ + Skip PFC watchdog tests that may cause fake alerts + + PFC watchdog on Broadcom devices use some approximation techniques to detect + PFC storms, which may cause some fake alerts. Therefore, we skip test cases + whose trigger_pfcwd is False for Broadcom devices. + + Args: + duthost (obj): device to test + trigger_pfcwd (bool): if PFC watchdog is supposed to trigger + + Returns: + N/A + """ + pytest_require(trigger_pfcwd is True or is_broadcom_device(duthost) is False, + 'Skip trigger_pfcwd=False test cases for Broadcom devices')