forked from sonic-net/sonic-mgmt
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Everflow testbed test implementation.
Add implementation of testcase sonic-net#2-8.
- Loading branch information
1 parent
0e13a9c
commit 2afc19e
Showing
16 changed files
with
459 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
ansible/roles/test/tasks/everflow_testbed/apply_config/acl_table.j2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
[ | ||
{ | ||
"ACL_TABLE:acl_table_mirror": { | ||
"policy_desc" : "Everflow_ACL_table", | ||
"type" : "MIRROR", | ||
"ports" : "{% for ifname, v in minigraph_neighbors.iteritems() %}{% if "T0" in v.name %}{{"%s" % alias_reverse_map[ifname]}},{% endif %}{% endfor %}" | ||
}, | ||
"OP": "SET" | ||
} | ||
] |
10 changes: 0 additions & 10 deletions
10
ansible/roles/test/tasks/everflow_testbed/apply_config/acl_table.json
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
68 changes: 68 additions & 0 deletions
68
ansible/roles/test/tasks/everflow_testbed/get_port_info.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
- name: Init list with tor ports. | ||
set_fact: | ||
tor_ports: [] | ||
|
||
- name: Get tor ports | ||
set_fact: | ||
tor_ports: "{{ tor_ports + [item.key] }}" | ||
with_dict: "{{ minigraph_neighbors }}" | ||
when: "'T0' in item.value.name" | ||
|
||
- name: Sort tor ports by name. | ||
set_fact: | ||
tor_port: "{{ tor_ports|sort }}" | ||
|
||
- name: Print top ports | ||
debug: msg="{{ tor_ports }}" | ||
|
||
# src_port: Ethernet84 | ||
# dst_port_1: Ethernet92 | ||
# dst_port_2: Ethernet96 | ||
# dst_port_3: Ethernet100 | ||
#- set_fact: | ||
# src_port_ptf_id: "{{ alias_reverse_map[src_port]|replace(\"Ethernet\", \"\")|int / 4 }}" | ||
# dst_port_1_ptf_id: "{{ alias_reverse_map[dst_port_1]|replace(\"Ethernet\", \"\")|int / 4 }}" | ||
# dst_port_2_ptf_id: "{{ alias_reverse_map[dst_port_2]|replace(\"Ethernet\", \"\")|int / 4 }}" | ||
# dst_port_3_ptf_id: "{{ alias_reverse_map[dst_port_3]|replace(\"Ethernet\", \"\")|int / 4 }}" | ||
|
||
- name: Define port variables. | ||
set_fact: | ||
src_port: "{{ tor_ports[0] }}" | ||
dst_port_1: "{{ tor_ports[1] }}" | ||
dst_port_2: "{{ tor_ports[2] }}" | ||
dst_port_3: "{{ tor_ports[3] }}" | ||
|
||
- name: Print port variables. | ||
debug: | ||
var: src_port | ||
|
||
- name: Print port variables. | ||
debug: | ||
var: dst_port_1 | ||
|
||
- name: Print port variables. | ||
debug: | ||
var: dst_port_2 | ||
|
||
- name: Print port variables. | ||
debug: | ||
var: dst_port_3 | ||
|
||
- name: Define PTF port IDs | ||
set_fact: | ||
src_port_ptf_id: "{{ alias_reverse_map[src_port]|replace(\"Ethernet\", \"\")|int / 4 }}" | ||
dst_port_1_ptf_id: "{{ alias_reverse_map[dst_port_1]|replace(\"Ethernet\", \"\")|int / 4 }}" | ||
dst_port_2_ptf_id: "{{ alias_reverse_map[dst_port_2]|replace(\"Ethernet\", \"\")|int / 4 }}" | ||
dst_port_3_ptf_id: "{{ alias_reverse_map[dst_port_3]|replace(\"Ethernet\", \"\")|int / 4 }}" | ||
|
||
- name: Print PTF port ID. | ||
debug: msg="{{ src_port }} = {{ src_port_ptf_id }}" | ||
|
||
- name: Print PTF port ID | ||
debug: msg="{{ dst_port_1 }} = {{ dst_port_1_ptf_id }}" | ||
|
||
- name: Print PTF port ID | ||
debug: msg="{{ dst_port_2 }} = {{ dst_port_2_ptf_id }}" | ||
|
||
- name: Print PTF port ID | ||
debug: msg="{{ dst_port_3 }} = {{ dst_port_3_ptf_id }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,17 @@ | ||
- name: test case 1 - Resolved route (Verify that session with resolved route has active state.) | ||
shell: ip route add 2.2.2.0/24 via {{ neighbor_info_1['addr'] }} | ||
become: yes | ||
# Test case 1 - Resolved route. | ||
# Verify that session with resolved route has active state. | ||
|
||
- name: Create route with next hop {{ dst_port_1 }}. | ||
shell: ip route add {{ session_prefix_1 }} via {{ neighbor_info_1['addr'] }} | ||
|
||
- block: | ||
- name: "Running test case 1" | ||
shell: ptf --test-dir acstests everflow_tb_test.EverflowTest --platform remote -t 'router_mac="00:02:03:04:05:00";src_port="{{ alias_reverse_map[src_port]|replace("Ethernet", "")|int / 4 }}";dst_ports="{{ alias_reverse_map[dst_port_1]|replace("Ethernet","")|int / 4 }},{{ alias_reverse_map[dst_port_2]|replace("Ethernet","")|int / 4 }}";session_src_ip="{{ session_src_ip }}";session_dst_ip="{{ session_dst_ip }}";session_ttl="{{ session_ttl }}";session_dscp="{{ session_dscp }}";verbose=True' | ||
- name: Send traffic and verify that packets with correct Everflow header are received on destination port {{ dst_port_1 }}. | ||
shell: ptf --test-dir acstests everflow_tb_test.EverflowTest --platform remote -t 'router_mac="{{ ansible_Ethernet0['macaddress'] }}";src_port="{{ src_port_ptf_id }}";dst_ports="{{ dst_port_1_ptf_id }}";session_src_ip="{{ session_src_ip }}";session_dst_ip="{{ session_dst_ip }}";session_ttl="{{ session_ttl }}";session_dscp="{{ session_dscp }}";verbose=True' | ||
args: | ||
chdir: /root | ||
delegate_to: "{{ ptf_host }}" | ||
register: out | ||
|
||
always: | ||
- name: Remove route | ||
shell: ip route del 2.2.2.0/24 | ||
become: yes | ||
|
||
shell: ip route del {{ session_prefix_1 }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Test case 2 - Longer prefix route with resolved next hop. | ||
# Verify that session destination port and MAC address are changed after best match route insertion. | ||
|
||
- block: | ||
- name: Create route with next hop on {{ dst_port_1 }}. | ||
shell: ip route add {{ session_prefix_1 }} via {{ neighbor_info_1['addr'] }} | ||
|
||
- name: Send traffic and verify that packets with correct Everflow header are received on destination port {{ dst_port_1 }}. | ||
shell: ptf --test-dir acstests everflow_tb_test.EverflowTest --platform remote -t 'router_mac="{{ ansible_Ethernet0['macaddress'] }}";src_port="{{ src_port_ptf_id }}";dst_ports="{{ dst_port_1_ptf_id }}";session_src_ip="{{ session_src_ip }}";session_dst_ip="{{ session_dst_ip }}";session_ttl="{{ session_ttl }}";session_dscp="{{ session_dscp }}";verbose=True' | ||
args: | ||
chdir: /root | ||
delegate_to: "{{ ptf_host }}" | ||
register: out | ||
|
||
- name: Create route with best match and unresolved next hop. | ||
shell: ip route add {{ session_prefix_2 }} via {{ unresolved_nexthop }} | ||
|
||
- name: Send traffic and verify that packets with correct Everflow header are received on destination port {{ dst_port_1 }}. | ||
shell: ptf --test-dir acstests everflow_tb_test.EverflowTest --platform remote -t 'router_mac="{{ ansible_Ethernet0['macaddress'] }}";src_port="{{ src_port_ptf_id }}";dst_ports="{{ dst_port_1_ptf_id }}";session_src_ip="{{ session_src_ip }}";session_dst_ip="{{ session_dst_ip }}";session_ttl="{{ session_ttl }}";session_dscp="{{ session_dscp }}";verbose=True' | ||
args: | ||
chdir: /root | ||
delegate_to: "{{ ptf_host }}" | ||
register: out | ||
|
||
- name: Create route with best match prefix and resolved next hop on destination port {{ dst_port_2 }}. | ||
shell: ip route change {{ session_prefix_2 }} via {{ neighbor_info_2['addr'] }} | ||
|
||
- name: Send traffic and verify that packets with correct Everflow header are received on destination port {{ dst_port_2 }}. | ||
shell: ptf --test-dir acstests everflow_tb_test.EverflowTest --platform remote -t 'router_mac="{{ ansible_Ethernet0['macaddress'] }}";src_port="{{ src_port_ptf_id }}";dst_ports="{{ dst_port_2_ptf_id }}";session_src_ip="{{ session_src_ip }}";session_dst_ip="{{ session_dst_ip }}";session_ttl="{{ session_ttl }}";session_dscp="{{ session_dscp }}";verbose=True' | ||
args: | ||
chdir: /root | ||
delegate_to: "{{ ptf_host }}" | ||
register: out | ||
|
||
always: | ||
- name: Remove route. | ||
shell: ip route del {{ session_prefix_1 }} | ||
ignore_errors: yes | ||
|
||
- name: Remove best match route. | ||
shell: ip route del {{ session_prefix_2 }} | ||
ignore_errors: yes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
# Test case 3 - Remove longer prefix route. | ||
# Verify that session destination port and MAC address are changed after best match route removal. | ||
|
||
- block: | ||
- name: Create route with next hop on {{ dst_port_1 }}. | ||
shell: ip route add {{ session_prefix_1 }} via {{ neighbor_info_1['addr'] }} | ||
|
||
- name: Send traffic and verify that packets with correct Everflow header are received on destination port {{ dst_port_1 }}. | ||
shell: ptf --test-dir acstests everflow_tb_test.EverflowTest --platform remote -t 'router_mac="{{ ansible_Ethernet0['macaddress'] }}";src_port="{{ src_port_ptf_id }}";dst_ports="{{ dst_port_1_ptf_id }}";session_src_ip="{{ session_src_ip }}";session_dst_ip="{{ session_dst_ip }}";session_ttl="{{ session_ttl }}";session_dscp="{{ session_dscp }}";verbose=True' | ||
args: | ||
chdir: /root | ||
delegate_to: "{{ ptf_host }}" | ||
register: out | ||
|
||
- name: Create route with best match prefix and resolved next hop {{ dst_port_2 }}. | ||
shell: ip route add {{ session_prefix_2 }} via {{ neighbor_info_2['addr'] }} | ||
|
||
- name: Send traffic and verify that packets with correct Everflow header are received on destination port {{ dst_port_2}}. | ||
shell: ptf --test-dir acstests everflow_tb_test.EverflowTest --platform remote -t 'router_mac="{{ ansible_Ethernet0['macaddress'] }}";src_port="{{ src_port_ptf_id }}";dst_ports="{{ dst_port_2_ptf_id }}";session_src_ip="{{ session_src_ip }}";session_dst_ip="{{ session_dst_ip }}";session_ttl="{{ session_ttl }}";session_dscp="{{ session_dscp }}";verbose=True' | ||
args: | ||
chdir: /root | ||
delegate_to: "{{ ptf_host }}" | ||
register: out | ||
|
||
- name: Remove best match route. | ||
shell: ip route del {{ session_prefix_2 }} | ||
ignore_errors: yes | ||
|
||
- name: Send traffic and verify that packets with correct Everflow header are received on destination port {{ dst_port_1 }}. | ||
shell: ptf --test-dir acstests everflow_tb_test.EverflowTest --platform remote -t 'router_mac="{{ ansible_Ethernet0['macaddress'] }}";src_port="{{ src_port_ptf_id }}";dst_ports="{{ dst_port_1_ptf_id }}";session_src_ip="{{ session_src_ip }}";session_dst_ip="{{ session_dst_ip }}";session_ttl="{{ session_ttl }}";session_dscp="{{ session_dscp }}";verbose=True' | ||
args: | ||
chdir: /root | ||
delegate_to: "{{ ptf_host }}" | ||
register: out | ||
|
||
always: | ||
- name: Remove route. | ||
shell: ip route del {{ session_prefix_1 }} | ||
ignore_errors: yes | ||
|
||
- name: Remove best match route. | ||
shell: ip route del {{ session_prefix_2 }} | ||
ignore_errors: yes |
Oops, something went wrong.