Skip to content

Commit 7e5a103

Browse files
Support multi-chip in packet trimming tests with refactor (sonic-net#21318)
* Support multi-chip in packet trimming tests
1 parent 910cb16 commit 7e5a103

7 files changed

Lines changed: 218 additions & 144 deletions

tests/packet_trimming/base_packet_trimming.py

Lines changed: 43 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
from tests.common.utilities import wait_until, configure_packet_aging
77
from tests.common.mellanox_data import is_mellanox_device
88
from tests.packet_trimming.constants import (
9-
TRIM_SIZE, DEFAULT_PACKET_SIZE, DEFAULT_DSCP, MIN_PACKET_SIZE, TRIM_SIZE_MAX, CONFIG_TOGGLE_COUNT,
10-
JUMBO_PACKET_SIZE, PORT_TOGGLE_COUNT, COUNTER_DSCP, TRIM_QUEUE)
9+
DEFAULT_PACKET_SIZE, DEFAULT_DSCP, MIN_PACKET_SIZE, CONFIG_TOGGLE_COUNT,
10+
JUMBO_PACKET_SIZE, PORT_TOGGLE_COUNT)
11+
from tests.packet_trimming.packet_trimming_config import PacketTrimmingConfig
1112
from tests.packet_trimming.packet_trimming_helper import (
1213
configure_trimming_action, configure_trimming_acl, verify_srv6_packet_with_trimming, cleanup_trimming_acl,
1314
verify_trimmed_packet, reboot_dut, check_connected_route_ready, get_switch_trim_counters_json,
@@ -24,38 +25,38 @@ def configure_trimming_global_by_mode(self, duthost):
2425
def get_srv6_recv_pkt_dscp(self):
2526
raise NotImplementedError
2627

27-
def get_verify_trimmed_packet_kwargs(self, test_params):
28+
def get_verify_trimmed_packet_kwargs(self, duthost, ptfadapter, test_params):
2829
"""
2930
Get kwargs for verify_trimmed_packet
3031
"""
3132
base_kwargs = dict(
32-
duthost=test_params.get('duthost'),
33-
ptfadapter=test_params.get('ptfadapter'),
33+
duthost=duthost,
34+
ptfadapter=ptfadapter,
3435
ingress_port=test_params['ingress_port'],
3536
egress_ports=test_params['egress_ports'],
3637
block_queue=test_params['block_queue'],
3738
send_pkt_size=DEFAULT_PACKET_SIZE,
3839
send_pkt_dscp=DEFAULT_DSCP,
39-
recv_pkt_size=TRIM_SIZE,
40+
recv_pkt_size=PacketTrimmingConfig.get_trim_size(duthost),
4041
expect_packets=True
4142
)
4243
base_kwargs.update(self.get_extra_trimmed_packet_kwargs())
4344
logger.info(f"Base kwargs: {base_kwargs}")
4445
return base_kwargs
4546

46-
def get_verify_trimmed_counter_packet_kwargs(self, trim_counter_params):
47+
def get_verify_trimmed_counter_packet_kwargs(self, duthost, ptfadapter, trim_counter_params):
4748
"""
4849
Get kwargs for verify_trimmed_packet
4950
"""
5051
base_kwargs = dict(
51-
duthost=trim_counter_params.get('duthost'),
52-
ptfadapter=trim_counter_params.get('ptfadapter'),
52+
duthost=duthost,
53+
ptfadapter=ptfadapter,
5354
ingress_port=trim_counter_params['ingress_port'],
5455
egress_ports=trim_counter_params['egress_ports'],
5556
block_queue=trim_counter_params['block_queue'],
5657
send_pkt_size=DEFAULT_PACKET_SIZE,
57-
send_pkt_dscp=COUNTER_DSCP,
58-
recv_pkt_size=TRIM_SIZE,
58+
send_pkt_dscp=PacketTrimmingConfig.get_counter_dscp(duthost),
59+
recv_pkt_size=PacketTrimmingConfig.get_trim_size(duthost),
5960
expect_packets=True
6061
)
6162
base_kwargs.update(self.get_extra_trimmed_packet_kwargs())
@@ -84,20 +85,18 @@ def test_packet_size_after_trimming(self, duthost, ptfadapter, test_params):
8485
configure_trimming_action(duthost, test_params['trim_buffer_profiles'][buffer_profile], "on")
8586

8687
with allure.step("Verify trimming packet"):
87-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
88-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
88+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
8989
verify_trimmed_packet(**kwargs)
9090

91-
with allure.step(f"Configure trimming in {self.trimming_mode} mode and update trim size to {TRIM_SIZE_MAX}"):
92-
self.configure_trimming_global_by_mode(duthost, TRIM_SIZE_MAX)
91+
max_trim_size = PacketTrimmingConfig.get_max_trim_size(duthost)
92+
with allure.step(f"Configure trimming in {self.trimming_mode} mode and update trim size to {max_trim_size}"):
93+
self.configure_trimming_global_by_mode(duthost, max_trim_size)
9394

9495
with allure.step("Send packets and verify trimming works after config update"):
95-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
96+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
9697
kwargs.update({
97-
'duthost': duthost,
98-
'ptfadapter': ptfadapter,
9998
'send_pkt_size': JUMBO_PACKET_SIZE,
100-
'recv_pkt_size': TRIM_SIZE_MAX
99+
'recv_pkt_size': max_trim_size
101100
})
102101
verify_trimmed_packet(**kwargs)
103102

@@ -118,16 +117,13 @@ def test_dscp_remapping_after_trimming(self, duthost, ptfadapter, test_params):
118117
configure_trimming_action(duthost, test_params['trim_buffer_profiles'][buffer_profile], "on")
119118

120119
with allure.step("Verify trimming packet"):
121-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
122-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
120+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
123121
verify_trimmed_packet(**kwargs)
124122

125123
# When packet size is less than trimming size, the packet is not trimmed, but the DSCP value should be updated
126124
with allure.step("Verify trim packet when packets size less than trimming size"):
127-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
125+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
128126
kwargs.update({
129-
'duthost': duthost,
130-
'ptfadapter': ptfadapter,
131127
'send_pkt_size': MIN_PACKET_SIZE,
132128
'recv_pkt_size': MIN_PACKET_SIZE
133129
})
@@ -149,28 +145,22 @@ def test_acl_action_with_trimming(self, duthost, ptfadapter, test_params, clean_
149145
configure_trimming_action(duthost, test_params['trim_buffer_profiles'][buffer_profile], "on")
150146

151147
with allure.step("Verify trimming packet"):
152-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
153-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
148+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
154149
verify_trimmed_packet(**kwargs)
155150

156151
with allure.step("Config ACL rule with DISABLE_TRIM_ACTION action"):
157152
configure_trimming_acl(duthost, test_params['ingress_port']['name'])
158153

159154
with allure.step("Verify packets are dropped directly"):
160-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
161-
kwargs.update({
162-
'duthost': duthost,
163-
'ptfadapter': ptfadapter,
164-
'expect_packets': False
165-
})
155+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
156+
kwargs.update({'expect_packets': False})
166157
verify_trimmed_packet(**kwargs)
167158

168159
with allure.step("Remove ACL table"):
169160
cleanup_trimming_acl(duthost)
170161

171162
with allure.step("Send packets again and verify trimmed packets"):
172-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
173-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
163+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
174164
verify_trimmed_packet(**kwargs)
175165

176166
def test_trimming_with_srv6(self, duthost, ptfadapter, setup_srv6, test_params):
@@ -198,7 +188,7 @@ def test_trimming_with_srv6(self, duthost, ptfadapter, setup_srv6, test_params):
198188
block_queue=test_params['block_queue'],
199189
send_pkt_size=DEFAULT_PACKET_SIZE,
200190
send_pkt_dscp=DEFAULT_DSCP,
201-
recv_pkt_size=TRIM_SIZE,
191+
recv_pkt_size=PacketTrimmingConfig.get_trim_size(duthost),
202192
recv_pkt_dscp=recv_pkt_dscp
203193
)
204194

@@ -216,8 +206,7 @@ def test_stability_during_feature_toggles(self, duthost, ptfadapter, test_params
216206

217207
with allure.step(f"Config and verify trimming in {self.trimming_mode} mode"):
218208
self.configure_trimming_global_by_mode(duthost)
219-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
220-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
209+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
221210
verify_trimmed_packet(**kwargs)
222211

223212
with allure.step("Disable trimming"):
@@ -226,12 +215,8 @@ def test_stability_during_feature_toggles(self, duthost, ptfadapter, test_params
226215

227216
with allure.step(f"Verify no trimming action in {self.trimming_mode} mode when disable trimming"):
228217
self.configure_trimming_global_by_mode(duthost)
229-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
230-
kwargs.update({
231-
'duthost': duthost,
232-
'ptfadapter': ptfadapter,
233-
'expect_packets': False
234-
})
218+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
219+
kwargs.update({'expect_packets': False})
235220
verify_trimmed_packet(**kwargs)
236221

237222
with allure.step("Enable trimming again"):
@@ -240,8 +225,7 @@ def test_stability_during_feature_toggles(self, duthost, ptfadapter, test_params
240225

241226
with allure.step(f"Verify trimming in {self.trimming_mode} mode after enable trimming"):
242227
self.configure_trimming_global_by_mode(duthost)
243-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
244-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
228+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
245229
verify_trimmed_packet(**kwargs)
246230

247231
with allure.step("Trimming config toggles"):
@@ -253,8 +237,7 @@ def test_stability_during_feature_toggles(self, duthost, ptfadapter, test_params
253237

254238
with allure.step(f"Verify trimming still works after feature toggles in {self.trimming_mode} mode"):
255239
self.configure_trimming_global_by_mode(duthost)
256-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
257-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
240+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
258241
verify_trimmed_packet(**kwargs)
259242

260243
def test_trimming_during_port_admin_toggle(self, duthost, ptfadapter, test_params):
@@ -273,8 +256,7 @@ def test_trimming_during_port_admin_toggle(self, duthost, ptfadapter, test_param
273256
configure_trimming_action(duthost, test_params['trim_buffer_profiles'][buffer_profile], "on")
274257

275258
with allure.step("Verify trimming packet"):
276-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
277-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
259+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
278260
verify_trimmed_packet(**kwargs)
279261

280262
with allure.step("Ports admin status toggles"):
@@ -292,8 +274,7 @@ def test_trimming_during_port_admin_toggle(self, duthost, ptfadapter, test_param
292274
"Connected route is not ready")
293275

294276
with allure.step("Verify trimming still works after admin toggles"):
295-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
296-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
277+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
297278
verify_trimmed_packet(**kwargs)
298279

299280
with allure.step("Verify packet trimming counter"):
@@ -317,8 +298,7 @@ def test_trimming_with_reload_and_reboot(self, duthost, ptfadapter, test_params,
317298
configure_trimming_action(duthost, test_params['trim_buffer_profiles'][buffer_profile], "on")
318299

319300
with allure.step("Verify trimming packet"):
320-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
321-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
301+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
322302
verify_trimmed_packet(**kwargs)
323303

324304
with allure.step("Randomly choose one action from reload/cold reboot"):
@@ -347,8 +327,7 @@ def test_trimming_with_reload_and_reboot(self, duthost, ptfadapter, test_params,
347327
configure_packet_aging(duthost, disabled=True)
348328

349329
with allure.step(f"Verify trimming function in {self.trimming_mode} mode after reload/cold reboot"):
350-
kwargs = self.get_verify_trimmed_packet_kwargs({**test_params})
351-
kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
330+
kwargs = self.get_verify_trimmed_packet_kwargs(duthost, ptfadapter, {**test_params})
352331
verify_trimmed_packet(**kwargs)
353332

354333
with allure.step("Verify packet trimming counter"):
@@ -372,8 +351,7 @@ def test_trimming_counters(self, duthost, ptfadapter, test_params, trim_counter_
372351
# Packets are trimmed on two queues, verify trimming counters in queue and port level
373352
with allure.step("Verify trimming counters on two queues"):
374353
# Trigger trimmed packets on queue0
375-
counter_kwargs = self.get_verify_trimmed_counter_packet_kwargs({**trim_counter_params})
376-
counter_kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter})
354+
counter_kwargs = self.get_verify_trimmed_counter_packet_kwargs(duthost, ptfadapter, {**trim_counter_params})
377355
verify_trimmed_packet(**counter_kwargs)
378356

379357
# Verify the consistency of the trim counter on the queue and the port level
@@ -399,18 +377,21 @@ def test_trimming_counters(self, duthost, ptfadapter, test_params, trim_counter_
399377
"Trim sent counter on switch level is not equal to the sum of trim sent counter on port "
400378
"level")
401379

380+
trim_queue = PacketTrimmingConfig.get_trim_queue(duthost)
381+
402382
with allure.step("Verify TrimDrop counters on switch level"):
403383
original_schedulers = {}
404384
try:
405385
# Block the trimmed queue
406386
for port in trim_counter_params['egress_ports']:
407387
for dut_member in port['dut_members']:
408-
original_scheduler = disable_egress_data_plane(duthost, dut_member, TRIM_QUEUE)
388+
original_scheduler = disable_egress_data_plane(duthost, dut_member, trim_queue)
409389
original_schedulers[dut_member] = original_scheduler
410390

411391
# Trigger trimmed packets on queue6
412-
counter_kwargs = self.get_verify_trimmed_counter_packet_kwargs({**trim_counter_params})
413-
counter_kwargs.update({'duthost': duthost, 'ptfadapter': ptfadapter, 'expect_packets': False})
392+
counter_kwargs = self.get_verify_trimmed_counter_packet_kwargs(duthost, ptfadapter,
393+
{**trim_counter_params})
394+
counter_kwargs.update({'expect_packets': False})
414395
verify_trimmed_packet(**counter_kwargs)
415396

416397
# Get the TrimDrop counters on switch level
@@ -423,10 +404,10 @@ def test_trimming_counters(self, duthost, ptfadapter, test_params, trim_counter_
423404
for port in trim_counter_params['egress_ports']:
424405
for dut_member in port['dut_members']:
425406
original_scheduler = original_schedulers.get(dut_member)
426-
enable_egress_data_plane(duthost, dut_member, TRIM_QUEUE, original_scheduler)
407+
enable_egress_data_plane(duthost, dut_member, trim_queue, original_scheduler)
427408

428409
with allure.step("Verify trimming counter when trimming feature toggles"):
429-
trim_queue = 'UC'+str(TRIM_QUEUE)
410+
trim_queue = 'UC'+str(trim_queue)
430411

431412
# Get queue level and port level counter when trimming is enabled
432413
port = test_params['egress_ports'][0]['dut_members'][0]

tests/packet_trimming/conftest.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
from tests.common.helpers.srv6_helper import create_srv6_locator, del_srv6_locator, create_srv6_sid, del_srv6_sid
1010
from tests.packet_trimming.constants import (
1111
SERVICE_PORT, DEFAULT_DSCP, SRV6_TUNNEL_MODE, SRV6_MY_LOCATOR_LIST, SRV6_MY_SID_LIST,
12-
COUNTER_DSCP, COUNTER_TYPE)
12+
COUNTER_TYPE)
13+
from tests.packet_trimming.packet_trimming_config import PacketTrimmingConfig
1314
from tests.packet_trimming.packet_trimming_helper import (
1415
delete_blocking_scheduler, check_trimming_capability, prepare_service_port, get_interface_peer_addresses,
1516
configure_tc_to_dscp_map, set_buffer_profiles_for_block_and_trim_queues, create_blocking_scheduler,
@@ -135,7 +136,8 @@ def test_params(duthost, mg_facts, dut_qos_maps_module, downstream_links, upstre
135136

136137
@pytest.fixture(scope="module")
137138
def trim_counter_params(duthost, test_params, dut_qos_maps_module):
138-
counter_queue = get_queue_id_by_dscp(COUNTER_DSCP, test_params['ingress_port']['name'], dut_qos_maps_module)
139+
counter_dscp = PacketTrimmingConfig.get_counter_dscp(duthost)
140+
counter_queue = get_queue_id_by_dscp(counter_dscp, test_params['ingress_port']['name'], dut_qos_maps_module)
139141
counter_param = copy.deepcopy(test_params)
140142
counter_param['block_queue'] = counter_queue
141143
counter_param['trim_buffer_profiles'] = {

tests/packet_trimming/constants.py

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,4 @@
1-
# Default values for trimming configuration
2-
TRIM_SIZE = 256
3-
TRIM_DSCP = 48
4-
TRIM_QUEUE = 6
5-
TRIM_SIZE_MAX = 4084
6-
7-
VALID_TRIMMING_CONFIGS_SYM = [
8-
(300, 32, 5), # Valid values
9-
(256, 0, 0), # Min Boundary values
10-
(4084, 63, 7) # Max Boundary values
11-
]
12-
13-
INVALID_TRIMMING_CONFIGS_SYM = [
14-
(1.1, 32, 5), # Invalid size value
15-
(256, -1, 5), # Invalid dscp value
16-
(256, 63, -3.0) # Invalid queue value
17-
]
18-
19-
VALID_TRIMMING_CONFIGS_ASYM = [
20-
(300, 'from-tc', 3, 5), # Valid values
21-
(256, 'from-tc', 0, 0), # Min Boundary values
22-
(4084, 'from-tc', 6, 14) # Max Boundary values
23-
]
24-
25-
INVALID_TRIMMING_CONFIGS_ASYM = [
26-
(1.1, 'from-tc', 3, 5), # Invalid size value
27-
(256, 'test', 3, 5), # Invalid dscp value
28-
(256, 'from-tc', -3.0, 5), # Invalid queue value
29-
(300, 'from-tc', 3, 256) # Invalid tc value
30-
]
1+
from tests.packet_trimming.packet_trimming_config import PacketTrimmingConfig
312

323
# ACL configuration constants
334
ACL_TABLE_TYPE_NAME = "TRIMMING_L3"
@@ -63,7 +34,6 @@
6334
STATIC_THRESHOLD_MULTIPLIER = 1.5 # Multiplier to ensure the buffer can be fully exhausted
6435

6536
# Asymmetric DSCP constants
66-
ASYM_TC = TRIM_QUEUE
6737
ASYM_PORT_1_DSCP = 10
6838
ASYM_PORT_2_DSCP = 20
6939

@@ -115,7 +85,7 @@
11585
'dst_ipv6': '2001:1000:0100:0200::',
11686
'exp_dst_ipv6': '2001:1000:0200::',
11787
'exp_inner_dscp_pipe': None,
118-
'exp_outer_dscp_uniform': TRIM_DSCP << 2,
88+
'exp_outer_dscp_uniform': PacketTrimmingConfig.DSCP << 2,
11989
'exp_srh_seg_left': None,
12090
'inner_pkt_ver': '4',
12191
'exp_process_result': 'forward',
@@ -133,7 +103,7 @@
133103
'dst_ipv6': '2001:3000:0500::',
134104
'exp_dst_ipv6': '2001:3000:0500:0600::',
135105
'exp_inner_dscp_pipe': None,
136-
'exp_outer_dscp_uniform': TRIM_DSCP << 2,
106+
'exp_outer_dscp_uniform': PacketTrimmingConfig.DSCP << 2,
137107
'exp_srh_seg_left': 0,
138108
'inner_pkt_ver': '4',
139109
'exp_process_result': 'forward'
@@ -173,7 +143,6 @@
173143
PORT_INTERVAL = 100
174144
QUEUE_INTERVAL = 100
175145

176-
COUNTER_DSCP = 0
177146
COUNTER_TYPE = [
178147
("switch", "SWITCH_STAT", SWITCH_INTERVAL),
179148
("port", "PORT_STAT", PORT_INTERVAL),

0 commit comments

Comments
 (0)