-# Copyright 2015-2016 Intel Corporation.
+# Copyright 2015-2018 Intel Corporation, Tieto and others.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# See the License for the specific language governing permissions and
# limitations under the License.
-# The 1st value of SUPPORTED_TUNNELING_PROTO is used as the default
-# tunneling protocol for OP2P tests.
-SUPPORTED_TUNNELING_PROTO = ['vxlan', 'gre', 'geneve']
-
#
# Generic test configuration options are described at conf/01_testcases.conf
#
#
# Required for OP2P tests
# "Tunnel Type": ["vxlan"|"gre"|"geneve"] # Tunnel Type defines tunneling protocol to use.
-# # It can be overridden by cli option tunnel_type.
+# # It can be overridden by cli option TUNNEL_TYPE.
# # Values:
# # "vxlan" - iteration of destination MAC address
# # "gre" - iteration of destination IP address
# # "geneve" - iteration of destination UDP port
# # Default value is "vxlan".
#
-# biDirectional testing for OP2P is not yet supported.
-# biDirectional must be set to False.
-#
-# "TestSteps": [] # Definition of integration test steps.
-# # In case that this list is defined, then
-# # vsperf will execute defined test steps
-# # one by one. It can be used to configure
-# # vswitch, insert flows and transmit traffic.
-# # It is possible to refer to result of any
-# # previous step through #STEP[i][j] macro.
-# # Where i is a number of step (starts from 0)
-# # and j is index of result returned by step i.
+# bidirectional testing for OP2P is not yet supported.
+# TRAFFIC['bidir'] must be set to 'False'.
#
# Common TestSteps parts ("macros")
#
# P2P macros
-STEP_VSWITCH_P2P_FLOWS_INIT = [
+STEP_VSWITCH_P2P_INIT = [
['vswitch', 'add_switch', 'int_br0'], # STEP 0
['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
['vswitch', 'add_phy_port', 'int_br0'], # STEP 2
+]
+
+STEP_VSWITCH_P2P_FINIT = [
+ ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
+ ['vswitch', 'del_switch', 'int_br0'],
+]
+
+STEP_VSWITCH_P2P_FLOWS_INIT = STEP_VSWITCH_P2P_INIT + [
['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[2][1]', 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}],
]
['vswitch', 'dump_flows', 'int_br0'],
['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[2][1]'}],
- ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
- ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
- ['vswitch', 'del_switch', 'int_br0'],
-]
+] + STEP_VSWITCH_P2P_FINIT
# PVP and PVVP macros
-STEP_VSWITCH_PVP_INIT = [
- ['vswitch', 'add_switch', 'int_br0'], # STEP 0
- ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
- ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2
+STEP_VSWITCH_PVP_INIT = STEP_VSWITCH_P2P_INIT + [
['vswitch', 'add_vport', 'int_br0'], # STEP 3 vm1 ports
['vswitch', 'add_vport', 'int_br0'], # STEP 4
]
STEP_VSWITCH_PVP_FINIT = [
- ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
- ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
- ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'], # vm1 ports
['vswitch', 'del_port', 'int_br0', '#STEP[4][0]'],
- ['vswitch', 'del_switch', 'int_br0'],
-]
+] + STEP_VSWITCH_P2P_FINIT
STEP_VSWITCH_PVP_FLOWS_INIT = STEP_VSWITCH_PVP_INIT + [
['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[3][1]'}],
] + STEP_VSWITCH_PVVP_FINIT
-STEP_VSWITCH_2PHY_2VM_INIT = STEP_VSWITCH_PVVP_INIT
-
-STEP_VSWITCH_2PHY_2VM_FINIT = STEP_VSWITCH_PVVP_FINIT
-
-STEP_VSWITCH_2_PARALLEL_VM_FLOWS_INIT = [
- # Setup Flows to reply ICMPv6 and similar packets, so to
- # avoid flooding the internal port with their re-transmissions
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:01', \
- 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:02', \
- 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:03', \
- 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:04', \
- 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}],
- # Forward UDP packets depending on dest port
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
- 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '0', \
- 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
- 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '1', \
- 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
- # Send VM outputs to phy port #2
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', \
- 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[6][1]', \
- 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
-]
-
-STEP_VSWITCH_2PHY_4VM_INIT = STEP_VSWITCH_2PHY_2VM_INIT + [
- ['vswitch', 'add_vport', 'int_br0'], # STEP 7 vm3 ports
- ['vswitch', 'add_vport', 'int_br0'], # STEP 8
- ['vswitch', 'add_vport', 'int_br0'], # STEP 9 vm4 ports
- ['vswitch', 'add_vport', 'int_br0'], # STEP 10
-]
-
-STEP_VSWITCH_2PHY_4VM_FINIT = [
- ['vswitch', 'del_port', 'int_br0', '#STEP[7][0]'], # vm3 ports
- ['vswitch', 'del_port', 'int_br0', '#STEP[8][0]'],
- ['vswitch', 'del_port', 'int_br0', '#STEP[9][0]'], # vm4 ports
- ['vswitch', 'del_port', 'int_br0', '#STEP[10][0]'],
-] + STEP_VSWITCH_2PHY_2VM_FINIT
-
-STEP_VSWITCH_FLOWS_FINIT = [
- ['vswitch', 'dump_flows', 'int_br0'],
- ['vswitch', 'del_flow', 'int_br0'],
-]
-
-STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT = [
- # Setup Flows to reply ICMPv6 and similar packets, so to
- # avoid flooding the internal port with their re-transmissions
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:01', \
- 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:02', \
- 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:03', \
- 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:04', \
- 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:05', \
- 'actions': ['output:#STEP[7][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:06', \
- 'actions': ['output:#STEP[8][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:07', \
- 'actions': ['output:#STEP[9][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:08', \
- 'actions': ['output:#STEP[10][1]'], 'idle_timeout': '0'}],
- # Forward UDP packets depending on dest port
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
- 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '0', \
- 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
- 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '1', \
- 'actions': ['output:#STEP[5][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
- 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '2', \
- 'actions': ['output:#STEP[7][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
- 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '3', \
- 'actions': ['output:#STEP[9][1]'], 'idle_timeout': '0'}],
- # Send VM outputs to phy port #2
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', \
- 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[6][1]', \
- 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[8][1]', \
- 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[10][1]', \
- 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
-]
-
-STEP_VSWITCH_2PHY_6VM_INIT = STEP_VSWITCH_2PHY_4VM_INIT + [
- ['vswitch', 'add_vport', 'int_br0'], # STEP 11 vm5 vhu8
- ['vswitch', 'add_vport', 'int_br0'], # STEP 12 vhu9
- ['vswitch', 'add_vport', 'int_br0'], # STEP 13 vm6 vhu10
- ['vswitch', 'add_vport', 'int_br0'], # STEP 14 vhu11
-]
-
-STEP_VSWITCH_6_PARALLEL_VM_FLOWS_INIT = STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT + [
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:09', \
- 'actions': ['output:#STEP[11][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:0a', \
- 'actions': ['output:#STEP[12][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:0b', \
- 'actions': ['output:#STEP[13][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', \
- {'priority': '1', 'dl_src': '00:00:00:00:00:0c', \
- 'actions': ['output:#STEP[14][1]'], 'idle_timeout': '0'}],
- # Forward UDP packets depending on dest port
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
- 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '4', \
- 'actions': ['output:#STEP[11][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', \
- 'dl_type': '0x0800', 'nw_proto': '17', 'udp_dst': '5', \
- 'actions': ['output:#STEP[13][1]'], 'idle_timeout': '0'}],
- # Send VM outputs to phy port #2
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[12][1]', \
- 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
- ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[14][1]', \
- 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
-]
-
-STEP_VSWITCH_2PHY_6VM_FINIT = [
- ['vswitch', 'del_port', 'int_br0', '#STEP[11][0]'], # vm5 ports
- ['vswitch', 'del_port', 'int_br0', '#STEP[12][0]'],
- ['vswitch', 'del_port', 'int_br0', '#STEP[13][0]'], # vm6 ports
- ['vswitch', 'del_port', 'int_br0', '#STEP[14][0]'],
-] + STEP_VSWITCH_2PHY_4VM_FINIT
-
#
# Definition of integration tests
#
INTEGRATION_TESTS = [
{
"Name": "overlay_p2p_mod_tput",
- "Traffic Type": "rfc2544",
"Deployment": "ptunp",
- "biDirectional": 'True',
"Tunnel Type": "vxlan",
"Description": ("Tunneling Throughput RFC2544 Test."
"The encap and decap are performed inside the "
"virtual switch itself in each direction to avoid "
"the need of ingress overlay traffic."),
+ "Parameters": {
+ "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_throughput",
+ "bidir" : "False",
+ },
+ },
},
{
"Name": "overlay_p2p_tput",
- "Traffic Type": "rfc2544",
"Deployment": "op2p",
- "biDirectional": 'False',
- "Tunnel Type": SUPPORTED_TUNNELING_PROTO[0],
"Tunnel Operation": "encapsulation",
"Description": "Overlay Encapsulation Throughput RFC2544 Test",
+ "Parameters": {
+ "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_throughput",
+ "bidir" : "False",
+ },
+ },
},
{
"Name": "overlay_p2p_cont",
- "Traffic Type": "continuous",
"Deployment": "op2p",
- "biDirectional": 'False',
- "Tunnel Type": SUPPORTED_TUNNELING_PROTO[0],
"Tunnel Operation": "encapsulation",
- "Description": "Overlay Encapsulation Continuous Stream",
+ "Description": "Overlay Encapsulation RFC2544 Continuous Stream",
+ "Parameters": {
+ "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ "bidir" : "False",
+ },
+ },
},
{
"Name": "overlay_p2p_decap_tput",
- "Traffic Type": "rfc2544",
"Deployment": "op2p",
- "biDirectional": 'False',
- "Tunnel Type": SUPPORTED_TUNNELING_PROTO[0],
"Tunnel Operation": "decapsulation",
"Description": "Overlay Decapsulation Throughput RFC2544 Test",
+ "Parameters": {
+ "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_throughput",
+ "bidir" : "False",
+ },
+ },
},
{
"Name": "overlay_p2p_decap_cont",
- "Traffic Type": "continuous",
"Deployment": "op2p",
- "biDirectional": 'False',
- "Tunnel Type": SUPPORTED_TUNNELING_PROTO[0],
"Tunnel Operation": "decapsulation",
- "Description": "Overlay Decapsulation Continuous Stream",
+ "Description": "Overlay Decapsulation RFC2544 Continuous Stream",
+ "Parameters": {
+ "TRAFFICGEN_IXNET_TCL_SCRIPT" : "ixnetrfc2544v2.tcl",
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ "bidir" : "False",
+ },
+ },
},
{
"Name": "vswitch_add_del_bridge",
['vswitch', 'del_switch', 'int_br0'],
]
},
+ {
+ "Name": "vswitch_vports_add_del_flow",
+ "Deployment": "clean",
+ "Description": "vSwitch - configure switch with vports, add and delete flow",
+ "TestSteps": [
+ ['vswitch', 'add_switch', 'int_br0'],
+ ['vswitch', 'add_vport', 'int_br0'],
+ ['vswitch', 'add_vport', 'int_br0'],
+ ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[2][1]'], 'idle_timeout': '0'}],
+ ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
+ ['vswitch', 'del_switch', 'int_br0'],
+ ]
+ },
{
"Name": "vswitch_add_del_flows",
"Deployment": "clean",
"Description": "vSwitch - configure switch and execute RFC2544 throughput test",
"TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT +
[
- ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
] +
STEP_VSWITCH_P2P_FLOWS_FINIT
},
"Description": "vSwitch - configure switch and execute RFC2544 back2back test",
"TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT +
[
- ['trafficgen', 'send_traffic', {'traffic_type' : 'back2back', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
] +
STEP_VSWITCH_P2P_FLOWS_FINIT
},
{
"Name": "vswitch_p2p_cont",
"Deployment": "clean",
- "Description": "vSwitch - configure switch and execute continuous stream test",
+ "Description": "vSwitch - configure switch and execute RFC2544 continuous stream test",
"TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT +
[
- ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
] +
STEP_VSWITCH_P2P_FLOWS_FINIT
},
] +
STEP_VSWITCH_PVP_FINIT
},
+ {
+ "Name": "vswitch_vports_pvp",
+ "Deployment": "clean",
+ "Description": "vSwitch - configure switch with vports and one vnf",
+ "TestSteps": [
+ ['vswitch', 'add_switch', 'int_br0'],
+ ['vswitch', 'add_vport', 'int_br0'],
+ ['vswitch', 'add_vport', 'int_br0'],
+ ['vnf', 'start'],
+ ['vnf', 'stop'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
+ ['vswitch', 'del_switch', 'int_br0'],
+ ]
+ },
{
"Name": "vswitch_pvp_tput",
"Deployment": "clean",
"TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
[
['vnf', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
['vnf', 'stop'],
] +
STEP_VSWITCH_PVP_FLOWS_FINIT
"TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
[
['vnf', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'back2back', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
['vnf', 'stop'],
] +
STEP_VSWITCH_PVP_FLOWS_FINIT
{
"Name": "vswitch_pvp_cont",
"Deployment": "clean",
- "Description": "vSwitch - configure switch, vnf and execute continuous stream test",
+ "Description": "vSwitch - configure switch, vnf and execute RFC2544 continuous stream test",
"TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
[
['vnf', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
['vnf', 'stop'],
] +
STEP_VSWITCH_PVP_FLOWS_FINIT
"TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
[
['vnf', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : 'True'}],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'back2back', 'bidir' : 'True'}],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
['vnf', 'stop'],
] +
STEP_VSWITCH_PVP_FLOWS_FINIT
[
['vnf1', 'start'],
['vnf2', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
['vnf1', 'stop'],
['vnf2', 'stop'],
] +
[
['vnf1', 'start'],
['vnf2', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'back2back', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
['vnf1', 'stop'],
['vnf2', 'stop'],
] +
{
"Name": "vswitch_pvvp_cont",
"Deployment": "clean",
- "Description": "vSwitch - configure switch, two chained vnfs and execute continuous stream test",
+ "Description": "vSwitch - configure switch, two chained vnfs and execute RFC2544 continuous stream test",
"TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT +
[
['vnf1', 'start'],
['vnf2', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
['vnf1', 'stop'],
['vnf2', 'stop'],
] +
[
['vnf1', 'start'],
['vnf2', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : 'True'}],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'back2back', 'bidir' : 'True'}],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back', 'bidir' : 'True'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
['vnf1', 'stop'],
['vnf2', 'stop'],
] +
STEP_VSWITCH_PVVP_FLOWS_FINIT
},
+ {
+ "Name": "vswitch_p4vp_tput",
+ "Description": "4 chained vnfs, execute RFC2544 throughput test, deployment pvvp4",
+ "Deployment": "pvvp4",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_throughput",
+ },
+ },
+ },
+ {
+ "Name": "vswitch_p4vp_back2back",
+ "Description": "4 chained vnfs, execute RFC2544 back2back test, deployment pvvp4",
+ "Deployment": "pvvp4",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_back2back",
+ },
+ },
+ },
+ {
+ "Name": "vswitch_p4vp_cont",
+ "Description": "4 chained vnfs, execute RFC2544 continuous stream test, deployment pvvp4",
+ "Deployment": "pvvp4",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ },
+ },
+ },
+ {
+ "Name": "vswitch_p4vp_all",
+ "Description": "4 chained vnfs, execute RFC2544 throughput tests, deployment pvvp4",
+ "Deployment": "pvvp4",
+ "TestSteps":
+ [
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_throughput'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_back2back'}],
+ ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous'}],
+ ]
+ },
{
# Topology: 2 Parallel PVP connections
# To run a Linux bridge as a loopback in the Guest use:
- # --test-params "guest_loopback=linux_bridge" --integration 2pvp_udp_dest_flows
+ # --test-params "GUEST_LOOPBACK=['linux_bridge']" --integration 2pvp_udp_dest_flows
+ # or add "Parameters" option to the test definition:
+ # "Parameters" : {'GUEST_LOOPBACK' : ['linux_bridge'],},
"Name": "2pvp_udp_dest_flows",
- "Description": "Continuous TC with 2 Parallel VMs, flows on UDP Dest Port",
- "Deployment": "clean",
- "Stream Type": "L4",
- "MultiStream": 2,
- "TestSteps": STEP_VSWITCH_2PHY_2VM_INIT +
- STEP_VSWITCH_2_PARALLEL_VM_FLOWS_INIT + [
- # Start 2 VMs
- ['vnf1', 'start'],
- ['vnf2', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'False'}],
- ['vnf1', 'stop'],
- ['vnf2', 'stop'],
- # Clean up
- ] + STEP_VSWITCH_FLOWS_FINIT +
- STEP_VSWITCH_2PHY_2VM_FINIT
+ "Description": "RFC2544 Continuous TC with 2 Parallel VMs, flows on UDP Dest Port, deployment pvpv2",
+ "Deployment": "pvpv2",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ },
+ },
},
{
# Topology: 4 Parallel PVP connections
# To run a Linux bridge as a loopback in the Guest use:
- # --test-params "guest_loopback=linux_bridge" --integration 4pvp_udp_dest_flows
+ # --test-params "GUEST_LOOPBACK=['linux_bridge']" --integration 4pvp_udp_dest_flows
+ # or add "Parameters" option to the test definition:
+ # "Parameters" : {'GUEST_LOOPBACK' : ['linux_bridge'],},
"Name": "4pvp_udp_dest_flows",
- "Description": "Continuous TC with 4 Parallel VMs, flows on UDP Dest Port",
- "Deployment": "clean",
- "Stream Type": "L4",
- "MultiStream": 4,
- "TestSteps": STEP_VSWITCH_2PHY_4VM_INIT +
- STEP_VSWITCH_4_PARALLEL_VM_FLOWS_INIT + [
- # Start 4 VMs
- ['vnf1', 'start'],
- ['vnf2', 'start'],
- ['vnf3', 'start'],
- ['vnf4', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'False'}],
- ['vnf1', 'stop'],
- ['vnf2', 'stop'],
- ['vnf3', 'stop'],
- ['vnf4', 'stop'],
- # Clean up
- ] + STEP_VSWITCH_FLOWS_FINIT +
- STEP_VSWITCH_2PHY_4VM_FINIT
+ "Description": "RFC2544 Continuous TC with 4 Parallel VMs, flows on UDP Dest Port, deployment pvpv4",
+ "Deployment": "pvpv4",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ },
+ },
},
{
# Topology: 6 Parallel PVP connections
# To run a Linux bridge as a loopback in the Guest use:
- # --test-params "guest_loopback=linux_bridge" --integration 6pvp_udp_dest_flows
+ # --test-params "GUEST_LOOPBACK=['linux_bridge']" --integration 6pvp_udp_dest_flows
+ # or add "Parameters" option to the test definition:
+ # "Parameters" : {'GUEST_LOOPBACK' : ['linux_bridge'],},
"Name": "6pvp_udp_dest_flows",
- "Description": "Continuous TC with 6 Parallel VMs, flows on UDP Dest Port",
- "Deployment": "clean",
- "Stream Type": "L4",
- "MultiStream": 6,
- "TestSteps": STEP_VSWITCH_2PHY_6VM_INIT +
- STEP_VSWITCH_6_PARALLEL_VM_FLOWS_INIT + [
- # Start VMs
- ['vnf1', 'start'],
- ['vnf2', 'start'],
- ['vnf3', 'start'],
- ['vnf4', 'start'],
- ['vnf5', 'start'],
- ['vnf6', 'start'],
- ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'False'}],
- ['vnf1', 'stop'],
- ['vnf2', 'stop'],
- ['vnf3', 'stop'],
- ['vnf4', 'stop'],
- ['vnf5', 'stop'],
- ['vnf6', 'stop'],
- ] + STEP_VSWITCH_FLOWS_FINIT +
- STEP_VSWITCH_2PHY_6VM_FINIT
+ "Description": "RFC2544 Continuous TC with 6 Parallel VMs, flows on UDP Dest Port, deployment pvpv6",
+ "Deployment": "pvpv6",
+ "Parameters" : {
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ },
+ },
},
{
# Testcase for verification of vHost User NUMA awareness feature
"TestSteps": STEP_VSWITCH_PVVP_INIT + # STEP 0-6
[
# check that at least 2 numa slots are available
- ['tools', 'exec', 'numactl -H', 'available: ([0-9]+)'], # STEP 7
+ ['tools', 'exec_shell', 'numactl -H', 'available: ([0-9]+)'], # STEP 7
['tools', 'assert', '#STEP[-1][0]>1'], # STEP 8
# store last 2 cores from numa slot 0
- ['tools', 'exec', 'numactl -H', 'node 0 cpus:.*\s+(\\d+) (\\d+)$'], # STEP 9
+ ['tools', 'exec_shell', 'numactl -H', 'node 0 cpus:.*\s+(\\d+) (\\d+)$'], # STEP 9
# store last 2 cores from numa slot 1
- ['tools', 'exec', 'numactl -H', 'node 1 cpus:.*\s+(\\d+) (\\d+)$'], # STEP 10
+ ['tools', 'exec_shell', 'numactl -H', 'node 1 cpus:.*\s+(\\d+) (\\d+)$'], # STEP 10
# pin VNF1 to 1st NUMA slot and VNF2 to 2nd NUMA slot
['settings', 'setValue', 'GUEST_CORE_BINDING', # STEP 11
[("#STEP[-2][0][0]", "#STEP[-2][0][1]"),
['settings', 'getValue', 'TOOLS'], # STEP 14
# check that PMD thread serving VNF1 runs at NUMA slot 0
## i.e. get numa slot ID serving dpdhvhostuser0...
- ['tools', 'exec', "sudo #STEP[-1]['ovs-appctl'] " # STEP 15
+ ['tools', 'exec_shell', "sudo #STEP[-1]['ovs-appctl'] " # STEP 15
"dpif-netdev/pmd-rxq-show | "
"sed -e '/dpdkvhostuser0/,$d' | tac",
'pmd thread numa_id ([0-9])+'
['tools', 'assert', '#STEP[-1][0]==0'], # STEP 16
# check that PMD thread serving VNF2 runs at NUMA slot 1
## i.e. get numa slot ID serving dpdhvhostuser2...
- ['tools', 'exec', "sudo #STEP[-3]['ovs-appctl'] " # STEP 17
+ ['tools', 'exec_shell', "sudo #STEP[-3]['ovs-appctl'] " # STEP 17
"dpif-netdev/pmd-rxq-show | "
"sed -e '/dpdkvhostuser2/,$d' | tac",
'pmd thread numa_id ([0-9])+'
] +
STEP_VSWITCH_PVVP_FINIT # STEP 21...
},
+ {
+ # Testcase to demonstrate 1 port connection between DUT and IXIA traffic
+ # generator. Testcase will enforce IxNet trafficgen and it will configure
+ # both ports to the value of TRAFFICGEN_IXIA_PORT1 to indicate one port
+ # connection.
+ # Please note, that it is essential to ensure that TRAFFICGEN_IXIA_PORT1
+ # is physically connected to the first NIC from WHITELIST_NICS list.
+ "Name": "ixnet_pvp_tput_1nic",
+ "Deployment": "clean",
+ "Description": "PVP Scenario with 1 port towards IXIA",
+ "Parameters" : {
+ "TRAFFICGEN" : "IxNet",
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_throughput",
+ # we are using one port, thus it's already a bidir connection
+ "bidir" : "False",
+ },
+ },
+ "TestSteps": [
+ ['vswitch', 'add_switch', 'int_br0'], # STEP 0
+ ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 2
+ ['vswitch', 'add_vport', 'int_br0'], # STEP 3
+ ['vswitch', 'add_flow', 'int_br0',
+ {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[2][1]'],
+ 'idle_timeout': '0'}], # STEP 4
+ ['vswitch', 'add_flow', 'int_br0',
+ {'in_port': '#STEP[3][1]', 'actions': ['output:#STEP[1][1]'],
+ 'idle_timeout': '0'}], # STEP 5
+ ['vnf', 'start'], # STEP 6
+ ['settings', 'getValue', 'TRAFFICGEN_IXIA_PORT1'], # STEP 7
+ ['settings', 'setValue', 'TRAFFICGEN_IXIA_PORT2', '#STEP[-1]'],
+ ['trafficgen', 'send_traffic', {}],
+ ['vswitch', 'dump_flows', 'int_br0'],
+ ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}],
+ ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[3][1]'}],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'],
+ ['vswitch', 'del_switch', 'int_br0'],
+ ]
+ },
+ #
+ # VPP tests used by VERIFY and MERGE jobs by OPNFV Jenkins
+ #
+ {
+ "Name": "vswitch_version_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: vSwitch - determine VPP version and fail if it is not possible.",
+ "vSwitch" : "VppDpdkVhost",
+ "TestSteps": [
+ ['vswitch', 'run_vppctl', ['show', 'version', 'verbose'], '|Version:\s+(v\d+\.\d+)'],
+ ['tools', 'assert', 'len(#STEP[-1][0])'],
+ ]
+ },
+ {
+ "Name": "vswitch_vports_add_del_connection_vpp",
+ "Deployment": "clean",
+ "Description": "VPP: vSwitch - configure switch with vports, add and delete connection",
+ "vSwitch" : "VppDpdkVhost",
+ "TestSteps": [
+ ['vswitch', 'add_switch', 'int_br0'],
+ ['vswitch', 'add_vport', 'int_br0'],
+ ['vswitch', 'add_vport', 'int_br0'],
+ ['vswitch', 'add_connection', 'int_br0', '#STEP[1][0]', '#STEP[2][0]', True],
+ ['vswitch', 'dump_connections', 'int_br0'],
+ ['vswitch', 'del_connection', 'int_br0', '#STEP[1][0]', '#STEP[2][0]', True],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
+ ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
+ ['vswitch', 'del_switch', 'int_br0'],
+ ]
+ },
+ #
+ # END of VPP tests used by VERIFY and MERGE jobs by OPNFV Jenkins
+ #
+
+ #
+ # Examples of functional testcases with traffic capture validation
+ #
+ # Capture Example 1 - Traffic capture inside VM (PVP scenario)
+ # This TestCase will modify VLAN ID set by the traffic generator to the new value.
+ # Correct VLAN ID settings is verified by inspection of captured frames.
+ {
+ "Name": "capture_pvp_modify_vid",
+ "Deployment": "pvp",
+ "Description": "Test and verify VLAN ID modification by Open vSwitch",
+ "Parameters" : {
+ "VSWITCH" : "OvsDpdkVhost", # works also for Vanilla OVS
+ "TRAFFICGEN_DURATION" : 5,
+ "TRAFFIC" : {
+ "traffic_type" : "rfc2544_continuous",
+ "frame_rate" : 100,
+ 'vlan': {
+ 'enabled': True,
+ 'id': 8,
+ 'priority': 1,
+ 'cfi': 0,
+ },
+ },
+ "GUEST_LOOPBACK" : ['linux_bridge'],
+ },
+ "TestSteps": [
+ # replace original flows with vlan ID modification
+ ['!vswitch', 'add_flow', '$VSWITCH_BRIDGE_NAME', {'in_port': '1', 'actions': ['mod_vlan_vid:4','output:3']}],
+ ['!vswitch', 'add_flow', '$VSWITCH_BRIDGE_NAME', {'in_port': '2', 'actions': ['mod_vlan_vid:4','output:4']}],
+ ['vswitch', 'dump_flows', '$VSWITCH_BRIDGE_NAME'],
+ # verify that received frames have modified vlan ID
+ ['VNF0', 'execute_and_wait', 'tcpdump -i eth0 -c 5 -w dump.pcap vlan 4 &'],
+ ['trafficgen', 'send_traffic',{}],
+ ['!VNF0', 'execute_and_wait', 'tcpdump -qer dump.pcap vlan 4 2>/dev/null | wc -l','|^(\d+)$'],
+ ['tools', 'assert', '#STEP[-1][0] == 5'],
+ ],
+ },
+]
+# Capture Example 2 - Setup with 2 NICs, where traffic is captured after it is
+# processed by NIC under the test (2nd NIC). See documentation for further details.
+# This TestCase will strip VLAN headers from traffic sent by the traffic generator.
+# The removal of VLAN headers is verified by inspection of captured frames.
+#
+# NOTE: This setup expects a DUT with two NICs with two ports each. First NIC is
+# connected to the traffic generator (standard VSPERF setup). Ports of a second NIC
+# are interconnected by a patch cable. PCI addresses of all four ports have to be
+# properly configured in the WHITELIST_NICS parameter.
+_CAPTURE_P2P2P_OVS_ACTION = ''
+_CAPTURE_P2P2P_SETUP = [
+ # restore original NICS configuration, so we can refer to NICS elements
+ ['settings', 'resetValue', 'WHITELIST_NICS'],
+ ['settings', 'resetValue', 'NICS'],
+ # create and configure two bridges to forward traffic through NIC under
+ # the test and back to the traffic generator
+ # 1st bridge:
+ ['vswitch', 'add_switch', '$VSWITCH_BRIDGE_NAME'],
+ ['tools', 'exec_shell', 'sudo ip addr flush dev $NICS[0]["device"]'],
+ ['tools', 'exec_shell', 'sudo ip link set dev $NICS[0]["device"] up'],
+ ['tools', 'exec_shell', '$TOOLS["ovs-vsctl"] add-port $VSWITCH_BRIDGE_NAME $NICS[0]["device"]'],
+ ['tools', 'exec_shell', 'sudo $TOOLS["bind-tool"] --bind igb_uio $NICS[3]["pci"]'],
+ ['tools', 'exec_shell', '$TOOLS["ovs-vsctl"] add-port $VSWITCH_BRIDGE_NAME dpdk0 -- '
+ 'set Interface dpdk0 type=dpdk options:dpdk-devargs=$NICS[3]["pci"]'],
+ ['tools', 'exec_shell', '$TOOLS["ovs-ofctl"] add-flow $VSWITCH_BRIDGE_NAME in_port=1,action='
+ '$_CAPTURE_P2P2P_OVS_ACTION,output:2'],
+ # 2nd bridge:
+ ['vswitch', 'add_switch', 'br1'],
+ ['tools', 'exec_shell', 'sudo ip addr flush dev $NICS[2]["device"]'],
+ ['tools', 'exec_shell', 'sudo ip link set dev $NICS[2]["device"] up'],
+ ['tools', 'exec_shell', '$TOOLS["ovs-vsctl"] add-port br1 $NICS[2]["device"]'],
+ ['tools', 'exec_shell', 'sudo ip addr flush dev $NICS[1]["device"]'],
+ ['tools', 'exec_shell', 'sudo ip link set dev $NICS[1]["device"] up'],
+ ['tools', 'exec_shell', '$TOOLS["ovs-vsctl"] add-port br1 $NICS[1]["device"]'],
+ ['vswitch', 'add_flow', 'br1', {'in_port': '1', 'actions': ['output:2']}],
+ # log flow details
+ ['vswitch', 'dump_flows', '$VSWITCH_BRIDGE_NAME'],
+ ['vswitch', 'dump_flows', 'br1'],
+]
+INTEGRATION_TESTS += [
+ {
+ "Name": "capture_p2p2p_strip_vlan_ovs",
+ "Deployment": "clean",
+ "Description": "P2P Continuous Stream",
+ "Parameters" : {
+ "_CAPTURE_P2P2P_OVS_ACTION" : 'strip_vlan',
+ "TRAFFIC" : {
+ "bidir" : "False",
+ "traffic_type" : "rfc2544_continuous",
+ "frame_rate" : 100,
+ 'l2': {
+ 'srcmac': "ca:fe:00:00:00:00",
+ 'dstmac': "00:00:00:00:00:01"
+ },
+ 'vlan': {
+ 'enabled': True,
+ 'id': 8,
+ 'priority': 1,
+ 'cfi': 0,
+ },
+ },
+ # suppress DPDK configuration, so physical interfaces are not bound to DPDK driver
+ 'WHITELIST_NICS' : [],
+ 'NICS' : [],
+ },
+ "TestSteps": _CAPTURE_P2P2P_SETUP + [
+ # capture traffic after processing by NIC under the test (after possible egress HW offloading)
+ ['tools', 'exec_shell_background', 'tcpdump -i $NICS[2]["device"] -c 5 -w capture.pcap '
+ 'ether src $TRAFFIC["l2"]["srcmac"]'],
+ ['trafficgen', 'send_traffic', {}],
+ ['vswitch', 'dump_flows', '$VSWITCH_BRIDGE_NAME'],
+ ['vswitch', 'dump_flows', 'br1'],
+ # there must be 5 captured frames...
+ ['tools', 'exec_shell', 'tcpdump -r capture.pcap | wc -l', '|^(\d+)$'],
+ ['tools', 'assert', '#STEP[-1][0] == 5'],
+ # ...but no vlan headers
+ ['tools', 'exec_shell', 'tcpdump -r capture.pcap vlan | wc -l', '|^(\d+)$'],
+ ['tools', 'assert', '#STEP[-1][0] == 0'],
+ ],
+ },
+ # Capture Example 3 - Traffic capture by traffic generator.
+ # This TestCase uses OVS flow to add VLAN tag with given ID into every
+ # frame send by traffic generator. Correct frame modificaiton is verified by
+ # inspection of packet capture received by T-Rex.
+ {
+ "Name": "capture_p2p_add_vlan_ovs_trex",
+ "Deployment": "clean",
+ "Description": "OVS: Test VLAN tag modification and verify it by traffic capture",
+ "vSwitch" : "OvsDpdkVhost", # works also for Vanilla OVS
+ "Parameters" : {
+ "TRAFFICGEN" : "Trex",
+ "TRAFFICGEN_TREX_LEARNING_MODE" : True,
+ "TRAFFIC" : {
+ "traffic_type" : "burst",
+ "frame_rate" : 100,
+ "burst_size" : 5,
+ # enable capture of five RX frames
+ 'capture': {
+ 'enabled': True,
+ 'tx_ports' : [],
+ 'rx_ports' : [1],
+ 'count' : 5,
+ },
+ },
+ },
+ "TestSteps" : STEP_VSWITCH_P2P_INIT + [
+ # replace standard L2 flows by flows, which will add VLAN tag with ID 3
+ ['!vswitch', 'add_flow', 'int_br0', {'in_port': '1', 'actions': ['mod_vlan_vid:3','output:2']}],
+ ['!vswitch', 'add_flow', 'int_br0', {'in_port': '2', 'actions': ['mod_vlan_vid:3','output:1']}],
+ ['vswitch', 'dump_flows', 'int_br0'],
+ ['trafficgen', 'send_traffic', {}],
+ ['trafficgen', 'get_results'],
+ # verify that captured frames have vlan tag with ID 3
+ ['tools', 'exec_shell', 'tcpdump -qer $RESULTS_PATH/#STEP[-1][0]["capture_rx"] vlan 3 '
+ '2>/dev/null | wc -l', '|^(\d+)$'],
+ # number of received frames with expected VLAN id must match the number of captured frames
+ ['tools', 'assert', '#STEP[-1][0] == 5'],
+ ] + STEP_VSWITCH_P2P_FINIT,
+ },
+ #
+ # End of examples of functional testcases with traffic capture validation
+ #
]
# Example of TC definition with exact vSwitch, VNF and TRAFFICGEN values.
# "vSwitch" : "OvsVanilla",
# "VNF" : "QemuVirtioNet",
# "Trafficgen": "IxNet",
-# "Parameters": {"guest_loopback" : "linux_bridge"},
+# "Parameters": {"GUEST_LOOPBACK" : ["linux_bridge"],},
# "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT +
# [
# ['vnf', 'start'],
-# ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : 'True'}],
+# ['trafficgen', 'send_traffic', {'traffic_type' : 'rfc2544_continuous', 'bidir' : 'True'}],
# ['vnf', 'stop'],
# ] +
# STEP_VSWITCH_PVP_FLOWS_FINIT