|
14 | 14 | - name: Initialize variables |
15 | 15 | set_fact: |
16 | 16 | 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()}} |
17 | 26 |
|
18 | 27 | - name: Generate IP address in VLAN range for each server port |
19 | 28 | 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 | 96 | with_items: "{{out.results}}" |
88 | 97 | when: item.stdout|search("lossy") |
89 | 98 |
|
| 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 | + |
90 | 113 | # Get PFC to DSCP mapping |
91 | 114 |
|
92 | 115 | - set_fact: |
|
151 | 174 | - name: Deploy PFC packet generator to fanout switch |
152 | 175 | include: roles/test/tasks/pfc_wd/functional_test/deploy_pfc_pktgen.yml |
153 | 176 |
|
| 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 | + |
154 | 188 | # Run test cases |
155 | 189 |
|
156 | 190 | - name: Start PTF runner |
|
210 | 244 | become: yes |
211 | 245 | with_items: "{{ server_ports }}" |
212 | 246 |
|
| 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 | + |
213 | 276 | - name: Start PTF runner |
214 | 277 | include: ptf_runner.yml |
215 | 278 | vars: |
|
262 | 325 | become: yes |
263 | 326 | with_items: "{{ server_ports }}" |
264 | 327 |
|
| 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 | + |
265 | 339 | - name: Remove SAI tests from PTF container |
266 | 340 | file: path=/root/saitests state=absent |
267 | 341 | delegate_to: "{{ ptf_host }}" |
|
0 commit comments