Skip to content

Commit 08fcf9e

Browse files
oleksandrivantsivmarian-pritsak
authored andcommitted
[everflow_testbed]: Test everflow session over spine and tor ports. (#160)
1 parent a85e332 commit 08fcf9e

File tree

5 files changed

+138
-21
lines changed

5 files changed

+138
-21
lines changed

ansible/roles/test/files/acstests/everflow_tb_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def setUp(self):
7272
self.session_ttl = int(self.test_params['session_ttl'])
7373
self.session_dscp = int(self.test_params['session_dscp'])
7474
self.src_port = int(float(self.test_params['src_port']))
75-
self.dst_ports = [int(float(p)) for p in self.test_params['dst_ports'].split(",")]
75+
self.dst_ports = [int(float(p)) for p in self.test_params['dst_ports'].split(",") if p]
7676
self.expected_dst_mac = self.test_params.get('expected_dst_mac', None)
7777

7878
testutils.add_filter(self.gre_type_filter)

ansible/roles/test/tasks/everflow_testbed.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44

55
- name: Run Everflow tests.
66
include: "roles/test/tasks/everflow_testbed/run_test.yml"
7+
vars:
8+
dst_port_type: "tor"
9+
tags: everflow_tb_test
10+
11+
- name: Run Everflow tests.
12+
include: "roles/test/tasks/everflow_testbed/run_test.yml"
13+
vars:
14+
dst_port_type: "spine"
715
tags: everflow_tb_test
816

917
- name: Clear Everflow configuration.

ansible/roles/test/tasks/everflow_testbed/apply_config/acl_table.j2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"ACL_TABLE:acl_table_mirror": {
44
"policy_desc" : "Everflow_ACL_table",
55
"type" : "MIRROR",
6-
"ports" : "{% for ifname, v in minigraph_neighbors.iteritems() %}{% if "T0" in v.name %}{{"%s" % alias_reverse_map[ifname]}},{% endif %}{% endfor %}"
6+
"ports" : "{% for ifname, v in minigraph_neighbors.iteritems() %}{{"%s" % alias_reverse_map[ifname]}},{% endfor %}"
77
},
88
"OP": "SET"
99
}

ansible/roles/test/tasks/everflow_testbed/get_port_info.yml

Lines changed: 121 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
1-
- name: Init list with tor ports.
1+
- fail: msg="Destination port type is not defined"
2+
when: dst_port_type not in ['tor', 'spine']
3+
4+
- name: Init variables.
25
set_fact:
36
tor_ports: []
7+
spine_ports: []
8+
dst_port_1_is_lag_member: ""
9+
dst_port_1_ptf_id: ""
10+
dst_port_2: ""
11+
dst_port_2_is_lag_member: ""
12+
dst_port_2_ptf_id: ""
13+
dst_port_3: ""
14+
dst_port_3_is_lag_member: ""
15+
dst_port_3_ptf_id: ""
416

517
- name: Get tor ports
618
set_fact:
@@ -12,38 +24,128 @@
1224
set_fact:
1325
tor_port: "{{ tor_ports|sort }}"
1426

15-
- name: Print top ports
27+
- name: Print tor ports
1628
debug: msg="{{ tor_ports }}"
1729

18-
- name: Define port variables.
30+
- name: Get spine ports
31+
set_fact:
32+
spine_ports: "{{ spine_ports + [item.key] }}"
33+
with_dict: "{{ minigraph_neighbors }}"
34+
when: "'T2' in item.value.name"
35+
36+
- name: Sort tor ports by name.
37+
set_fact:
38+
tor_port: "{{ spine_ports|sort }}"
39+
40+
- name: Print spine ports
41+
debug: msg="{{ spine_ports }}"
42+
43+
- name: Define SRC port variables.
44+
set_fact:
45+
src_port: "{{ spine_ports[0] }}"
46+
when: "dst_port_type == 'tor'"
47+
48+
- name: Define SRC port variables.
1949
set_fact:
2050
src_port: "{{ tor_ports[0] }}"
51+
when: "dst_port_type == 'spine'"
52+
53+
- name: Define SRC PTF port IDs
54+
set_fact:
55+
src_port_ptf_id: "{{ alias_reverse_map[src_port]|replace(\"Ethernet\", \"\")|int / 4 }}"
56+
57+
- name: Define port variables.
58+
set_fact:
2159
dst_port_1: "{{ tor_ports[1] }}"
22-
dst_port_2: "{{ tor_ports[2] }}"
23-
dst_port_3: "{{ tor_ports[3] }}"
60+
when: "dst_port_type == 'tor'"
2461

25-
- name: Print port variables.
26-
debug:
27-
var: src_port
62+
- name: Define port variables.
63+
set_fact:
64+
dst_port_1: "{{ spine_ports[1] }}"
65+
when: "dst_port_type == 'spine'"
2866

29-
- name: Print port variables.
30-
debug:
31-
var: dst_port_1
67+
- name: Check if DST port in LAG member
68+
set_fact:
69+
dst_port_1_is_lag_member: "{{ item.members }}"
70+
with_items: "{{ minigraph_portchannel_interfaces }}"
71+
when: "dst_port_1 in item.members"
3272

33-
- name: Print port variables.
34-
debug:
35-
var: dst_port_2
73+
- name: Define PTF port IDs for dst_port_1
74+
set_fact:
75+
dst_port_1_ptf_id: "{{ alias_reverse_map[dst_port_1]|replace(\"Ethernet\", \"\")|int / 4 }}"
76+
when: "not dst_port_1_is_lag_member"
77+
78+
- name: Define PTF port IDs for dst_port_1
79+
set_fact:
80+
dst_port_1_ptf_id: "{{ alias_reverse_map[item]|replace(\"Ethernet\", \"\")|int / 4 }},{{ dst_port_1_ptf_id }}"
81+
with_items: "{{ dst_port_1_is_lag_member }}"
82+
when: "dst_port_1_is_lag_member"
3683

37-
- name: Print port variables.
84+
- name: Define port variables.
85+
set_fact:
86+
dst_port_2: "{{ item }}"
87+
with_items: "{{ tor_ports }}"
88+
when: "(dst_port_type == 'tor') and (not dst_port_2) and (item != dst_port_1) and (item not in dst_port_1_is_lag_member)"
89+
90+
- name: Define port variables.
91+
set_fact:
92+
dst_port_2: "{{ item }}"
93+
with_items: "{{ spine_ports }}"
94+
when: "(dst_port_type == 'spine') and (not dst_port_2) and (item != dst_port_1) and (item not in dst_port_1_is_lag_member)"
95+
96+
- name: Check if DST port in LAG member
97+
set_fact:
98+
dst_port_2_is_lag_member: "{{ item.members }}"
99+
with_items: "{{ minigraph_portchannel_interfaces }}"
100+
when: "dst_port_2 in item.members"
101+
102+
- name: Print port channels
38103
debug:
39-
var: dst_port_3
104+
var: dst_port_2_is_lag_member
40105

41-
- name: Define PTF port IDs
106+
- name: Define PTF port IDs for dst_port_2
42107
set_fact:
43-
src_port_ptf_id: "{{ alias_reverse_map[src_port]|replace(\"Ethernet\", \"\")|int / 4 }}"
44-
dst_port_1_ptf_id: "{{ alias_reverse_map[dst_port_1]|replace(\"Ethernet\", \"\")|int / 4 }}"
45108
dst_port_2_ptf_id: "{{ alias_reverse_map[dst_port_2]|replace(\"Ethernet\", \"\")|int / 4 }}"
109+
when: "not dst_port_2_is_lag_member"
110+
111+
- name: Define PTF port IDs for dst_port_2
112+
set_fact:
113+
dst_port_2_ptf_id: "{{ alias_reverse_map[item]|replace(\"Ethernet\", \"\")|int / 4 }},{{ dst_port_2_ptf_id }}"
114+
with_items: "{{ dst_port_2_is_lag_member }}"
115+
when: "dst_port_2_is_lag_member"
116+
117+
- name: Define port variables.
118+
set_fact:
119+
dst_port_3: "{{ item }}"
120+
with_items: "{{ tor_ports }}"
121+
when: "(dst_port_type == 'tor') and (not dst_port_3) and (item != dst_port_1) and (item != dst_port_2) and (item not in dst_port_1_is_lag_member) and (item not in dst_port_2_is_lag_member)"
122+
123+
- name: Define port variables.
124+
set_fact:
125+
dst_port_3: "{{ item }}"
126+
with_items: "{{ spine_ports }}"
127+
when: "(dst_port_type == 'spine') and (not dst_port_3) and (item != dst_port_1) and (item != dst_port_2) and (item not in dst_port_1_is_lag_member) and (item not in dst_port_2_is_lag_member)"
128+
129+
- name: Check if DST port in LAG member
130+
set_fact:
131+
dst_port_3_is_lag_member: "{{ item.members }}"
132+
with_items: "{{ minigraph_portchannel_interfaces }}"
133+
when: "dst_port_3 in item.members"
134+
135+
- name: Print port channels
136+
debug:
137+
var: dst_port_3_is_lag_member
138+
139+
- name: Define PTF port IDs for dst_port_3
140+
set_fact:
46141
dst_port_3_ptf_id: "{{ alias_reverse_map[dst_port_3]|replace(\"Ethernet\", \"\")|int / 4 }}"
142+
when: "not dst_port_3_is_lag_member"
143+
144+
- name: Define PTF port IDs for dst_port_3
145+
set_fact:
146+
dst_port_3_ptf_id: "{{ alias_reverse_map[item]|replace(\"Ethernet\", \"\")|int / 4 }},{{ dst_port_3_ptf_id }}"
147+
with_items: "{{ dst_port_3_is_lag_member }}"
148+
when: "dst_port_3_is_lag_member"
47149

48150
- name: Print PTF port ID.
49151
debug: msg="{{ src_port }} = {{ src_port_ptf_id }}"

ansible/roles/test/tasks/everflow_testbed/run_test.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
# Run Everflow test and Perform log analysis.
33
#-----------------------------------------
44

5+
- fail: msg="testbed_type is not defined."
6+
when: testbed_type is not defined
7+
8+
- fail: msg="testbed_type {{testbed_type}} is invalid."
9+
when: testbed_type not in ['t1-lag', 't1']
10+
511
- name: Gathering minigraph facts about the device
612
minigraph_facts: host={{ inventory_hostname }}
713
become: no
@@ -67,6 +73,7 @@
6773

6874
- name: Run testcase 4 - Change neighbor MAC address.
6975
include: roles/test/tasks/everflow_testbed/testcase_4.yml
76+
when: testbed_type == "t1"
7077

7178
- name: Run testcase 5 - Resolved ECMP route.
7279
include: roles/test/tasks/everflow_testbed/testcase_5.yml

0 commit comments

Comments
 (0)