Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 31 additions & 5 deletions tests/qos/test_tunnel_qos_remap.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from tests.common.fixtures.duthost_utils import dut_qos_maps_module # noqa F401
from tests.common.fixtures.duthost_utils import separated_dscp_to_tc_map_on_uplink
from tests.common.helpers.assertions import pytest_require, pytest_assert
from tests.common.snappi_tests.qos_fixtures import get_pfcwd_config, reapply_pfcwd
from tests.common.snappi_tests.common_helpers import stop_pfcwd

from tests.common.dualtor.mux_simulator_control import toggle_all_simulator_ports_to_lower_tor,\
toggle_all_simulator_ports_to_rand_selected_tor, toggle_all_simulator_ports_to_rand_unselected_tor # noqa F401
Expand Down Expand Up @@ -65,6 +67,18 @@ def check_running_condition(tbinfo, duthost):
"Only run when tunnel_qos_remap is enabled", True)


@pytest.fixture(scope='module', autouse=True)
def disable_pfcwd(duthosts):
pfcwd_value = {}
for duthost in duthosts:
pfcwd_value[duthost.hostname] = get_pfcwd_config(duthost)
stop_pfcwd(duthost)
yield
for duthost in duthosts:
reapply_pfcwd(duthost, pfcwd_value[duthost.hostname])
return


def _last_port_in_last_lag(lags):
"""
A helper function to get the last LAG member in the last portchannel
Expand Down Expand Up @@ -552,6 +566,7 @@ def test_pfc_watermark_extra_lossless_standby(ptfhost, fanouthosts, rand_selecte
active_tor_mac = rand_unselected_dut.facts['router_mac']
mg_facts = rand_selected_dut.get_extended_minigraph_facts(tbinfo)
ptfadapter.dataplane.flush()
failures = []
for inner_dscp, outer_dscp, prio, queue in TEST_DATA:
wmk_stat_queue = queue
if "cisco-8000" in dut_config["asic_type"]:
Expand Down Expand Up @@ -612,9 +627,14 @@ def test_pfc_watermark_extra_lossless_standby(ptfhost, fanouthosts, rand_selecte
logger.info(("Congested queue watermark on {}|{} is {}, increased by {}," +
"minimum required increase is {}").format(
actual_port_name, wmk_stat_queue, queue_wmk, queue_wmk - base_queue_wmk, required_wmk_inc_bytes))
assert queue_wmk > required_wmk_bytes, \
"Failed to detect congestion due to PFC pause, failed check {} > {}".format(
if queue_wmk <= required_wmk_bytes:
msg = "For inner_dscp, outer_dscp, prio, queue = ({}, {}, {}, {}):\n".format(
inner_dscp, outer_dscp, prio, queue)
msg += " Failed to detect congestion due to PFC pause, failed check {} > {}".format(
queue_wmk, required_wmk_bytes)
logger.info(msg)
failures.append(msg)
assert len(failures) == 0, "Watermark failures were found:\n{}".format("\n".join(failures))


def test_pfc_watermark_extra_lossless_active(ptfhost, fanouthosts, rand_selected_dut, rand_unselected_dut,
Expand Down Expand Up @@ -645,6 +665,7 @@ def test_pfc_watermark_extra_lossless_active(ptfhost, fanouthosts, rand_selected
active_tor_mac = rand_selected_dut.facts['router_mac']
mg_facts = rand_unselected_dut.get_extended_minigraph_facts(tbinfo)
ptfadapter.dataplane.flush()
failures = []
for inner_dscp, outer_dscp, prio, queue in TEST_DATA:
pkt, tunnel_pkt = build_testing_packet(src_ip=DUMMY_IP,
dst_ip=dualtor_meta['target_server_ip'],
Expand Down Expand Up @@ -703,9 +724,14 @@ def test_pfc_watermark_extra_lossless_active(ptfhost, fanouthosts, rand_selected
"minimum required increase is {}").format(
dualtor_meta['selected_port'], queue, queue_wmk,
queue_wmk - base_queue_wmk, required_wmk_inc_bytes))
assert queue_wmk > required_wmk_bytes, \
"Failed to detect congestion due to PFC pause, failed check {} > {}".format(
queue_wmk, base_queue_wmk)
if queue_wmk <= required_wmk_bytes:
msg = "For inner_dscp, outer_dscp, prio, queue = ({}, {}, {}, {}):\n".format(
inner_dscp, outer_dscp, prio, queue)
msg += " Failed to detect congestion due to PFC pause, failed check {} > {}".format(
queue_wmk, required_wmk_bytes)
logger.info(msg)
failures.append(msg)
assert len(failures) == 0, "Watermark failures were found:\n{}".format("\n".join(failures))


@pytest.mark.disable_loganalyzer
Expand Down
2 changes: 2 additions & 0 deletions tests/qos/tunnel_qos_remap_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,8 @@ def stop_pfc_storm(storm_handler):
Stop sending PFC pause frames from fanout switch
"""
storm_handler.stop_storm()
# Wait for PFC pause to stop
time.sleep(2)


def run_ptf_test(ptfhost, test_case='', test_params={}):
Expand Down
Loading