diff --git a/tests/pfcwd/conftest.py b/tests/pfcwd/conftest.py index 1d8ed9d936b..49e71bb9258 100644 --- a/tests/pfcwd/conftest.py +++ b/tests/pfcwd/conftest.py @@ -4,6 +4,7 @@ from tests.common.fixtures.conn_graph_facts import conn_graph_facts from tests.common.fixtures.ptfhost_utils import copy_ptftests_directory # lgtm[py/unused-import] from tests.common.fixtures.ptfhost_utils import change_mac_addresses # lgtm[py/unused-import] +from tests.common.mellanox_data import is_mellanox_device as isMellanoxDevice from .files.pfcwd_helper import TrafficPorts, set_pfc_timers, select_test_ports logger = logging.getLogger(__name__) @@ -27,6 +28,22 @@ def pytest_addoption(parser): parser.addoption('--fake-storm', action='store', type=bool, default=True, help='Fake storm for most ports instead of using pfc gen') +@pytest.fixture(scope="module") +def fake_storm(request, duthosts, rand_one_dut_hostname): + """ + Enable/disable fake storm based on platform and input parameters + + Args: + request: pytest request object + duthosts: AnsibleHost instance for multi DUT + rand_one_dut_hostname: hostname of DUT + + Returns: + fake_storm: False/True + """ + duthost = duthosts[rand_one_dut_hostname] + return request.config.getoption('--fake-storm') if not isMellanoxDevice(duthost) else False + @pytest.fixture(scope="module") def setup_pfc_test(duthosts, rand_one_dut_hostname, ptfhost, conn_graph_facts, tbinfo): """ diff --git a/tests/pfcwd/test_pfcwd_function.py b/tests/pfcwd/test_pfcwd_function.py index 58dd34809b5..244b1468c89 100644 --- a/tests/pfcwd/test_pfcwd_function.py +++ b/tests/pfcwd/test_pfcwd_function.py @@ -499,12 +499,13 @@ def run_test(self, dut, port, action): logger.info("--- Verify PFCwd counters for port {} ---".format(port)) self.stats.verify_pkt_cnts(self.pfc_wd['port_type'], self.pfc_wd['test_pkt_count']) - def test_pfcwd_actions(self, request, setup_pfc_test, fanout_graph_facts, ptfhost, duthosts, rand_one_dut_hostname, fanouthosts): + def test_pfcwd_actions(self, request, fake_storm, setup_pfc_test, fanout_graph_facts, ptfhost, duthosts, rand_one_dut_hostname, fanouthosts): """ PFCwd functional test Args: request(object) : pytest request object + fake_storm(fixture) : Module scoped fixture for enable/disable fake storm setup_pfc_test(fixture) : Module scoped autouse fixture for PFCwd fanout_graph_facts(fixture) : fanout graph info ptfhost(AnsibleHost) : ptf host instance @@ -522,10 +523,10 @@ def test_pfcwd_actions(self, request, setup_pfc_test, fanout_graph_facts, ptfhos self.neighbors = setup_info['neighbors'] dut_facts = self.dut.facts self.peer_dev_list = dict() - self.fake_storm = request.config.getoption("--fake-storm") + self.fake_storm = fake_storm + self.storm_hndle = None for idx, port in enumerate(self.ports): - self.storm_hndle = None logger.info("") logger.info("--- Testing various Pfcwd actions on {} ---".format(port)) self.setup_test_params(port, setup_info['vlan'], init=not idx) diff --git a/tests/pfcwd/test_pfcwd_warm_reboot.py b/tests/pfcwd/test_pfcwd_warm_reboot.py index 6410e171a1a..22f65c675d9 100644 --- a/tests/pfcwd/test_pfcwd_warm_reboot.py +++ b/tests/pfcwd/test_pfcwd_warm_reboot.py @@ -430,12 +430,13 @@ def stop_all_storm(self): logger.info("--- Disabling fake storm on port {} queue {}".format(port, queue)) PfcCmd.set_storm_status(self.dut, self.oid_map[(port, queue)], "disabled") - def pfcwd_wb_helper(self, request, testcase_actions, setup_pfc_test, fanout_graph_facts, ptfhost, + def pfcwd_wb_helper(self, fake_storm, testcase_actions, setup_pfc_test, fanout_graph_facts, ptfhost, duthost, localhost, fanouthosts): """ Helper method that initializes the vars and starts the test execution Args: + fake_storm(bool): if fake storm is enabled or disabled testcase_actions(list): list of actions that the test will go through setup_pfc_test(fixture): module scoped autouse fixture fanout_graph_facts(fixture): fanout info @@ -460,7 +461,7 @@ def pfcwd_wb_helper(self, request, testcase_actions, setup_pfc_test, fanout_grap storm_deferred = 0 storm_restored = 0 self.max_wait = 0 - self.fake_storm = request.config.getoption("--fake-storm") + self.fake_storm = fake_storm self.oid_map = dict() self.storm_threads = [] @@ -519,11 +520,12 @@ def testcase_action(self, request): """ yield request.param - def test_pfcwd_wb(self, request, testcase_action, setup_pfc_test, fanout_graph_facts, ptfhost, duthosts, rand_one_dut_hostname, localhost, fanouthosts): + def test_pfcwd_wb(self, fake_storm, testcase_action, setup_pfc_test, fanout_graph_facts, ptfhost, duthosts, rand_one_dut_hostname, localhost, fanouthosts): """ Tests PFCwd warm reboot with various testcase actions Args: + fake_storm(fixture): fake storm status testcase_action(fixture): testcase to execute (values: 'no_storm', 'storm', 'async_storm') 'no_storm' : PFCwd storm detection/restore before and after warm reboot @@ -543,5 +545,5 @@ def test_pfcwd_wb(self, request, testcase_action, setup_pfc_test, fanout_graph_f """ duthost = duthosts[rand_one_dut_hostname] logger.info("--- {} ---".format(TESTCASE_INFO[testcase_action]['desc'])) - self.pfcwd_wb_helper(request, TESTCASE_INFO[testcase_action]['test_sequence'], setup_pfc_test, + self.pfcwd_wb_helper(fake_storm, TESTCASE_INFO[testcase_action]['test_sequence'], setup_pfc_test, fanout_graph_facts, ptfhost, duthost, localhost, fanouthosts)