From 3a535d0252be0a6fc014e654b61e06620cc615a0 Mon Sep 17 00:00:00 2001 From: Martin Klozik Date: Tue, 12 Apr 2016 12:56:27 +0100 Subject: integration: Support of PVP and PVVP integration TCs Integration TC support has been enhanced to support PVP and PVVP scenarios. Definition of integration testcases have been modified to use a sort of macros for repetitive parts. Additional improvements were introduced: * instances of testcases are created only for testcases selected for execution * new TC definition options allow to define test specific vswitch, VNF, traffic generator and test options * tests filter applied on pattern specified by --tests allows to define negative filter only; In that case list of all tests is used as base for negative filter. * traffic values defined within teststep passed to send_traffic is merged with default values; This is essential for execution of TCs with linux_bridge or SRIOV support. It also simplifies integration TC definition * typos removed Change-Id: Icb734a7afd7e5154f27a8ff25615a39e01f58c27 JIRA: VSPERF-213 JIRA: VSPERF-216 Signed-off-by: Martin Klozik Reviewed-by: Maryam Tahhan Reviewed-by: Al Morton Reviewed-by: Christian Trautman Reviewed-by: Brian Castelli --- conf/01_testcases.conf | 18 +++ conf/integration/01_testcases.conf | 320 ++++++++++++++++++++++++++++++------- 2 files changed, 280 insertions(+), 58 deletions(-) (limited to 'conf') diff --git a/conf/01_testcases.conf b/conf/01_testcases.conf index f36172df..148171fd 100755 --- a/conf/01_testcases.conf +++ b/conf/01_testcases.conf @@ -100,6 +100,24 @@ # # value will be used # "options": "" # Optional. Additional command line options # # to be passed to the load generator. +# "vSwitch" : "OvsVanilla" # Defines vSwitch to be used for test execution. +# # It will override any VSWITCH option stated +# # in configuration files or value specified +# # on command line through --vswitch parameter. +# "VNF" : "QemuVirtioNet" # Defines VNF to be used for test execution. +# # It will override any VNF option stated +# # in configuration files or value specified +# # on command line through --vnf parameter. +# "Trafficgen" : "Dummy" # Defines traffic generator to be used for test +# # execution. It will override any VNF option +# # stated in configuration files or value +# # specified on command line through --trafficgen +# # parameter. +# "Parameters" : "pkt_sizes=512" # Defines list of test parameters used for test +# # execution. It will override any values defined +# # by TEST_PARAMS option stated in configuration +# # files or values specified on command line through +# # --test-params parameter. # "Test Modifier": [FrameMod|Other], # "Dependency": [Test_Case_Name |None], diff --git a/conf/integration/01_testcases.conf b/conf/integration/01_testcases.conf index fff148d4..e9257ae0 100644 --- a/conf/integration/01_testcases.conf +++ b/conf/integration/01_testcases.conf @@ -16,6 +16,13 @@ # tunneling protocol for OP2P tests. SUPPORTED_TUNNELING_PROTO = ['vxlan', 'gre', 'geneve'] +# +# Generic test configuration options are described at conf/01_testcases.conf +# + +# +# Options specific to integration testcases are described below: +# # 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. @@ -38,6 +45,92 @@ SUPPORTED_TUNNELING_PROTO = ['vxlan', 'gre', 'geneve'] # # Where i is a number of step (starts from 0) # # and j is index of result returned by step i. +# +# Common TestSteps parts ("macros") +# + +# P2P macros +STEP_VSWITCH_P2P_FLOWS_INIT = [ + ['vswitch', 'add_switch', 'int_br0'], # STEP 0 + ['vswitch', 'add_phy_port', 'int_br0'], # STEP 1 + ['vswitch', 'add_phy_port', 'int_br0'], # STEP 2 + ['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'}], +] + +STEP_VSWITCH_P2P_FLOWS_FINIT = [ + ['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'], +] + +# 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 + ['vswitch', 'add_vport', 'int_br0'], # STEP 3 + ['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[4][0]'], + ['vswitch', 'del_switch', 'int_br0'], +] + +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', '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[2][1]', 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[3][1]', 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}], +] + +STEP_VSWITCH_PVP_FLOWS_FINIT = [ + ['vswitch', 'dump_flows', 'int_br0'], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[4][1]'}], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[2][1]'}], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[3][1]'}], +] + STEP_VSWITCH_PVP_FINIT + +STEP_VSWITCH_PVVP_INIT = STEP_VSWITCH_PVP_INIT + [ + ['vswitch', 'add_vport', 'int_br0'], # STEP 5 + ['vswitch', 'add_vport', 'int_br0'], # STEP 6 +] + +STEP_VSWITCH_PVVP_FINIT = [ + ['vswitch', 'del_port', 'int_br0', '#STEP[5][0]'], + ['vswitch', 'del_port', 'int_br0', '#STEP[6][0]'], +] + STEP_VSWITCH_PVP_FINIT + +STEP_VSWITCH_PVVP_FLOWS_INIT = STEP_VSWITCH_PVVP_INIT + [ + ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[1][1]', 'actions': ['output:#STEP[3][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[4][1]', 'actions': ['output:#STEP[5][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[2][1]', 'actions': ['output:#STEP[6][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[5][1]', 'actions': ['output:#STEP[4][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[3][1]', 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}], +] + +STEP_VSWITCH_PVVP_FLOWS_FINIT = [ + ['vswitch', 'dump_flows', 'int_br0'], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[1][1]'}], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[4][1]'}], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[6][1]'}], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[2][1]'}], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[5][1]'}], + ['vswitch', 'del_flow', 'int_br0', {'in_port': '#STEP[3][1]'}], +] + STEP_VSWITCH_PVVP_FINIT + +# +# Definition of integration tests +# INTEGRATION_TESTS = [ { "Name": "overlay_p2p_tput", @@ -162,76 +255,187 @@ INTEGRATION_TESTS = [ "Name": "vswitch_add_del_flows", "Deployment": "clean", "Description": "vSwitch - add and delete flows", - "TestSteps": [ - ['vswitch', 'add_switch', 'int_br0'], - ['vswitch', 'add_phy_port', 'int_br0'], - ['vswitch', 'add_phy_port', 'int_br0'], - ['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'], - ] + "TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT + + STEP_VSWITCH_P2P_FLOWS_FINIT }, { - "Name": "vswitch_throughput", + "Name": "vswitch_p2p_tput", "Deployment": "clean", "Description": "vSwitch - configure switch and execute RFC2544 throughput test", - "TestSteps": [ - ['vswitch', 'add_switch', 'int_br0'], - ['vswitch', 'add_phy_port', 'int_br0'], - ['vswitch', 'add_phy_port', 'int_br0'], - ['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'}], - ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : True, 'frame_rate' : 100, 'multistream' : 0, 'stream_type' : 'L4'}], - ['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'], - ] + "TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT + + [ + ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : True}], + ] + + STEP_VSWITCH_P2P_FLOWS_FINIT }, { - "Name": "vswitch_back2back", + "Name": "vswitch_p2p_back2back", "Deployment": "clean", "Description": "vSwitch - configure switch and execute RFC2544 back2back test", - "TestSteps": [ - ['vswitch', 'add_switch', 'int_br0'], - ['vswitch', 'add_phy_port', 'int_br0'], - ['vswitch', 'add_phy_port', 'int_br0'], - ['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'}], - ['trafficgen', 'send_traffic', {'traffic_type' : 'back2back', 'bidir' : True, 'frame_rate' : 100, 'multistream' : 0, 'stream_type' : 'L4'}], - ['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'], - ] + "TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT + + [ + ['trafficgen', 'send_traffic', {'traffic_type' : 'back2back', 'bidir' : True}], + ] + + STEP_VSWITCH_P2P_FLOWS_FINIT }, { - "Name": "vswitch_continuous", + "Name": "vswitch_p2p_cont", "Deployment": "clean", "Description": "vSwitch - configure switch and execute continuous stream test", - "TestSteps": [ - ['vswitch', 'add_switch', 'int_br0'], - ['vswitch', 'add_phy_port', 'int_br0'], - ['vswitch', 'add_phy_port', 'int_br0'], - ['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'}], - ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : True, 'frame_rate' : 100, 'multistream' : 0, 'stream_type' : 'L4'}], - ['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'], - ] + "TestSteps": STEP_VSWITCH_P2P_FLOWS_INIT + + [ + ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : True}], + ] + + STEP_VSWITCH_P2P_FLOWS_FINIT + }, + { + "Name": "vswitch_pvp", + "Deployment": "clean", + "Description": "vSwitch - configure switch and one vnf", + "TestSteps": STEP_VSWITCH_PVP_INIT + + [ + ['vnf', 'start'], + ['vnf', 'stop'], + ] + + STEP_VSWITCH_PVP_FINIT + }, + { + "Name": "vswitch_pvp_tput", + "Deployment": "clean", + "Description": "vSwitch - configure switch, vnf and execute RFC2544 throughput test", + "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT + + [ + ['vnf', 'start'], + ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : True}], + ['vnf', 'stop'], + ] + + STEP_VSWITCH_PVP_FLOWS_FINIT + }, + { + "Name": "vswitch_pvp_back2back", + "Deployment": "clean", + "Description": "vSwitch - configure switch, vnf and execute RFC2544 back2back test", + "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT + + [ + ['vnf', 'start'], + ['trafficgen', 'send_traffic', {'traffic_type' : '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", + "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT + + [ + ['vnf', 'start'], + ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : True}], + ['vnf', 'stop'], + ] + + STEP_VSWITCH_PVP_FLOWS_FINIT + }, + { + "Name": "vswitch_pvp_all", + "Deployment": "clean", + "Description": "vSwitch - configure switch, vnf and execute all test types", + "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}], + ['vnf', 'stop'], + ] + + STEP_VSWITCH_PVP_FLOWS_FINIT + }, + { + "Name": "vswitch_pvvp", + "Deployment": "clean", + "Description": "vSwitch - configure switch and two vnfs", + "TestSteps": STEP_VSWITCH_PVVP_INIT + + [ + ['vnf1', 'start'], + ['vnf2', 'start'], + ['vnf1', 'stop'], + ['vnf2', 'stop'], + ] + + STEP_VSWITCH_PVVP_FINIT + }, + { + "Name": "vswitch_pvvp_tput", + "Deployment": "clean", + "Description": "vSwitch - configure switch, two chained vnfs and execute RFC2544 throughput test", + "TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT + + [ + ['vnf1', 'start'], + ['vnf2', 'start'], + ['trafficgen', 'send_traffic', {'traffic_type' : 'throughput', 'bidir' : True}], + ['vnf1', 'stop'], + ['vnf2', 'stop'], + ] + + STEP_VSWITCH_PVVP_FLOWS_FINIT + }, + { + "Name": "vswitch_pvvp_back2back", + "Deployment": "clean", + "Description": "vSwitch - configure switch, two chained vnfs and execute RFC2544 back2back test", + "TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT + + [ + ['vnf1', 'start'], + ['vnf2', 'start'], + ['trafficgen', 'send_traffic', {'traffic_type' : 'back2back', 'bidir' : True}], + ['vnf1', 'stop'], + ['vnf2', 'stop'], + ] + + STEP_VSWITCH_PVVP_FLOWS_FINIT + }, + { + "Name": "vswitch_pvvp_cont", + "Deployment": "clean", + "Description": "vSwitch - configure switch, two chained vnfs and execute continuous stream test", + "TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT + + [ + ['vnf1', 'start'], + ['vnf2', 'start'], + ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : True}], + ['vnf1', 'stop'], + ['vnf2', 'stop'], + ] + + STEP_VSWITCH_PVVP_FLOWS_FINIT + }, + { + "Name": "vswitch_pvvp_all", + "Deployment": "clean", + "Description": "vSwitch - configure switch, two chained vnfs and execute all test types", + "TestSteps": STEP_VSWITCH_PVVP_FLOWS_INIT + + [ + ['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}], + ['vnf1', 'stop'], + ['vnf2', 'stop'], + ] + + STEP_VSWITCH_PVVP_FLOWS_FINIT }, ] +# Example of TC definition with exact vSwitch, VNF and TRAFFICGEN values. +# { +# "Name": "ovs_vanilla_linux_bridge_pvp_cont", +# "Deployment": "clean", +# "Description": "vSwitch - configure OVS Vanilla, QemuVirtioNet with linux bridge and execute continuous stream test", +# "vSwitch" : "OvsVanilla", +# "VNF" : "QemuVirtioNet", +# "Trafficgen": "IxNet", +# "Test Parameters": {"guest_loopback" : "linux_bridge"}, +# "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT + +# [ +# ['vnf', 'start'], +# ['trafficgen', 'send_traffic', {'traffic_type' : 'continuous', 'bidir' : True}], +# ['vnf', 'stop'], +# ] + +# STEP_VSWITCH_PVP_FLOWS_FINIT +# }, -- cgit 1.2.3-korg