Skip to content

Commit f17471c

Browse files
authored
Qos SAI test restructure (#1682)
* Qos SAI test restructure Signed-off-by: Neetha John <nejo@microsoft.com>
1 parent 87f3a23 commit f17471c

File tree

4 files changed

+440
-1013
lines changed

4 files changed

+440
-1013
lines changed

ansible/group_vars/sonic/vars

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ sonic_version: "v2"
44

55
broadcom_hwskus: [ "Force10-S6000", "Accton-AS7712-32X", "Celestica-DX010-C32", "Seastone-DX010", "Celestica-E1031-T48S4"]
66

7+
broadcom_td2_hwskus: ['Force10-S6000', 'Force10-S6000-Q24S32', 'Arista-7050-QX32', 'Arista-7050-QX-32S']
8+
broadcom_th_hwskus: ['Force10-S6100', 'Arista-7060CX-32S-C32', 'Arista-7060CX-32S-C32-T1', 'Arista-7060CX-32S-D48C8', 'Celestica-DX010-C32', "Seastone-DX010" ]
9+
broadcom_th2_hwskus: ['Arista-7260CX3-D108C8', 'Arista-7260CX3-C64', 'Arista-7260CX3-Q64']
10+
711
mellanox_spc1_hwskus: [ 'ACS-MSN2700', 'ACS-MSN2740', 'ACS-MSN2100', 'ACS-MSN2410', 'ACS-MSN2010', 'Mellanox-SN2700', 'Mellanox-SN2700-D48C8' ]
812
mellanox_spc2_hwskus: [ 'ACS-MSN3700', 'ACS-MSN3700C', 'ACS-MSN3800', 'Mellanox-SN3800-D112C8' ]
913
mellanox_spc3_hwskus: [ 'ACS-MSN4700' ]

ansible/roles/test/tasks/qos_get_ports.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,10 @@
143143
target_pg: '3-4'
144144
target_buffer_profile_type: 'ingress lossless'
145145

146+
- name: Set lossless buffer profile
147+
set_fact:
148+
lossless_buffer_profile: "{{ buffer_profile }}"
149+
146150
- name: Set lossless MAX buffer size
147151
set_fact:
148152
lossless_buffer_max_size: "{{buffer_headroom.stdout|int}}"

ansible/roles/test/tasks/qos_sai.yml

Lines changed: 83 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,36 @@
2222
minigraph_facts: host={{inventory_hostname}}
2323
become: no
2424

25+
- name: Get ports info.
26+
include_tasks: roles/test/tasks/qos_get_ports.yml
27+
28+
- name: Check if lossless buffer profile is derived
29+
fail: msg="Lossless Buffer profile could not be retreived"
30+
when: lossless_buffer_profile is not defined or minigraph_hwsku is not defined
31+
32+
- set_fact:
33+
defined_asic_list: ['td2', 'th', 'th2', 'spc1', 'spc2', 'spc3']
34+
speed_cablelen: "{{ lossless_buffer_profile }}"
35+
36+
- set_fact: speed_cablelen="{{speed_cablelen | regex_replace('BUFFER_PROFILE\|pg_lossless_(.*)_profile', '\\1')}}"
37+
38+
- name: Get asic type
39+
set_fact: asic_type="{{ item }}"
40+
when:
41+
- hostvars[inventory_hostname][sonic_asic_type + '_' + item + '_hwskus'] is defined
42+
- minigraph_hwsku in hostvars[inventory_hostname][sonic_asic_type + '_' + item + '_hwskus']
43+
with_items: "{{ defined_asic_list }}"
44+
45+
- debug: msg="asic type is {{ asic_type }}, portspeed_cablelen is {{ speed_cablelen }}"
46+
2547
- name: check if the device has configured qos parameters
2648
fail: msg="device doesn't have configured qos parameters"
27-
when: minigraph_hwsku is not defined or qos_params[minigraph_hwsku] is not defined
49+
when: qos_params[asic_type] is not defined or qos_params[asic_type][speed_cablelen] is not defined
2850

2951
- name: set qos parameters for the device
30-
set_fact: qp={{qos_params[minigraph_hwsku]}}
52+
set_fact:
53+
qp: "{{qos_params[asic_type]}}"
54+
qp_sc: "{{qos_params[asic_type][speed_cablelen]}}"
3155

3256
- name: Ensure LLDP Daemon stopped
3357
become: yes
@@ -52,14 +76,15 @@
5276

5377
- meta: flush_handlers
5478

55-
- block:
56-
- name: Deploy script to DUT/syncd
57-
copy: src=roles/test/files/mlnx/packets_aging.py dest=/root/packets_aging.py
79+
- name: Deploy script to DUT/syncd
80+
copy: src=roles/test/files/mlnx/packets_aging.py dest=/root/packets_aging.py
81+
delegate_to: "{{ ansible_host }}_syncd"
82+
when: minigraph_hwsku is defined and minigraph_hwsku in mellanox_hwskus
5883

59-
- name: Disable Mellanox packet aging
60-
shell: python /root/packets_aging.py disable
61-
register: result
62-
failed_when: result.stderr != ''
84+
- name: Disable Mellanox packet aging
85+
shell: python /root/packets_aging.py disable
86+
register: result
87+
failed_when: result.stderr != ''
6388
delegate_to: "{{ ansible_host }}_syncd"
6489
when: minigraph_hwsku is defined and minigraph_hwsku in mellanox_hwskus
6590

@@ -83,9 +108,6 @@
83108
- port_map_file='/root/{{ptf_portmap | basename}}'
84109
- sonic_asic_type='{{sonic_asic_type}}'
85110

86-
- name: Get ports info.
87-
include_tasks: roles/test/tasks/qos_get_ports.yml
88-
89111
# Unpause all paused port
90112
- include_tasks: qos_sai_ptf.yml
91113
vars:
@@ -135,39 +157,39 @@
135157
# XOFF limit
136158
- include_tasks: qos_sai_ptf.yml
137159
vars:
138-
test_name: xoff limit ptf test dscp = {{qp.xoff_1.dscp}}, ecn = {{qp.xoff_1.ecn}}
160+
test_name: xoff limit ptf test dscp = {{qp_sc.xoff_1.dscp}}, ecn = {{qp_sc.xoff_1.ecn}}
139161
test_path: sai_qos_tests.PFCtest
140162
test_params:
141-
- dscp='{{qp.xoff_1.dscp}}'
142-
- ecn='{{qp.xoff_1.ecn}}'
143-
- pg='{{qp.xoff_1.pg}}'
163+
- dscp='{{qp_sc.xoff_1.dscp}}'
164+
- ecn='{{qp_sc.xoff_1.ecn}}'
165+
- pg='{{qp_sc.xoff_1.pg}}'
144166
- buffer_max_size='{{lossless_buffer_max_size|int}}'
145167
- queue_max_size='{{lossless_queue_max_size|int}}'
146168
- dst_port_id='{{dst_port_id}}'
147169
- dst_port_ip='{{dst_port_ip}}'
148170
- src_port_id='{{src_port_id}}'
149171
- src_port_ip='{{src_port_ip}}'
150-
- pkts_num_leak_out='{{qp.xoff_1.pkts_num_leak_out}}'
151-
- pkts_num_trig_pfc='{{qp.xoff_1.pkts_num_trig_pfc}}'
152-
- pkts_num_trig_ingr_drp='{{qp.xoff_1.pkts_num_trig_ingr_drp}}'
172+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
173+
- pkts_num_trig_pfc='{{qp_sc.xoff_1.pkts_num_trig_pfc}}'
174+
- pkts_num_trig_ingr_drp='{{qp_sc.xoff_1.pkts_num_trig_ingr_drp}}'
153175

154176
- include_tasks: qos_sai_ptf.yml
155177
vars:
156-
test_name: xoff limit ptf test dscp = {{qp.xoff_2.dscp}}, ecn = {{qp.xoff_2.ecn}}
178+
test_name: xoff limit ptf test dscp = {{qp_sc.xoff_2.dscp}}, ecn = {{qp_sc.xoff_2.ecn}}
157179
test_path: sai_qos_tests.PFCtest
158180
test_params:
159-
- dscp='{{qp.xoff_2.dscp}}'
160-
- ecn='{{qp.xoff_2.ecn}}'
161-
- pg='{{qp.xoff_2.pg}}'
181+
- dscp='{{qp_sc.xoff_2.dscp}}'
182+
- ecn='{{qp_sc.xoff_2.ecn}}'
183+
- pg='{{qp_sc.xoff_2.pg}}'
162184
- buffer_max_size='{{lossless_buffer_max_size|int}}'
163185
- queue_max_size='{{lossless_queue_max_size|int}}'
164186
- dst_port_id='{{dst_port_id}}'
165187
- dst_port_ip='{{dst_port_ip}}'
166188
- src_port_id='{{src_port_id}}'
167189
- src_port_ip='{{src_port_ip}}'
168-
- pkts_num_leak_out='{{qp.xoff_2.pkts_num_leak_out}}'
169-
- pkts_num_trig_pfc='{{qp.xoff_2.pkts_num_trig_pfc}}'
170-
- pkts_num_trig_ingr_drp='{{qp.xoff_2.pkts_num_trig_ingr_drp}}'
190+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
191+
- pkts_num_trig_pfc='{{qp_sc.xoff_2.pkts_num_trig_pfc}}'
192+
- pkts_num_trig_ingr_drp='{{qp_sc.xoff_2.pkts_num_trig_ingr_drp}}'
171193

172194
# XON limit
173195
- include_tasks: qos_sai_ptf.yml
@@ -187,7 +209,7 @@
187209
- dst_port_3_ip='{{dst_port_3_ip}}'
188210
- src_port_id='{{src_port_id}}'
189211
- src_port_ip='{{src_port_ip}}'
190-
- pkts_num_leak_out='{{qp.xon_1.pkts_num_leak_out}}'
212+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
191213
- pkts_num_trig_pfc='{{qp.xon_1.pkts_num_trig_pfc}}'
192214
- pkts_num_dismiss_pfc='{{qp.xon_1.pkts_num_dismiss_pfc}}'
193215

@@ -208,29 +230,29 @@
208230
- dst_port_3_ip='{{dst_port_3_ip}}'
209231
- src_port_id='{{src_port_id}}'
210232
- src_port_ip='{{src_port_ip}}'
211-
- pkts_num_leak_out='{{qp.xon_2.pkts_num_leak_out}}'
233+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
212234
- pkts_num_trig_pfc='{{qp.xon_2.pkts_num_trig_pfc}}'
213235
- pkts_num_dismiss_pfc='{{qp.xon_2.pkts_num_dismiss_pfc}}'
214236

215237
# Headroom pool size
216238
- include_tasks: qos_sai_ptf.yml
217239
vars:
218-
test_name: headroom pool size ptf test ecn = {{qp.hdrm_pool_size.ecn}}
240+
test_name: headroom pool size ptf test ecn = {{qp_sc.hdrm_pool_size.ecn}}
219241
test_path: sai_qos_tests.HdrmPoolSizeTest
220242
test_params:
221243
- testbed_type='{{testbed_type}}'
222-
- dscps={{qp.hdrm_pool_size.dscps}}
223-
- ecn={{qp.hdrm_pool_size.ecn}}
224-
- pgs={{qp.hdrm_pool_size.pgs}}
225-
- src_port_ids={{qp.hdrm_pool_size.src_port_ids}}
226-
- src_port_ips=[{% for pid in qp.hdrm_pool_size.src_port_ids %}{% if not loop.last %}'{{testing_ports_ip[pid|string]}}', {% else %}'{{testing_ports_ip[pid|string]}}'{% endif %}{% endfor %}]
227-
- dst_port_id={{qp.hdrm_pool_size.dst_port_id}}
228-
- dst_port_ip='{{testing_ports_ip[qp.hdrm_pool_size.dst_port_id|string]}}'
229-
- pgs_num={{qp.hdrm_pool_size.pgs_num }}
230-
- pkts_num_leak_out={{qp.hdrm_pool_size.pkts_num_leak_out}}
231-
- pkts_num_trig_pfc={{qp.hdrm_pool_size.pkts_num_trig_pfc}}
232-
- pkts_num_hdrm_full={{qp.hdrm_pool_size.pkts_num_hdrm_full}}
233-
- pkts_num_hdrm_partial={{qp.hdrm_pool_size.pkts_num_hdrm_partial}}
244+
- dscps={{qp_sc.hdrm_pool_size.dscps}}
245+
- ecn={{qp_sc.hdrm_pool_size.ecn}}
246+
- pgs={{qp_sc.hdrm_pool_size.pgs}}
247+
- src_port_ids={{qp_sc.hdrm_pool_size.src_port_ids}}
248+
- src_port_ips=[{% for pid in qp_sc.hdrm_pool_size.src_port_ids %}{% if not loop.last %}'{{testing_ports_ip[pid|string]}}', {% else %}'{{testing_ports_ip[pid|string]}}'{% endif %}{% endfor %}]
249+
- dst_port_id={{qp_sc.hdrm_pool_size.dst_port_id}}
250+
- dst_port_ip='{{testing_ports_ip[qp_sc.hdrm_pool_size.dst_port_id|string]}}'
251+
- pgs_num={{qp_sc.hdrm_pool_size.pgs_num }}
252+
- pkts_num_leak_out={{qp_sc.pkts_num_leak_out}}
253+
- pkts_num_trig_pfc={{qp_sc.hdrm_pool_size.pkts_num_trig_pfc}}
254+
- pkts_num_hdrm_full={{qp_sc.hdrm_pool_size.pkts_num_hdrm_full}}
255+
- pkts_num_hdrm_partial={{qp_sc.hdrm_pool_size.pkts_num_hdrm_partial}}
234256
when: minigraph_hwsku is defined and
235257
minigraph_hwsku in ['Arista-7060CX-32S-C32', 'Celestica-DX010-C32', 'Arista-7260CX3-D108C8', 'Force10-S6100', 'Arista-7260CX3-Q64']
236258

@@ -251,7 +273,7 @@
251273
- dst_port_2_ip='{{dst_port_2_ip}}'
252274
- src_port_id='{{src_port_id}}'
253275
- src_port_ip='{{src_port_ip}}'
254-
- pkts_num_leak_out='{{qp.lossy_queue_1.pkts_num_leak_out}}'
276+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
255277
- pkts_num_trig_egr_drp='{{qp.lossy_queue_1.pkts_num_trig_egr_drp}}'
256278

257279
# DSCP to queue mapping
@@ -284,7 +306,7 @@
284306
- q5_num_of_pkts='{{qp.wrr.q5_num_of_pkts}}'
285307
- q6_num_of_pkts='{{qp.wrr.q6_num_of_pkts}}'
286308
- limit='{{qp.wrr.limit}}'
287-
- pkts_num_leak_out='{{qp.wrr.pkts_num_leak_out}}'
309+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
288310
- debug:
289311
var: out.stdout_lines
290312

@@ -306,7 +328,7 @@
306328
- dst_port_ip='{{dst_port_ip}}'
307329
- src_port_id='{{src_port_id}}'
308330
- src_port_ip='{{src_port_ip}}'
309-
- pkts_num_leak_out='{{qp.wm_pg_shared_lossless.pkts_num_leak_out}}'
331+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
310332
- pkts_num_fill_min='{{qp.wm_pg_shared_lossless.pkts_num_fill_min}}'
311333
- pkts_num_fill_shared='{{qp.wm_pg_shared_lossless.pkts_num_trig_pfc}}'
312334
- cell_size='{{qp.wm_pg_shared_lossless.cell_size}}'
@@ -335,7 +357,7 @@
335357
- dst_port_ip='{{dst_port_ip}}'
336358
- src_port_id='{{src_port_id}}'
337359
- src_port_ip='{{src_port_ip}}'
338-
- pkts_num_leak_out='{{qp.wm_pg_shared_lossy.pkts_num_leak_out}}'
360+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
339361
- pkts_num_fill_min='{{qp.wm_pg_shared_lossy.pkts_num_fill_min}}'
340362
- pkts_num_fill_shared='{{qp.wm_pg_shared_lossy.pkts_num_trig_egr_drp|int - 1}}'
341363
- cell_size='{{qp.wm_pg_shared_lossy.cell_size}}'
@@ -357,17 +379,17 @@
357379
test_name: PG headroom watermark test
358380
test_path: sai_qos_tests.PGHeadroomWatermarkTest
359381
test_params:
360-
- dscp='{{qp.wm_pg_headroom.dscp}}'
361-
- ecn='{{qp.wm_pg_headroom.ecn}}'
362-
- pg='{{qp.wm_pg_headroom.pg}}'
382+
- dscp='{{qp_sc.wm_pg_headroom.dscp}}'
383+
- ecn='{{qp_sc.wm_pg_headroom.ecn}}'
384+
- pg='{{qp_sc.wm_pg_headroom.pg}}'
363385
- dst_port_id='{{dst_port_id}}'
364386
- dst_port_ip='{{dst_port_ip}}'
365387
- src_port_id='{{src_port_id}}'
366388
- src_port_ip='{{src_port_ip}}'
367-
- pkts_num_leak_out='{{qp.wm_pg_headroom.pkts_num_leak_out}}'
368-
- pkts_num_trig_pfc='{{qp.wm_pg_headroom.pkts_num_trig_pfc}}'
369-
- pkts_num_trig_ingr_drp='{{qp.wm_pg_headroom.pkts_num_trig_ingr_drp}}'
370-
- cell_size='{{qp.wm_pg_headroom.cell_size}}'
389+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
390+
- pkts_num_trig_pfc='{{qp_sc.wm_pg_headroom.pkts_num_trig_pfc}}'
391+
- pkts_num_trig_ingr_drp='{{qp_sc.wm_pg_headroom.pkts_num_trig_ingr_drp}}'
392+
- cell_size='{{qp_sc.wm_pg_headroom.cell_size}}'
371393
- debug:
372394
var: out.stdout_lines
373395

@@ -382,17 +404,17 @@
382404
test_name: Queue shared watermark test, lossless traffic
383405
test_path: sai_qos_tests.QSharedWatermarkTest
384406
test_params:
385-
- dscp='{{qp.wm_q_shared_lossless.dscp}}'
386-
- ecn='{{qp.wm_q_shared_lossless.ecn}}'
387-
- queue='{{qp.wm_q_shared_lossless.queue}}'
407+
- dscp='{{qp_sc.wm_q_shared_lossless.dscp}}'
408+
- ecn='{{qp_sc.wm_q_shared_lossless.ecn}}'
409+
- queue='{{qp_sc.wm_q_shared_lossless.queue}}'
388410
- dst_port_id='{{dst_port_id}}'
389411
- dst_port_ip='{{dst_port_ip}}'
390412
- src_port_id='{{src_port_id}}'
391413
- src_port_ip='{{src_port_ip}}'
392-
- pkts_num_leak_out='{{qp.wm_q_shared_lossless.pkts_num_leak_out}}'
393-
- pkts_num_fill_min='{{qp.wm_q_shared_lossless.pkts_num_fill_min}}'
394-
- pkts_num_trig_drp='{{qp.wm_q_shared_lossless.pkts_num_trig_ingr_drp}}'
395-
- cell_size='{{qp.wm_q_shared_lossless.cell_size}}'
414+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
415+
- pkts_num_fill_min='{{qp_sc.wm_q_shared_lossless.pkts_num_fill_min}}'
416+
- pkts_num_trig_drp='{{qp_sc.wm_q_shared_lossless.pkts_num_trig_ingr_drp}}'
417+
- cell_size='{{qp_sc.wm_q_shared_lossless.cell_size}}'
396418
- debug:
397419
var: out.stdout_lines
398420

@@ -414,7 +436,7 @@
414436
- dst_port_ip='{{dst_port_ip}}'
415437
- src_port_id='{{src_port_id}}'
416438
- src_port_ip='{{src_port_ip}}'
417-
- pkts_num_leak_out='{{qp.wm_q_shared_lossy.pkts_num_leak_out}}'
439+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
418440
- pkts_num_fill_min='{{qp.wm_q_shared_lossy.pkts_num_fill_min}}'
419441
- pkts_num_trig_drp='{{qp.wm_q_shared_lossy.pkts_num_trig_egr_drp}}'
420442
- cell_size='{{qp.wm_q_shared_lossy.cell_size}}'
@@ -466,7 +488,7 @@
466488
- q5_num_of_pkts='{{qp.wrr_chg.q5_num_of_pkts}}'
467489
- q6_num_of_pkts='{{qp.wrr_chg.q6_num_of_pkts}}'
468490
- limit='{{qp.wrr_chg.limit}}'
469-
- pkts_num_leak_out='{{qp.wrr_chg.pkts_num_leak_out}}'
491+
- pkts_num_leak_out='{{qp_sc.pkts_num_leak_out}}'
470492
- debug:
471493
var: out.stdout_lines
472494

0 commit comments

Comments
 (0)