Skip to content

Commit a7470bd

Browse files
Removed hardcoded priorities for background flows and incorporated the changes to pick background priorities from available list of priorities. (sonic-net#19593)
Description of PR Previously, the background priorities are hardcoded. Now the changes are incorporated to randomly pick priorities from available list of background priorities. Each time, it will pick different background priorities so that it can cover all different priorities. Summary: Fixes # (issue) Fixed both helper file and test case to pick priorities on the fly. Type of change Bug fix Testbed and Framework(new/improvement) New Test case Skipped for non-supported platforms [ x] Test case improvement Approach What is the motivation for this PR? To cover all available list of priorities. How did you do it? How did you verify/test it? Tested against a DUT internally signed-off-by: [email protected] Signed-off-by: opcoder0 <[email protected]>
1 parent 8547a3d commit a7470bd

6 files changed

+29
-42
lines changed

tests/snappi_tests/pfc/files/lossless_response_to_external_pause_storms_helper.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -361,23 +361,21 @@ def __gen_data_flow(testbed_config,
361361
elif 'Test Flow 2 -> 0' in flow.name:
362362
eth.pfc_queue.value = flow_prio[1]
363363
else:
364-
if 'Background Flow' in flow.name:
365-
eth.pfc_queue.value = pfcQueueValueDict[1]
366-
elif 'Test Flow 1 -> 0' in flow.name:
364+
# Adding queue values based on flow_priorities for both test and background flows.
365+
if 'Flow 1 -> 0' in flow.name:
367366
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[0]]
368-
elif 'Test Flow 2 -> 0' in flow.name:
367+
elif 'Flow 2 -> 0' in flow.name:
369368
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[1]]
370369

371370
ipv4.src.value = tx_port_config.ip
372371
ipv4.dst.value = gen_data_flow_dest_ip(rx_port_config.ip)
373372
ipv4.priority.choice = ipv4.priority.DSCP
374373

374+
# Background flows have dynamic lossy priorities.
375375
if 'Background Flow 1 -> 0' in flow.name:
376-
ipv4.priority.dscp.phb.values = [
377-
ipv4.priority.dscp.phb.CS2,
378-
]
376+
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[0]]
379377
elif 'Background Flow 2 -> 0' in flow.name:
380-
ipv4.priority.dscp.phb.values = [5]
378+
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[1]]
381379
elif 'Test Flow 1 -> 0' in flow.name:
382380
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[0]]
383381
elif 'Test Flow 2 -> 0' in flow.name:

tests/snappi_tests/pfc/files/lossless_response_to_throttling_pause_storms_helper.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -370,23 +370,19 @@ def __gen_data_flow(testbed_config,
370370
elif 'Test Flow 2 -> 0' in flow.name:
371371
eth.pfc_queue.value = flow_prio[1]
372372
else:
373-
if 'Background Flow' in flow.name:
374-
eth.pfc_queue.value = pfcQueueValueDict[1]
375-
elif 'Test Flow 1 -> 0' in flow.name:
373+
# Adding queue values based on flow_priorities for both test and background flows.
374+
if 'Flow 1 -> 0' in flow.name:
376375
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[0]]
377-
elif 'Test Flow 2 -> 0' in flow.name:
376+
elif 'Flow 2 -> 0' in flow.name:
378377
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[1]]
379378

380379
ipv4.src.value = tx_port_config.ip
381380
ipv4.dst.value = gen_data_flow_dest_ip(rx_port_config.ip)
382381
ipv4.priority.choice = ipv4.priority.DSCP
383382
if 'Background Flow 1 -> 0' in flow.name:
384-
ipv4.priority.dscp.phb.values = [
385-
ipv4.priority.dscp.phb.CS2,
386-
]
383+
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[0]]
387384
elif 'Background Flow 2 -> 0' in flow.name:
388-
ipv4.priority.dscp.phb.value = ipv4.priority.dscp.phb.DEFAULT
389-
ipv4.priority.dscp.phb.value = 5
385+
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[1]]
390386
elif 'Test Flow 1 -> 0' in flow.name:
391387
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[0]]
392388
elif 'Test Flow 2 -> 0' in flow.name:

tests/snappi_tests/pfc/files/m2o_fluctuating_lossless_helper.py

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -354,11 +354,10 @@ def __gen_data_flow(testbed_config,
354354
elif 'Test Flow 2 -> 0' in flow.name:
355355
eth.pfc_queue.value = flow_prio[1]
356356
else:
357-
if 'Background Flow' in flow.name:
358-
eth.pfc_queue.value = pfcQueueValueDict[1]
359-
elif 'Test Flow 1 -> 0' in flow.name:
357+
# Adding queue values based on flow_priorities for both test and background flows.
358+
if 'Flow 1 -> 0' in flow.name:
360359
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[0]]
361-
elif 'Test Flow 2 -> 0' in flow.name:
360+
elif 'Flow 2 -> 0' in flow.name:
362361
eth.pfc_queue.value = pfcQueueValueDict[flow_prio[1]]
363362

364363
global UDP_PORT_START
@@ -373,29 +372,17 @@ def __gen_data_flow(testbed_config,
373372
ipv4.priority.choice = ipv4.priority.DSCP
374373

375374
if '1 Background Flow 1 -> 0' in flow.name:
376-
ipv4.priority.dscp.phb.values = [
377-
ipv4.priority.dscp.phb.CS2,
378-
]
375+
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[0]]
379376
elif '2 Background Flow 2 -> 0' in flow.name:
380-
ipv4.priority.dscp.phb.values = [
381-
ipv4.priority.dscp.phb.DEFAULT,
382-
]
383-
ipv4.priority.dscp.phb.value = 5
384-
elif '3 Background Flow 1 -> 0' in flow.name:
385-
ipv4.priority.dscp.phb.values = [
386-
ipv4.priority.dscp.phb.CS6,
387-
]
377+
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[1]]
378+
if '3 Background Flow 1 -> 0' in flow.name:
379+
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[2]]
388380
elif '4 Background Flow 2 -> 0' in flow.name:
389-
ipv4.priority.dscp.phb.values = [
390-
ipv4.priority.dscp.phb.CS1,
391-
]
381+
ipv4.priority.dscp.phb.values = prio_dscp_map[flow_prio[3]]
392382
elif 'Test Flow 1 -> 0' in flow.name:
393383
ipv4.priority.dscp.phb.values = [flow_prio[0]]
394384
elif 'Test Flow 2 -> 0' in flow.name:
395-
ipv4.priority.dscp.phb.values = [
396-
ipv4.priority.dscp.phb.CS1,
397-
]
398-
ipv4.priority.dscp.phb.value = flow_prio[1]
385+
ipv4.priority.dscp.phb.values = [flow_prio[1]]
399386

400387
ipv4.priority.dscp.ecn.value = ipv4.priority.dscp.ecn.CAPABLE_TRANSPORT_1
401388
flow.size.fixed = data_pkt_size

tests/snappi_tests/pfc/test_lossless_response_to_external_pause_storms.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
import logging
3+
import random
34
from tests.common.fixtures.conn_graph_facts import conn_graph_facts, fanout_graph_facts, \
45
fanout_graph_facts_multidut # noqa: F401
56
from tests.common.snappi_tests.snappi_fixtures import snappi_api_serv_ip, snappi_api_serv_port, \
@@ -67,7 +68,8 @@ def test_lossless_response_to_external_pause_storms_test(snappi_api,
6768
all_prio_list = prio_dscp_map.keys()
6869
test_prio_list = lossless_prio_list
6970
pause_prio_list = test_prio_list
70-
bg_prio_list = [x for x in all_prio_list if x not in pause_prio_list]
71+
bg_prio_list = random.sample([x for x in all_prio_list if x not in pause_prio_list], 2)
72+
logger.info('Selected two random lossy background priorities:{}'.format(bg_prio_list))
7173

7274
snappi_extra_params = SnappiTestParams()
7375
snappi_extra_params.multi_dut_params.multi_dut_ports = snappi_ports

tests/snappi_tests/pfc/test_lossless_response_to_throttling_pause_storms.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
import logging
3+
import random
34
from tests.common.fixtures.conn_graph_facts import conn_graph_facts, fanout_graph_facts, \
45
fanout_graph_facts_multidut # noqa: F401
56
from tests.common.snappi_tests.snappi_fixtures import snappi_api_serv_ip, snappi_api_serv_port, \
@@ -68,7 +69,8 @@ def test_lossless_response_to_throttling_pause_storms(snappi_api,
6869
all_prio_list = prio_dscp_map.keys()
6970
test_prio_list = lossless_prio_list
7071
pause_prio_list = test_prio_list
71-
bg_prio_list = [x for x in all_prio_list if x not in pause_prio_list]
72+
bg_prio_list = random.sample([x for x in all_prio_list if x not in pause_prio_list], 2)
73+
logger.info('Selected two random lossy background priorities:{}'.format(bg_prio_list))
7274

7375
snappi_extra_params = SnappiTestParams()
7476
snappi_extra_params.multi_dut_params.multi_dut_ports = snappi_ports

tests/snappi_tests/pfc/test_m2o_fluctuating_lossless.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pytest
22
import logging
3+
import random
34
from tests.common.fixtures.conn_graph_facts import conn_graph_facts, fanout_graph_facts, \
45
fanout_graph_facts_multidut # noqa: F401
56
from tests.common.snappi_tests.snappi_fixtures import snappi_api_serv_ip, snappi_api_serv_port, \
@@ -65,7 +66,8 @@ def test_m2o_fluctuating_lossless(snappi_api, # noqa: F811
6566
all_prio_list = prio_dscp_map.keys()
6667
test_prio_list = lossless_prio_list
6768
pause_prio_list = test_prio_list
68-
bg_prio_list = [x for x in all_prio_list if x not in pause_prio_list]
69+
bg_prio_list = random.sample([x for x in all_prio_list if x not in pause_prio_list], 4)
70+
logger.info('Selected two random lossy background priorities:{}'.format(bg_prio_list))
6971

7072
snappi_extra_params = SnappiTestParams()
7173
snappi_extra_params.multi_dut_params.multi_dut_ports = snappi_ports

0 commit comments

Comments
 (0)