1 # Copyright 2015-2016 Intel Corporation.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 # The 1st value of SUPPORTED_TUNNELING_PROTO is used as the default
16 # tunneling protocol for OP2P tests.
17 SUPPORTED_TUNNELING_PROTO = ['vxlan', 'gre', 'geneve']
20 # Generic test configuration options are described at conf/01_testcases.conf
24 # Options specific to integration testcases are described below:
26 # Required for OP2P tests
27 # "Tunnel Type": ["vxlan"|"gre"|"geneve"] # Tunnel Type defines tunneling protocol to use.
28 # # It can be overridden by cli option TUNNEL_TYPE.
30 # # "vxlan" - iteration of destination MAC address
31 # # "gre" - iteration of destination IP address
32 # # "geneve" - iteration of destination UDP port
33 # # Default value is "vxlan".
35 # bidirectional testing for OP2P is not yet supported.
36 # TRAFFIC['bidir'] must be set to 'False'.
38 # "TestSteps": [] # Definition of integration test steps.
39 # # In case that this list is defined, then
40 # # vsperf will execute defined test steps
41 # # one by one. It can be used to configure
42 # # vswitch, insert flows and transmit traffic.
43 # # It is possible to refer to result of any
44 # # previous step through #STEP[i][j] macro.
45 # # Where i is a number of step (starts from 0)
46 # # and j is index of result returned by step i.
49 # Common TestSteps parts ("macros")
53 STEP_VSWITCH_P2P_FLOWS_INIT = [
54 ['vswitch', 'add_switch', 'int_br0'], # STEP 0
55 ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
56 ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2
57 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
58 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[2][1]', 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}],
61 STEP_VSWITCH_P2P_FLOWS_FINIT = [
62 ['vswitch', 'dump_flows', 'int_br0'],
63 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
64 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[2][1]'}],
65 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
66 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
67 ['vswitch', 'del_switch', 'int_br0'],
71 STEP_VSWITCH_PVP_INIT = [
72 ['vswitch', 'add_switch', 'int_br0'], # STEP 0
73 ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
74 ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2
75 ['vswitch', 'add_vport', 'int_br0'], # STEP 3 vm1 ports
76 ['vswitch', 'add_vport', 'int_br0'], # STEP 4
79 STEP_VSWITCH_PVP_FINIT = [
80 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
81 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
82 ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'],
83 ['vswitch', 'del_port', 'int_br0', '#STEP[4][0]'],
84 ['vswitch', 'del_switch', 'int_br0'],
87 STEP_VSWITCH_PVP_FLOWS_INIT = STEP_VSWITCH_PVP_INIT + [
88 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
89 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
90 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[2][1]', 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
91 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[3][1]', 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}],
94 STEP_VSWITCH_PVP_FLOWS_FINIT = [
95 ['vswitch', 'dump_flows', 'int_br0'],
96 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
97 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[4][1]'}],
98 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[2][1]'}],
99 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[3][1]'}],
100 ] + STEP_VSWITCH_PVP_FINIT
102 STEP_VSWITCH_PVVP_INIT = STEP_VSWITCH_PVP_INIT + [
103 ['vswitch', 'add_vport', 'int_br0'], # STEP 5 vm2 ports
104 ['vswitch', 'add_vport', 'int_br0'], # STEP 6
107 STEP_VSWITCH_PVVP_FINIT = [
108 ['vswitch', 'del_port', 'int_br0', '#STEP[5][0]'], # vm2 ports
109 ['vswitch', 'del_port', 'int_br0', '#STEP[6][0]'],
110 ] + STEP_VSWITCH_PVP_FINIT
112 STEP_VSWITCH_PVVP_FLOWS_INIT = STEP_VSWITCH_PVVP_INIT + [
113 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
114 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
115 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[6][1]', 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
116 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[2][1]', 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}],
117 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[5][1]', 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
118 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[3][1]', 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}],
121 STEP_VSWITCH_PVVP_FLOWS_FINIT = [
122 ['vswitch', 'dump_flows', 'int_br0'],
123 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
124 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[4][1]'}],
125 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[6][1]'}],
126 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[2][1]'}],
127 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[5][1]'}],
128 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[3][1]'}],
129 ] + STEP_VSWITCH_PVVP_FINIT
131 STEP_VSWITCH_P4VP_INIT = STEP_VSWITCH_PVVP_INIT + [
132 ['vswitch', 'add_vport', 'int_br0'], # STEP 7 vm3 ports
133 ['vswitch', 'add_vport', 'int_br0'], # STEP 8
134 ['vswitch', 'add_vport', 'int_br0'], # STEP 9 vm4 ports
135 ['vswitch', 'add_vport', 'int_br0'], # STEP 10
138 STEP_VSWITCH_P4VP_FINIT = [
139 ['vswitch', 'del_port', 'int_br0', '#STEP[7][0]'], # vm3 ports
140 ['vswitch', 'del_port', 'int_br0', '#STEP[8][0]'],
141 ['vswitch', 'del_port', 'int_br0', '#STEP[9][0]'], # vm4 ports
142 ['vswitch', 'del_port', 'int_br0', '#STEP[10][0]'],
143 ] + STEP_VSWITCH_PVVP_FINIT
145 STEP_VSWITCH_P4VP_FLOWS_INIT = STEP_VSWITCH_P4VP_INIT + [
146 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
147 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
148 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', \
149 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
150 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[6][1]', \
151 'actions': ['output:#STEP[7][1]'], 'idle_timeout': '0'}],
152 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[8][1]', \
153 'actions': ['output:#STEP[9][1]'], 'idle_timeout': '0'}],
154 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[10][1]', \
155 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
156 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[2][1]', \
157 'actions': ['output:#STEP[10][1]'], 'idle_timeout': '0'}],
158 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[9][1]', \
159 'actions': ['output:#STEP[8][1]'], 'idle_timeout': '0'}],
160 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[7][1]', \
161 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}],
162 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[5][1]', \
163 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
164 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[3][1]', \
165 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}],
168 STEP_VSWITCH_P4VP_FLOWS_FINIT = [
169 ['vswitch', 'dump_flows', 'int_br0'],
170 ['vswitch', 'del_flow', 'int_br0'],
171 ] + STEP_VSWITCH_P4VP_FINIT
173 STEP_VSWITCH_2PHY_2VM_INIT = STEP_VSWITCH_PVVP_INIT
175 STEP_VSWITCH_2PHY_2VM_FINIT = STEP_VSWITCH_PVVP_FINIT
177 STEP_VSWITCH_2_PARALLEL_VM_FLOWS_INIT = [
178 # Setup Flows to reply ICMPv6 and similar packets, so to
179 # avoid flooding the internal port with their re-transmissions
180 ['vswitch', 'add_flow', 'int_br0', \
181 {'priority': '1', 'dl_src': '00:00:00:00:00:01', \
182 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
183 ['vswitch', 'add_flow', 'int_br0', \
184 {'priority': '1', 'dl_src': '00:00:00:00:00:02', \
185 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
186 ['vswitch', 'add_flow', 'int_br0', \
187 {'priority': '1', 'dl_src': '00:00:00:00:00:03', \
188 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
189 ['vswitch', 'add_flow', 'int_br0', \
190 {'priority': '1', 'dl_src': '00:00:00:00:00:04', \
191 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}],
192 # Forward UDP packets depending on dest port
193 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
194 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '0', \
195 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
196 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
197 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '1', \
198 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
199 # Send VM outputs to phy port #2
200 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', \
201 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
202 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[6][1]', \
203 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
206 STEP_VSWITCH_2PHY_4VM_INIT = STEP_VSWITCH_2PHY_2VM_INIT + [
207 ['vswitch', 'add_vport', 'int_br0'], # STEP 7 vm3 ports
208 ['vswitch', 'add_vport', 'int_br0'], # STEP 8
209 ['vswitch', 'add_vport', 'int_br0'], # STEP 9 vm4 ports
210 ['vswitch', 'add_vport', 'int_br0'], # STEP 10
213 STEP_VSWITCH_2PHY_4VM_FINIT = [
214 ['vswitch', 'del_port', 'int_br0', '#STEP[7][0]'], # vm3 ports
215 ['vswitch', 'del_port', 'int_br0', '#STEP[8][0]'],
216 ['vswitch', 'del_port', 'int_br0', '#STEP[9][0]'], # vm4 ports
217 ['vswitch', 'del_port', 'int_br0', '#STEP[10][0]'],
218 ] + STEP_VSWITCH_2PHY_2VM_FINIT
220 STEP_VSWITCH_FLOWS_FINIT = [
221 ['vswitch', 'dump_flows', 'int_br0'],
222 ['vswitch', 'del_flow', 'int_br0'],
225 STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT = [
226 # Setup Flows to reply ICMPv6 and similar packets, so to
227 # avoid flooding the internal port with their re-transmissions
228 ['vswitch', 'add_flow', 'int_br0', \
229 {'priority': '1', 'dl_src': '00:00:00:00:00:01', \
230 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
231 ['vswitch', 'add_flow', 'int_br0', \
232 {'priority': '1', 'dl_src': '00:00:00:00:00:02', \
233 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
234 ['vswitch', 'add_flow', 'int_br0', \
235 {'priority': '1', 'dl_src': '00:00:00:00:00:03', \
236 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
237 ['vswitch', 'add_flow', 'int_br0', \
238 {'priority': '1', 'dl_src': '00:00:00:00:00:04', \
239 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}],
240 ['vswitch', 'add_flow', 'int_br0', \
241 {'priority': '1', 'dl_src': '00:00:00:00:00:05', \
242 'actions': ['output:#STEP[7][1]'], 'idle_timeout': '0'}],
243 ['vswitch', 'add_flow', 'int_br0', \
244 {'priority': '1', 'dl_src': '00:00:00:00:00:06', \
245 'actions': ['output:#STEP[8][1]'], 'idle_timeout': '0'}],
246 ['vswitch', 'add_flow', 'int_br0', \
247 {'priority': '1', 'dl_src': '00:00:00:00:00:07', \
248 'actions': ['output:#STEP[9][1]'], 'idle_timeout': '0'}],
249 ['vswitch', 'add_flow', 'int_br0', \
250 {'priority': '1', 'dl_src': '00:00:00:00:00:08', \
251 'actions': ['output:#STEP[10][1]'], 'idle_timeout': '0'}],
252 # Forward UDP packets depending on dest port
253 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
254 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '0', \
255 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
256 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
257 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '1', \
258 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
259 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
260 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '2', \
261 'actions': ['output:#STEP[7][1]'], 'idle_timeout': '0'}],
262 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
263 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '3', \
264 'actions': ['output:#STEP[9][1]'], 'idle_timeout': '0'}],
265 # Send VM outputs to phy port #2
266 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', \
267 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
268 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[6][1]', \
269 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
270 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[8][1]', \
271 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
272 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[10][1]', \
273 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
276 STEP_VSWITCH_2PHY_6VM_INIT = STEP_VSWITCH_2PHY_4VM_INIT + [
277 ['vswitch', 'add_vport', 'int_br0'], # STEP 11 vm5 vhu8
278 ['vswitch', 'add_vport', 'int_br0'], # STEP 12 vhu9
279 ['vswitch', 'add_vport', 'int_br0'], # STEP 13 vm6 vhu10
280 ['vswitch', 'add_vport', 'int_br0'], # STEP 14 vhu11
283 STEP_VSWITCH_6_PARALLEL_VM_FLOWS_INIT = STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT + [
284 ['vswitch', 'add_flow', 'int_br0', \
285 {'priority': '1', 'dl_src': '00:00:00:00:00:09', \
286 'actions': ['output:#STEP[11][1]'], 'idle_timeout': '0'}],
287 ['vswitch', 'add_flow', 'int_br0', \
288 {'priority': '1', 'dl_src': '00:00:00:00:00:0a', \
289 'actions': ['output:#STEP[12][1]'], 'idle_timeout': '0'}],
290 ['vswitch', 'add_flow', 'int_br0', \
291 {'priority': '1', 'dl_src': '00:00:00:00:00:0b', \
292 'actions': ['output:#STEP[13][1]'], 'idle_timeout': '0'}],
293 ['vswitch', 'add_flow', 'int_br0', \
294 {'priority': '1', 'dl_src': '00:00:00:00:00:0c', \
295 'actions': ['output:#STEP[14][1]'], 'idle_timeout': '0'}],
296 # Forward UDP packets depending on dest port
297 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
298 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '4', \
299 'actions': ['output:#STEP[11][1]'], 'idle_timeout': '0'}],
300 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
301 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '5', \
302 'actions': ['output:#STEP[13][1]'], 'idle_timeout': '0'}],
303 # Send VM outputs to phy port #2
304 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[12][1]', \
305 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
306 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[14][1]', \
307 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
310 STEP_VSWITCH_2PHY_6VM_FINIT = [
311 ['vswitch', 'del_port', 'int_br0', '#STEP[11][0]'], # vm5 ports
312 ['vswitch', 'del_port', 'int_br0', '#STEP[12][0]'],
313 ['vswitch', 'del_port', 'int_br0', '#STEP[13][0]'], # vm6 ports
314 ['vswitch', 'del_port', 'int_br0', '#STEP[14][0]'],
315 ] + STEP_VSWITCH_2PHY_4VM_FINIT
318 # Definition of integration tests
320 INTEGRATION_TESTS = [
322 "Name": "overlay_p2p_mod_tput",
323 "Deployment": "ptunp",
324 "Tunnel Type": "vxlan",
325 "Description": ("Tunneling Throughput RFC2544 Test."
326 "The encap and decap are performed inside the "
327 "virtual switch itself in each direction to avoid "
328 "the need of ingress overlay traffic."),
330 "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
332 "traffic_type" : "rfc2544_throughput",
338 "Name": "overlay_p2p_tput",
339 "Deployment": "op2p",
340 "Tunnel Type": SUPPORTED_TUNNELING_PROTO[0],
341 "Tunnel Operation": "encapsulation",
342 "Description": "Overlay Encapsulation Throughput RFC2544 Test",
344 "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
346 "traffic_type" : "rfc2544_throughput",
352 "Name": "overlay_p2p_cont",
353 "Deployment": "op2p",
354 "Tunnel Type": SUPPORTED_TUNNELING_PROTO[0],
355 "Tunnel Operation": "encapsulation",
356 "Description": "Overlay Encapsulation RFC2544 Continuous Stream",
358 "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
360 "traffic_type" : "rfc2544_continuous",
366 "Name": "overlay_p2p_decap_tput",
367 "Deployment": "op2p",
368 "Tunnel Type": SUPPORTED_TUNNELING_PROTO[0],
369 "Tunnel Operation": "decapsulation",
370 "Description": "Overlay Decapsulation Throughput RFC2544 Test",
372 "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
374 "traffic_type" : "rfc2544_throughput",
380 "Name": "overlay_p2p_decap_cont",
381 "Deployment": "op2p",
382 "Tunnel Type": SUPPORTED_TUNNELING_PROTO[0],
383 "Tunnel Operation": "decapsulation",
384 "Description": "Overlay Decapsulation RFC2544 Continuous Stream",
386 "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
388 "traffic_type" : "rfc2544_continuous",
394 "Name": "vswitch_add_del_bridge",
395 "Deployment": "clean",
396 "Description": "vSwitch - add and delete bridge",
398 ['vswitch', 'add_switch', 'int_br0'],
399 ['vswitch', 'del_switch', 'int_br0'],
403 "Name": "vswitch_add_del_bridges",
404 "Deployment": "clean",
405 "Description": "vSwitch - add and delete bridges",
407 ['vswitch', 'add_switch', 'int_br0'],
408 ['vswitch', 'add_switch', 'int_br1'],
409 ['vswitch', 'del_switch', 'int_br0'],
410 ['vswitch', 'del_switch', 'int_br1'],
414 "Name": "vswitch_add_del_phy_port",
415 "Deployment": "clean",
416 "Description": "vSwitch - add and delete physical port",
418 ['vswitch', 'add_switch', 'int_br0'],
419 ['vswitch', 'add_phy_port', 'int_br0'],
420 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
421 ['vswitch', 'del_switch', 'int_br0'],
425 "Name": "vswitch_add_del_phy_ports",
426 "Deployment": "clean",
427 "Description": "vSwitch - add and delete physical ports",
429 ['vswitch', 'add_switch', 'int_br0'],
430 ['vswitch', 'add_phy_port', 'int_br0'],
431 ['vswitch', 'add_phy_port', 'int_br0'],
432 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
433 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
434 ['vswitch', 'del_switch', 'int_br0'],
438 "Name": "vswitch_add_del_vport",
439 "Deployment": "clean",
440 "Description": "vSwitch - add and delete virtual port",
442 ['vswitch', 'add_switch', 'int_br0'],
443 ['vswitch', 'add_vport', 'int_br0'],
444 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
445 ['vswitch', 'del_switch', 'int_br0'],
449 "Name": "vswitch_add_del_vports",
450 "Deployment": "clean",
451 "Description": "vSwitch - add and delete virtual ports",
453 ['vswitch', 'add_switch', 'int_br0'],
454 ['vswitch', 'add_vport', 'int_br0'],
455 ['vswitch', 'add_vport', 'int_br0'],
456 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
457 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
458 ['vswitch', 'del_switch', 'int_br0'],
462 "Name": "vswitch_add_del_flow",
463 "Deployment": "clean",
464 "Description": "vSwitch - add and delete flow",
466 ['vswitch', 'add_switch', 'int_br0'],
467 ['vswitch', 'add_phy_port', 'int_br0'],
468 ['vswitch', 'add_phy_port', 'int_br0'],
469 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
470 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
471 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
472 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
473 ['vswitch', 'del_switch', 'int_br0'],
477 "Name": "vswitch_vports_add_del_flow",
478 "Deployment": "clean",
479 "Description": "vSwitch - configure switch with vports, add and delete flow",
481 ['vswitch', 'add_switch', 'int_br0'],
482 ['vswitch', 'add_vport', 'int_br0'],
483 ['vswitch', 'add_vport', 'int_br0'],
484 ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
485 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
486 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
487 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
488 ['vswitch', 'del_switch', 'int_br0'],
492 "Name": "vswitch_add_del_flows",
493 "Deployment": "clean",
494 "Description": "vSwitch - add and delete flows",
495 "TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT +
496 STEP_VSWITCH_P2P_FLOWS_FINIT
499 "Name": "vswitch_p2p_tput",
500 "Deployment": "clean",
501 "Description": "vSwitch - configure switch and execute RFC2544 throughput test",
502 "TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT +
504 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
506 STEP_VSWITCH_P2P_FLOWS_FINIT
509 "Name": "vswitch_p2p_back2back",
510 "Deployment": "clean",
511 "Description": "vSwitch - configure switch and execute RFC2544 back2back test",
512 "TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT +
514 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
516 STEP_VSWITCH_P2P_FLOWS_FINIT
519 "Name": "vswitch_p2p_cont",
520 "Deployment": "clean",
521 "Description": "vSwitch - configure switch and execute RFC2544 continuous stream test",
522 "TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT +
524 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
526 STEP_VSWITCH_P2P_FLOWS_FINIT
529 "Name": "vswitch_pvp",
530 "Deployment": "clean",
531 "Description": "vSwitch - configure switch and one vnf",
532 "TestSteps": STEP_VSWITCH_PVP_INIT +
537 STEP_VSWITCH_PVP_FINIT
540 "Name": "vswitch_vports_pvp",
541 "Deployment": "clean",
542 "Description": "vSwitch - configure switch with vports and one vnf",
544 ['vswitch', 'add_switch', 'int_br0'],
545 ['vswitch', 'add_vport', 'int_br0'],
546 ['vswitch', 'add_vport', 'int_br0'],
549 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
550 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
551 ['vswitch', 'del_switch', 'int_br0'],
555 "Name": "vswitch_pvp_tput",
556 "Deployment": "clean",
557 "Description": "vSwitch - configure switch, vnf and execute RFC2544 throughput test",
558 "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
561 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
564 STEP_VSWITCH_PVP_FLOWS_FINIT
567 "Name": "vswitch_pvp_back2back",
568 "Deployment": "clean",
569 "Description": "vSwitch - configure switch, vnf and execute RFC2544 back2back test",
570 "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
573 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
576 STEP_VSWITCH_PVP_FLOWS_FINIT
579 "Name": "vswitch_pvp_cont",
580 "Deployment": "clean",
581 "Description": "vSwitch - configure switch, vnf and execute RFC2544 continuous stream test",
582 "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
585 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
588 STEP_VSWITCH_PVP_FLOWS_FINIT
591 "Name": "vswitch_pvp_all",
592 "Deployment": "clean",
593 "Description": "vSwitch - configure switch, vnf and execute all test types",
594 "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
597 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
598 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
599 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
602 STEP_VSWITCH_PVP_FLOWS_FINIT
605 "Name": "vswitch_pvvp",
606 "Deployment": "clean",
607 "Description": "vSwitch - configure switch and two vnfs",
608 "TestSteps": STEP_VSWITCH_PVVP_INIT +
615 STEP_VSWITCH_PVVP_FINIT
618 "Name": "vswitch_pvvp_tput",
619 "Deployment": "clean",
620 "Description": "vSwitch - configure switch, two chained vnfs and execute RFC2544 throughput test",
621 "TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT +
625 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
629 STEP_VSWITCH_PVVP_FLOWS_FINIT
632 "Name": "vswitch_pvvp_back2back",
633 "Deployment": "clean",
634 "Description": "vSwitch - configure switch, two chained vnfs and execute RFC2544 back2back test",
635 "TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT +
639 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
643 STEP_VSWITCH_PVVP_FLOWS_FINIT
646 "Name": "vswitch_pvvp_cont",
647 "Deployment": "clean",
648 "Description": "vSwitch - configure switch, two chained vnfs and execute RFC2544 continuous stream test",
649 "TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT +
653 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
657 STEP_VSWITCH_PVVP_FLOWS_FINIT
660 "Name": "vswitch_pvvp_all",
661 "Deployment": "clean",
662 "Description": "vSwitch - configure switch, two chained vnfs and execute all test types",
663 "TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT +
667 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
668 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
669 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
673 STEP_VSWITCH_PVVP_FLOWS_FINIT
676 "Name": "vswitch_p4vp",
677 "Description": "Just configure 4 chained vnfs",
678 "Deployment": "clean",
679 "TestSteps": STEP_VSWITCH_P4VP_FLOWS_INIT +
690 STEP_VSWITCH_P4VP_FLOWS_FINIT
693 "Name": "vswitch_p4vp_tput",
694 "Description": "4 chained vnfs, execute RFC2544 throughput test",
695 "Deployment": "clean",
696 "TestSteps": STEP_VSWITCH_P4VP_FLOWS_INIT +
702 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', \
709 STEP_VSWITCH_P4VP_FLOWS_FINIT
712 "Name": "vswitch_p4vp_back2back",
713 "Description": "4 chained vnfs, execute RFC2544 back2back test",
714 "Deployment": "clean",
715 "TestSteps": STEP_VSWITCH_P4VP_FLOWS_INIT +
721 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', \
728 STEP_VSWITCH_P4VP_FLOWS_FINIT
731 "Name": "vswitch_p4vp_cont",
732 "Description": "4 chained vnfs, execute RFC2544 continuous stream test",
733 "Deployment": "clean",
734 "TestSteps": STEP_VSWITCH_P4VP_FLOWS_INIT +
740 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', \
747 STEP_VSWITCH_P4VP_FLOWS_FINIT
750 "Name": "vswitch_p4vp_all",
751 "Description": "4 chained vnfs, execute RFC2544 throughput test",
752 "Deployment": "clean",
753 "TestSteps": STEP_VSWITCH_P4VP_FLOWS_INIT +
759 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', \
761 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', \
763 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', \
770 STEP_VSWITCH_P4VP_FLOWS_FINIT
773 # Topology: 2 Parallel PVP connections
774 # To run a Linux bridge as a loopback in the Guest use:
775 # --test-params "GUEST_LOOPBACK=['linux_bridge']" --integration 2pvp_udp_dest_flows
776 # or add "Parameters" option to the test definition:
777 # "Parameters" : {'GUEST_LOOPBACK' : ['linux_bridge'],},
778 "Name": "2pvp_udp_dest_flows",
779 "Description": "RFC2544 Continuous TC with 2 Parallel VMs, flows on UDP Dest Port",
780 "Deployment": "clean",
784 "stream_type" : "L4",
787 "TestSteps": STEP_VSWITCH_2PHY_2VM_INIT +
788 STEP_VSWITCH_2_PARALLEL_VM_FLOWS_INIT + [
792 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'False'}],
796 ] + STEP_VSWITCH_FLOWS_FINIT +
797 STEP_VSWITCH_2PHY_2VM_FINIT
800 # Topology: 4 Parallel PVP connections
801 # To run a Linux bridge as a loopback in the Guest use:
802 # --test-params "GUEST_LOOPBACK=['linux_bridge']" --integration 4pvp_udp_dest_flows
803 # or add "Parameters" option to the test definition:
804 # "Parameters" : {'GUEST_LOOPBACK' : ['linux_bridge'],},
805 "Name": "4pvp_udp_dest_flows",
806 "Description": "RFC2544 Continuous TC with 4 Parallel VMs, flows on UDP Dest Port",
807 "Deployment": "clean",
811 "stream_type" : "L4",
814 "TestSteps": STEP_VSWITCH_2PHY_4VM_INIT +
815 STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT + [
821 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'False'}],
827 ] + STEP_VSWITCH_FLOWS_FINIT +
828 STEP_VSWITCH_2PHY_4VM_FINIT
831 # Topology: 6 Parallel PVP connections
832 # To run a Linux bridge as a loopback in the Guest use:
833 # --test-params "GUEST_LOOPBACK=['linux_bridge']" --integration 6pvp_udp_dest_flows
834 # or add "Parameters" option to the test definition:
835 # "Parameters" : {'GUEST_LOOPBACK' : ['linux_bridge'],},
836 "Name": "6pvp_udp_dest_flows",
837 "Description": "RFC2544 Continuous TC with 6 Parallel VMs, flows on UDP Dest Port",
838 "Deployment": "clean",
842 "stream_type" : "L4",
845 "TestSteps": STEP_VSWITCH_2PHY_6VM_INIT +
846 STEP_VSWITCH_6_PARALLEL_VM_FLOWS_INIT + [
854 ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'False'}],
861 ] + STEP_VSWITCH_FLOWS_FINIT +
862 STEP_VSWITCH_2PHY_6VM_FINIT
865 # Testcase for verification of vHost User NUMA awareness feature
866 # introduced in DPDK v2.2. Test case will execute two VNFs, each
867 # pinned to different NUMA slot. After that it will verify that
868 # QEMU and PMD threads serving its interfaces are co-located
869 # at the same NUMA slot.
872 # * architecture with at least 2 NUMA slots
873 # * OVS with DPDK support and DPDK v2.2 and newer
874 # * OVS configuration utilizing both NUMA slots
876 # Example of OVS configuration valid for DPDK v16.04 and cores
877 # split between NUMA slots as follows:
878 # node 0 cpus: 0 1 2 3 4 5 6 7 8 9
879 # node 1 cpus: 10 11 12 13 14 15 16 17 18 19
881 # VSWITCH_PMD_CPU_MASK = '1010'
882 # VSWITCHD_DPDK_CONFIG = {
883 # 'dpdk-init' : 'true',
884 # 'dpdk-lcore-mask' : '0x4004',
885 # 'pmd-cpu-mask' : 'FF0FF',
886 # 'dpdk-socket-mem' : '1024,1024',
889 "Name": "vhost_numa_awareness",
890 "Deployment": "clean",
891 "Description": "vSwitch DPDK - verify that PMD threads are served "
892 "by the same NUMA slot as QEMU instances",
893 "vSwitch" : "OvsDpdkVhost",
894 "TestSteps": STEP_VSWITCH_PVVP_INIT + # STEP 0-6
896 # check that at least 2 numa slots are available
897 ['tools', 'exec', 'numactl -H', 'available: ([0-9]+)'], # STEP 7
898 ['tools', 'assert', '#STEP[-1][0]>1'], # STEP 8
899 # store last 2 cores from numa slot 0
900 ['tools', 'exec', 'numactl -H', 'node 0 cpus:.*\s+(\\d+) (\\d+)$'], # STEP 9
901 # store last 2 cores from numa slot 1
902 ['tools', 'exec', 'numactl -H', 'node 1 cpus:.*\s+(\\d+) (\\d+)$'], # STEP 10
903 # pin VNF1 to 1st NUMA slot and VNF2 to 2nd NUMA slot
904 ['settings', 'setValue', 'GUEST_CORE_BINDING', # STEP 11
905 [("#STEP[-2][0][0]", "#STEP[-2][0][1]"),
906 ("#STEP[-1][0][0]", "#STEP[-1][0][1]")]
909 ['vnf1', 'start'], # STEP 12
910 ['vnf2', 'start'], # STEP 13
911 # read paths to ovs utilities
912 ['settings', 'getValue', 'TOOLS'], # STEP 14
913 # check that PMD thread serving VNF1 runs at NUMA slot 0
914 ## i.e. get numa slot ID serving dpdhvhostuser0...
915 ['tools', 'exec', "sudo #STEP[-1]['ovs-appctl'] " # STEP 15
916 "dpif-netdev/pmd-rxq-show | "
917 "sed -e '/dpdkvhostuser0/,$d' | tac",
918 'pmd thread numa_id ([0-9])+'
920 ## ...and check that it is NUMA slot 0
921 ['tools', 'assert', '#STEP[-1][0]==0'], # STEP 16
922 # check that PMD thread serving VNF2 runs at NUMA slot 1
923 ## i.e. get numa slot ID serving dpdhvhostuser2...
924 ['tools', 'exec', "sudo #STEP[-3]['ovs-appctl'] " # STEP 17
925 "dpif-netdev/pmd-rxq-show | "
926 "sed -e '/dpdkvhostuser2/,$d' | tac",
927 'pmd thread numa_id ([0-9])+'
929 ## ...and check that it is NUMA slot 1
930 ['tools', 'assert', '#STEP[-1][0]==1'], # STEP 18
932 ['vnf2', 'stop'], # STEP 19
933 ['vnf1', 'stop'], # STEP 20
935 STEP_VSWITCH_PVVP_FINIT # STEP 21...
938 # Testcase to demonstrate 1 port connection between DUT and IXIA traffic
939 # generator. Testcase will enforce IxNet trafficgen and it will configure
940 # both ports to the value of TRAFFICGEN_IXIA_PORT1 to indicate one port
942 # Please note, that it is essential to ensure that TRAFFICGEN_IXIA_PORT1
943 # is physically connected to the first NIC from WHITELIST_NICS list.
944 "Name": "ixnet_pvp_tput_1nic",
945 "Deployment": "clean",
946 "Description": "PVP Scenario with 1 port towards IXIA",
948 "TRAFFICGEN" : "IxNet",
950 "traffic_type" : "rfc2544_throughput",
951 # we are using one port, thus it's already a bidir connection
956 ['vswitch', 'add_switch', 'int_br0'], # STEP 0
957 ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
958 ['vswitch', 'add_vport', 'int_br0'], # STEP 2
959 ['vswitch', 'add_vport', 'int_br0'], # STEP 3
960 ['vswitch', 'add_flow', 'int_br0',
961 {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[2][1]'],
962 'idle_timeout': '0'}], # STEP 4
963 ['vswitch', 'add_flow', 'int_br0',
964 {'in_port': '#STEP[3][1]', 'actions': ['output:#STEP[1][1]'],
965 'idle_timeout': '0'}], # STEP 5
966 ['vnf', 'start'], # STEP 6
967 ['settings', 'getValue', 'TRAFFICGEN_IXIA_PORT1'], # STEP 7
968 ['settings', 'setValue', 'TRAFFICGEN_IXIA_PORT2', '#STEP[-1]'],
969 ['trafficgen', 'send_traffic', {}],
970 ['vswitch', 'dump_flows', 'int_br0'],
971 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
972 ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[3][1]'}],
973 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
974 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
975 ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'],
976 ['vswitch', 'del_switch', 'int_br0'],
980 # VPP tests used by VERIFY and MERGE jobs by OPNFV Jenkins
983 "Name": "vswitch_vports_add_del_connection_vpp",
984 "Deployment": "clean",
985 "Description": "VPP: vSwitch - configure switch with vports, add and delete connection",
987 ['vswitch', 'add_switch', 'int_br0'],
988 ['vswitch', 'add_vport', 'int_br0'],
989 ['vswitch', 'add_vport', 'int_br0'],
990 ['vswitch', 'add_connection', 'int_br0', '#STEP[1][0]', '#STEP[2][0]', True],
991 ['vswitch', 'dump_connections', 'int_br0'],
992 ['vswitch', 'del_connection', 'int_br0', '#STEP[1][0]', '#STEP[2][0]', True],
993 ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
994 ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
995 ['vswitch', 'del_switch', 'int_br0'],
999 # END of VPP tests used by VERIFY and MERGE jobs by OPNFV Jenkins
1003 # Example of TC definition with exact vSwitch, VNF and TRAFFICGEN values.
1005 # "Name": "ovs_vanilla_linux_bridge_pvp_cont",
1006 # "Deployment": "clean",
1007 # "Description": "vSwitch - configure OVS Vanilla, QemuVirtioNet with linux bridge and execute continuous stream test",
1008 # "vSwitch" : "OvsVanilla",
1009 # "VNF" : "QemuVirtioNet",
1010 # "Trafficgen": "IxNet",
1011 # "Parameters": {"GUEST_LOOPBACK" : ["linux_bridge"],},
1012 # "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
1015 # ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
1018 # STEP_VSWITCH_PVP_FLOWS_FINIT