Skip to content

Commit 7f02853

Browse files
Volodymyr Samotiylguohan
authored andcommitted
[pfc_asym]: Update Asymmetric PFC test with config correctness checks (#1207)
Signed-off-by: Volodymyr Samotiy <[email protected]>
1 parent 3920347 commit 7f02853

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

ansible/roles/test/tasks/pfc_asym.yml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@
1414
- name: Initialize variables
1515
set_fact:
1616
server_ports: []
17+
server_ports_names: "{{minigraph_vlans[minigraph_vlan_interfaces[0]['attachto']]['members']|join(' ')}}"
18+
pfc_mask: 0
19+
pfc_rx_mask: 0
20+
pfc_tx_mask: 0
21+
22+
- name: Get server ports OIDs
23+
command: docker exec -i database redis-cli --raw -n 2 HMGET COUNTERS_PORT_NAME_MAP {{server_ports_names}}
24+
register: out
25+
- set_fact: server_ports_oids={{out.stdout.split()}}
1726

1827
- name: Generate IP address in VLAN range for each server port
1928
get_ip_in_range: num={{minigraph_vlans[minigraph_vlan_interfaces[0]['attachto']]['members']|length}} prefix="{{minigraph_vlan_interfaces[0]['addr']}}/{{minigraph_vlan_interfaces[0]['prefixlen']}}" exclude_ips="{{minigraph_vlan_interfaces[0]['addr']}}"
@@ -87,6 +96,20 @@
8796
with_items: "{{out.results}}"
8897
when: item.stdout|search("lossy")
8998

99+
- block:
100+
101+
- name: Set bitmask for the PFC value
102+
set_fact: pfc_mask={{(pfc_mask|int).__or__((1).__lshift__(item|int))}}
103+
with_items: lossless_priorities
104+
105+
- name: Set bitmask for the asymmetric PFC Tx value
106+
set_fact: pfc_tx_mask={{pfc_mask}}
107+
108+
- name: Set bitmask for the asymmetric PFC Rx value
109+
set_fact: pfc_rx_mask={{(pfc_rx_mask|int).__or__((1).__lshift__(item))}}
110+
with_items: [0,1,2,3,4,5,6,7] # Asymmetric PFC sets Rx bitmask for all priorities
111+
112+
90113
# Get PFC to DSCP mapping
91114

92115
- set_fact:
@@ -151,6 +174,17 @@
151174
- name: Deploy PFC packet generator to fanout switch
152175
include: roles/test/tasks/pfc_wd/functional_test/deploy_pfc_pktgen.yml
153176

177+
- block:
178+
179+
- name: Get default PFC value
180+
command: docker exec -i database redis-cli --raw -n 1 HGET ASIC_STATE:SAI_OBJECT_TYPE_PORT:{{ item }} SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL
181+
register: out
182+
with_items: '{{ server_ports_oids }}'
183+
184+
- name: Verify default PFC value
185+
assert: {that: "{{item.stdout|int == pfc_mask|int}}"}
186+
with_items: '{{ out.results }}'
187+
154188
# Run test cases
155189

156190
- name: Start PTF runner
@@ -210,6 +244,35 @@
210244
become: yes
211245
with_items: "{{ server_ports }}"
212246

247+
- block:
248+
249+
- name: Get PFC mode
250+
command: docker exec -i database redis-cli --raw -n 1 HGET ASIC_STATE:SAI_OBJECT_TYPE_PORT:{{ item }} SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE
251+
register: out
252+
with_items: '{{ server_ports_oids }}'
253+
254+
- name: Verify asymetric PFC mode
255+
assert: {that: "{{item.stdout == 'SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE'}}"}
256+
with_items: '{{ out.results }}'
257+
258+
- name: Get asymmetric PFC Rx value
259+
command: docker exec -i database redis-cli --raw -n 1 HGET ASIC_STATE:SAI_OBJECT_TYPE_PORT:{{ item }} SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX
260+
register: out
261+
with_items: '{{ server_ports_oids }}'
262+
263+
- name: Verify asymmetric PFC Rx value
264+
assert: {that: "{{item.stdout|int == pfc_rx_mask|int}}"}
265+
with_items: '{{ out.results }}'
266+
267+
- name: Get asymmetric PFC Tx value
268+
command: docker exec -i database redis-cli --raw -n 1 HGET ASIC_STATE:SAI_OBJECT_TYPE_PORT:{{ item }} SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX
269+
register: out
270+
with_items: '{{ server_ports_oids }}'
271+
272+
- name: Verify asymmetric PFC Tx value
273+
assert: {that: "{{item.stdout|int == pfc_tx_mask|int}}"}
274+
with_items: '{{ out.results }}'
275+
213276
- name: Start PTF runner
214277
include: ptf_runner.yml
215278
vars:
@@ -262,6 +325,17 @@
262325
become: yes
263326
with_items: "{{ server_ports }}"
264327

328+
- block:
329+
330+
- name: Get PFC value
331+
command: docker exec -i database redis-cli --raw -n 1 HGET ASIC_STATE:SAI_OBJECT_TYPE_PORT:{{ item }} SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL
332+
register: out
333+
with_items: '{{ server_ports_oids }}'
334+
335+
- name: Verify PFC value is restored to default
336+
assert: {that: "{{item.stdout|int == pfc_mask|int}}"}
337+
with_items: '{{ out.results }}'
338+
265339
- name: Remove SAI tests from PTF container
266340
file: path=/root/saitests state=absent
267341
delegate_to: "{{ ptf_host }}"

0 commit comments

Comments
 (0)