diff options
Diffstat (limited to 'conf')
-rw-r--r-- | conf/00_common.conf | 10 | ||||
-rw-r--r-- | conf/02_vswitch.conf | 7 | ||||
-rw-r--r-- | conf/03_traffic.conf | 42 | ||||
-rw-r--r-- | conf/04_vnf.conf | 27 | ||||
-rw-r--r-- | conf/05_collector.conf | 25 | ||||
-rw-r--r-- | conf/10_custom.conf | 3 | ||||
-rw-r--r-- | conf/11_openstack.conf | 43 | ||||
-rw-r--r-- | conf/12_k8s.conf | 41 | ||||
-rw-r--r-- | conf/__init__.py | 10 | ||||
-rw-r--r-- | conf/integration/01b_dpdk_regression_tests.conf | 145 | ||||
-rw-r--r-- | conf/kubernetes/01_testcases.conf | 12 |
11 files changed, 258 insertions, 107 deletions
diff --git a/conf/00_common.conf b/conf/00_common.conf index d54c8a5a..c3579014 100644 --- a/conf/00_common.conf +++ b/conf/00_common.conf @@ -98,11 +98,14 @@ SHELL_CMD = ['/bin/bash', '-c'] LOG_DIR = '/tmp' # default log for all "small" executables -LOG_FILE_DEFAULT = 'overall.log' +LOG_FILE_DEFAULT = 'vsperf-overall.log' # log file for all commands executed on host LOG_FILE_HOST_CMDS = 'host-cmds.log' +# log file prefix for infrastructure metrics +LOG_FILE_INFRA_METRICS_PFX = 'collectd_' + # ############################ # Test configuration # ############################ @@ -128,6 +131,9 @@ CUMULATIVE_PARAMS = False # For example: 'throughput_rx_mbps', 'throughput_rx_fps', 'avg_latency_ns' MATRIX_METRIC = 'throughput_rx_fps' +# OPNFVPOD specification. +OPNFVPOD = '' + # ############################ # Modules # ############################ @@ -136,7 +142,7 @@ MATRIX_METRIC = 'throughput_rx_fps' # it can be used to suppress automatic load of obsoleted or abstract modules # Example: # EXCLUDE_MODULES = ['ovs_vanilla', 'qemu_virtio_net', 'pidstat'] -EXCLUDE_MODULES = ["testcenter-rfc2544-throughput"] +EXCLUDE_MODULES = ["testcenter-rfc2544-throughput", "vsperf_controller", "vsperf_pb2", "vsperf_client", "vsperf_pb2_grpc"] # ############################ # Vsperf Internal Options diff --git a/conf/02_vswitch.conf b/conf/02_vswitch.conf index 84ef71cb..4eca1a52 100644 --- a/conf/02_vswitch.conf +++ b/conf/02_vswitch.conf @@ -115,7 +115,7 @@ PATHS['vswitch'] = { 'path': os.path.join(ROOT_DIR, 'src/vpp/vpp/build-root/install-vpp-native/vpp'), 'vpp': 'bin/vpp', 'vppctl': 'bin/vppctl', - 'vpp_plugin_path' : 'lib64/vpp_plugins', + 'vpp_plugin_path' : 'lib/vpp_plugins', }, 'bin': { 'vpp': 'vpp', @@ -224,7 +224,7 @@ OVS_ROUTING_TABLES = False ######################### # Set of arguments used for startup of VPP # NOTE: DPDK socket mem allocation is driven by parameter DPDK_SOCKET_MEM -VSWITCH_VPP_CLI_SOCK = '' +VSWITCH_VPP_CLI_SOCK = '/run/vpp/cli.sock' VSWITCH_VPP_ARGS = { 'unix' : [ 'interactive', # required by VSPERF to detect successful VPP startup @@ -236,6 +236,9 @@ VSWITCH_VPP_ARGS = { 'workers 2', 'corelist-workers 4,5', ], + 'socksvr' : [ + 'socket-name /run/vpp-api.sock', + ], } # log file for VPP diff --git a/conf/03_traffic.conf b/conf/03_traffic.conf index 597f2ceb..01747a38 100644 --- a/conf/03_traffic.conf +++ b/conf/03_traffic.conf @@ -204,6 +204,25 @@ LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log' # 'Dot1Q(prio={Dot1Q_prio}, id={Dot1Q_id}, vlan={Dot1Q_vlan})/' # 'IP(proto={IP_proto}, src={IP_dst}, dst={IP_src})/' # '{IP_PROTO}(sport={IP_PROTO_dport}, dport={IP_PROTO_sport})', +# 'latency_histogram' +# - A dictionary with definition of a latency histogram provision in results. +# 'enabled' - Specifies if the histogram provisioning is enabled or not. +# 'type' - Defines how histogram is provided. Currenty only 'Default' is defined. +# 'Default' - Default histogram as provided by the Traffic-generator. +# 'imix' - A dictionary for IMIX Specification. +# 'enabled' - Specifies if IMIX is enabled or NOT. +# 'type' - The specification type - denotes how IMIX is specified. +# Currently only 'genome' type is defined. +# Other types (ex: table-of-proportions) can be added in future. +# 'genome' - The Genome Encoding of Pkt-Sizes and Ratio for IMIX. +# The ratio is inferred from the number of particular geneome characters. +# Genome encoding is described in RFC 6985. This specification is closest +# to the method described in section 6.2 of RFC 6985. +# Ex: 'aaaaaaaddddg' denotes ratio of 7:4:1 of packets sizes 64:512:1518. +# Note: Exact-sequence is not maintained, only the ratio of packets +# is ensured. +# Data type: str +# Default Value: 'aaaaaaaddddg' TRAFFIC = { 'traffic_type' : 'rfc2544_throughput', 'frame_rate' : 100, @@ -254,7 +273,16 @@ TRAFFIC = { 'Dot1Q(prio={Dot1Q_prio}, id={Dot1Q_id}, vlan={Dot1Q_vlan})/' 'IP(proto={IP_proto}, src={IP_dst}, dst={IP_src})/' '{IP_PROTO}(sport={IP_PROTO_dport}, dport={IP_PROTO_sport})', - } + }, + 'latency_histogram': { + 'enabled': False, + 'type': 'Default', + }, + 'imix': { + 'enabled': False, + 'type': 'genome', + 'genome': 'aaaaaaaddddg', + }, } #path to traffic generators directory. @@ -444,6 +472,12 @@ TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR = "" # Print additional information to the terminal during the test TRAFFICGEN_STC_VERBOSE = "True" +# Live Results Required? +TRAFFICGEN_STC_LIVE_RESULTS = "True" + +# Live results file name +TRAFFICGEN_STC_LIVERESULTS_FILE = "stc-liveresults.dat" + # Spirent TestCenter Configuration -- END ######################################### @@ -536,12 +570,16 @@ TRAFFICGEN_TREX_PROMISCUOUS = False # side when pushing traffic. For 40G use 40000. For 25G use 25000. TRAFFICGEN_TREX_FORCE_PORT_SPEED = False TRAFFICGEN_TREX_PORT_SPEED = 10000 # 10G +TRAFFICGEN_TREX_LIVE_RESULTS = True +TRAFFICGEN_TREX_LC_FILE = "trex-liveresults-counts.dat" +TRAFFICGEN_TREX_LE_FILE = "trex-liveresults-errors.dat" + PATHS['trafficgen'] = { 'Trex': { 'type' : 'src', 'src': { - 'path': os.path.join(ROOT_DIR, 'src/trex/trex/scripts/automation/trex_control_plane/stl') + 'path': os.path.join(ROOT_DIR, 'src/trex/trex/scripts/automation/trex_control_plane/interactive') } } } diff --git a/conf/04_vnf.conf b/conf/04_vnf.conf index 234f11b6..1574ca8d 100644 --- a/conf/04_vnf.conf +++ b/conf/04_vnf.conf @@ -87,8 +87,9 @@ GUEST_TIMEOUT = [180] # Guest images may require different drive types such as ide to mount shared # locations and/or boot correctly. You can modify the types here. -GUEST_BOOT_DRIVE_TYPE = ['scsi'] -GUEST_SHARED_DRIVE_TYPE = ['scsi'] +# Default setting to ide to support qemu version 3.1.1. +GUEST_BOOT_DRIVE_TYPE = ['ide'] +GUEST_SHARED_DRIVE_TYPE = ['ide'] # guest loopback application method; supported options are: # 'testpmd' - testpmd from dpdk will be built and used @@ -130,10 +131,13 @@ GUEST_PROMPT = ['root.*#'] GUEST_NICS_NR = [2] # template for guests with 4 NICS, but only GUEST_NICS_NR NICS will be configured at runtime -GUEST_NICS = [[{'device' : 'eth0', 'mac' : '#MAC(00:00:00:00:00:01,2)', 'pci' : '00:04.0', 'ip' : '#IP(192.168.1.2,4)/24'}, - {'device' : 'eth1', 'mac' : '#MAC(00:00:00:00:00:02,2)', 'pci' : '00:05.0', 'ip' : '#IP(192.168.1.3,4)/24'}, - {'device' : 'eth2', 'mac' : '#MAC(cc:00:00:00:00:01,2)', 'pci' : '00:06.0', 'ip' : '#IP(192.168.1.4,4)/24'}, - {'device' : 'eth3', 'mac' : '#MAC(cc:00:00:00:00:02,2)', 'pci' : '00:07.0', 'ip' : '#IP(192.168.1.5,4)/24'}, +# With qemu verison 3.1.1 the PCI assignments are starting from 00.03.0. +# TODO: Need a better approach for pci configuration. Currently its based on what qemu-system-x86_64 assigns. +# One option is to use the pci configuration as one of the parameters of the qemu-system-x86_64 command. +GUEST_NICS = [[{'device' : 'eth0', 'mac' : '#MAC(00:00:00:00:00:01,2)', 'pci' : '00:03.0', 'ip' : '#IP(192.168.1.2,4)/24'}, + {'device' : 'eth1', 'mac' : '#MAC(00:00:00:00:00:02,2)', 'pci' : '00:04.0', 'ip' : '#IP(192.168.1.3,4)/24'}, + {'device' : 'eth2', 'mac' : '#MAC(cc:00:00:00:00:01,2)', 'pci' : '00:05.0', 'ip' : '#IP(192.168.1.4,4)/24'}, + {'device' : 'eth3', 'mac' : '#MAC(cc:00:00:00:00:02,2)', 'pci' : '00:06.0', 'ip' : '#IP(192.168.1.5,4)/24'}, ]] # amount of host memory allocated for each guest @@ -208,11 +212,18 @@ GUEST_BRIDGE_IP = ['#IP(1.1.1.5)/16'] # Note: Testpmd must be executed in interactive mode. It means, that # VSPERF won't work correctly if '-i' will be removed. GUEST_TESTPMD_PARAMS = ['-c 0x3 -n 4 --socket-mem 512 -- ' - '--burst=64 -i --txqflags=0xf00 ' - '--disable-hw-vlan'] + '--burst=64 -i '] # packet forwarding mode supported by testpmd; Please see DPDK documentation # for comprehensive list of modes supported by your version. # e.g. io|mac|mac_retry|macswap|flowgen|rxonly|txonly|csum|icmpecho|... # Note: Option "mac_retry" has been changed to "mac retry" since DPDK v16.07 GUEST_TESTPMD_FWD_MODE = ['csum'] + +# map queue stats to separate regs to verify MQ functionality +# setting this from testpmd command line prameters since DPDK 18.11 does not +# work as expected so we have to set this inside testpmd i.e. to set rx queue +# 2 on port 0 to mapping 5 add: "rx 0 2 5" +# Please see DPDK documentation to get more information how to set stat_qmap +# (https://doc.dpdk.org/guides/testpmd_app_ug/testpmd_funcs.html) +GUEST_QUEUE_STATS_MAPPING = [] diff --git a/conf/05_collector.conf b/conf/05_collector.conf index a1bb41f8..882ef414 100644 --- a/conf/05_collector.conf +++ b/conf/05_collector.conf @@ -55,3 +55,28 @@ COLLECTD_INTERFACE_XKEYS = ['docker', 'lo'] # Provide individual core-ids or range of core-ids. # The range is specified using '-' COLLECTD_INTELRDT_XKEYS = [ ] + +############################################### +# Multi Command Collector Configurations +############################################### +MC_COLLECTD_CSV = '/tmp/csv/' +MC_COLLECTD_CMD = '/opt/collectd/sbin/collectd' +MC_PROX_HOME = '/home/opnfv/irq/' +MC_PROX_CMD = './runrapid.py' +MC_PROX_OUT = 'RUNirq.irq.log' +MC_CRON_OUT = '/tmp/ovs-cores.log' +MC_BEAT_CFILE = '/etc/filebeat/filebeat.yml' + +############################################### +# Cadvisor Specific configuration +############################################### + +LOG_FILE_CADVISOR = 'cadvisor' +CADVISOR_STORAGE_DRIVER = 'stdout,influxdb' +# ip:port of influxdb +CADVISOR_STORAGE_HOST = '10.10.120.22:8086' +CADVISOR_DRIVER_DB = '_internal' +# names of all containers to calcualte results +#CADVISOR_CONTAINERS = ['container1name','container2name'] +CADVISOR_CONTAINERS = [] + diff --git a/conf/10_custom.conf b/conf/10_custom.conf index 0e274aab..99600966 100644 --- a/conf/10_custom.conf +++ b/conf/10_custom.conf @@ -147,6 +147,9 @@ TRAFFICGEN_TREX_VERIFICATION_MODE = False TRAFFICGEN_TREX_VERIFICATION_DURATION = 60 TRAFFICGEN_TREX_MAXIMUM_VERIFICATION_TRIALS = 10 +TRAFFICGEN_TREX_RFC2544_MAX_REPEAT = 0 +TRAFFICGEN_TREX_RFC2544_BINARY_SEARCH_LOSS_VERIFICATION = False + # TREX Configuration and Connection Info-- END #################################################### diff --git a/conf/11_openstack.conf b/conf/11_openstack.conf new file mode 100644 index 00000000..6be65228 --- /dev/null +++ b/conf/11_openstack.conf @@ -0,0 +1,43 @@ +# Copyright 2020 Spirent Communications +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file describes a list of parameters used for deploying a TGEN, +# on Openstack. + + +DEFAULT_POLLING_INTERVAL = 10 +SCENARIOS = ['templates/l2_2c_2i.yaml'] + +SCHEMA = 'templates/scenario.yaml' + +OS_AUTH_URL="http://10.10.180.21/identity" +OS_PROJECT_ID="0440a230a799460facec0d09dde64497" +OS_PROJECT_NAME="admin" +OS_USER_DOMAIN_NAME="Default" +OS_PROJECT_DOMAIN_ID="default" +OS_USERNAME="admin" +OS_PASSWORD="admin123" +OS_REGION_NAME="RegionOne" +OS_INTERFACE="public" +OS_IDENTITY_API_VERSION=3 +OS_INSECURE=False +OS_CA_CERT= 'None' + +STACK_NAME = 'testvnf_vsperf' +CLEANUP_ON_EXIT = True + +FLAVOR_NAME = 'm1.large' +IMAGE_NAME = 'bionic' +EXTERNAL_NET = 'public' +DNS_NAMESERVERS = ['8.8.8.8', '8.8.4.4'] diff --git a/conf/12_k8s.conf b/conf/12_k8s.conf new file mode 100644 index 00000000..5cfac966 --- /dev/null +++ b/conf/12_k8s.conf @@ -0,0 +1,41 @@ +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Information about the Master Node. + +POD_DIR=os.path.join(ROOT_DIR, 'pods/') +POD='Papi' + +MASTER_IP = '10.10.120.22' +MASTER_LOGIN = 'opnfv' +MASTER_PASSWD = 'opnfv' + +K8S_CONFIG_FILEPATH = '/home/opnfv/sridhar/k8sconfig' + +# Information about the Worker Node. Default is Localhost. +WORKER_IP = '10.10.120.21' +WORKER_LOGIN = 'opnfv' +WORKER_PASSWD = 'opnfv' + + +# Plugin to use. +PLUGIN = 'ovsdpdk' + +# Paths. Default location: Master Node. +NETWORK_ATTACHMENT_FILEPATH = ['/home/opnfv/sridhar/cnb/userspace/ovsdpdk/userspace-ovs-netAttach.yaml'] +POD_MANIFEST_FILEPATH = '/home/opnfv/sridhar/cnb/userspace/ovsdpdk/userspace-ovs-netapp-pod.yaml' + + +# Application pod +APP_NAME = 'l2fwd' + diff --git a/conf/__init__.py b/conf/__init__.py index 83c5475f..7f6c1912 100644 --- a/conf/__init__.py +++ b/conf/__init__.py @@ -108,6 +108,13 @@ class Settings(object): raise AttributeError("%r object has no attribute %r" % (self.__class__, attr)) + def hasValue(self, attr): + """Return true if key exists + """ + if attr in self.__dict__: + return True + return False + def __setattr__(self, name, value): """Set a value """ @@ -256,6 +263,9 @@ class Settings(object): Expand VM option with given key for given number of VMs """ tmp_value = self.getValue(key) + # skip empty/not set value + if not tmp_value: + return if isinstance(tmp_value, str): scalar = True master_value = tmp_value diff --git a/conf/integration/01b_dpdk_regression_tests.conf b/conf/integration/01b_dpdk_regression_tests.conf index abc56c28..44343d28 100644 --- a/conf/integration/01b_dpdk_regression_tests.conf +++ b/conf/integration/01b_dpdk_regression_tests.conf @@ -21,6 +21,10 @@ # Generic configuration used by OVSDPDK testcases # ############################################################ + +# required to import path to the log file +from conf import settings + _OVSDPDK_1st_PMD_CORE = 4 _OVSDPDK_2nd_PMD_CORE = 5 # calculate PMD mask from core IDs configured above @@ -32,8 +36,11 @@ _OVSDPDK_GUEST_5_CORES = [('7', '8', '9', '10', '11')] # number of queues configured in OVS and GUEST _OVSDPDK_MQ = '2' -# Path to the log file -_OVSDPDK_VSWITCH_LOG = os.path.join(LOG_DIR, LOG_FILE_VSWITCHD) +# path to the log file +_RESULTS_PATH = settings.getValue('RESULTS_PATH') +name, ext = os.path.splitext(settings.getValue('LOG_FILE_VSWITCHD')) +log_file = "{name}_{uid}{ex}".format(name=name,uid=settings.getValue('LOG_TIMESTAMP'),ex=ext) +_OVSDPDK_VSWITCH_LOG = os.path.join(_RESULTS_PATH, log_file) _OVSDPDK_HEADER_LEN = 18 # length of frame headers in bytes, it's used for calculation # of payload size, i.e. payload = frame_size - header_len @@ -172,59 +179,6 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ ['tools', 'assert', 'not len(#STEP[-1])'], ] }, - { - # Support of netdev-dpdk/detach has been removed from OVS, so testcase will fail with recent - # OVS/DPDK versions. There is an ongoing discussion about possible support of netdev-dpdk/detach - # in the future OVS versions. - # Test has been tested with: - # OVS_TAG = 03d6399e618e4136c5da0be2b6f18f0b7d75b2bb - # DPDK_TAG = v16.11 - "Name": "ovsdpdk_hotplug_detach", - "Deployment": "clean", - "Description": "Same as ovsdpdk_hotplug_attach, but delete and detach the device after the hotplug. " - "Note: Support of netdev-dpdk/detach has been removed from OVS, so testcase will fail " - "with recent OVS/DPDK versions.", - "vSwitch" : "OvsDpdkVhost", - "Parameters" : { - # suppress DPDK configuration, so physical interfaces are not bound to DPDK driver - 'WHITELIST_NICS' : [], - 'NICS' : [], - }, - "TestSteps": [ - # check if OVS supports netdev-dpdk/detach, fail otherwise - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] list-commands', '|netdev-dpdk\/detach'], - ['tools', 'assert', 'len(#STEP[-1])'], - # restore original NICS configuration, so we can use add/del_phy_port - ['settings', 'setValue', 'TEST_PARAMS', ''], - # find out which DPDK driver is being used; it should be the last configured - # DPDK module; optional path and .ko suffix must be removed - ['tools', 'eval', '\'$TOOLS["dpdk_modules"][-1]\'.split("/")[-1].split(".")[0]'], - # bind NIC to DPDK driver - ['tools', 'exec_shell', 'sudo $TOOLS["bind-tool"] --bind #STEP[-1] $NICS[0]["pci"]'], - # and check that DPDK port can be created without errors - ['vswitch', 'add_switch', 'int_br0'], - ['#port', 'vswitch', 'add_phy_port', 'int_br0'], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] show', - '|Error attaching device.*$NICS[0]["pci"]'], - ['tools', 'assert', 'not len(#STEP[-1])'], - # try to unbind port - should fail beause it is being used - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] netdev-dpdk/detach $NICS[0]["pci"] 2>&1; exit 0', - '|Device.*$NICS[0]["pci"].*is being used by interface'], - ['tools', 'assert', 'len(#STEP[-1])'], - # delete port and unbind it - should succeed - ['vswitch', 'del_port', 'int_br0', '#STEP[port][0]'], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] netdev-dpdk/detach $NICS[0]["pci"]', - '|Device.*$NICS[0]["pci"].*has been detached'], - ['tools', 'assert', 'len(#STEP[-1])'], - # try to add port again - ['vswitch', 'add_phy_port', 'int_br0'], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] show', - '|Error attaching device.*$NICS[0]["pci"]'], - # it will work because auto attach was implemented into OVS - ['tools', 'assert', 'not len(#STEP[-1])'], - ['vswitch', 'del_switch', 'int_br0'], - ] - }, ] ############################################################ @@ -410,7 +364,7 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ "VSWITCH_DPDK_MULTI_QUEUES" : _OVSDPDK_MQ, }, "TestSteps": [ - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk[01]\s+queue-id: \d+'], + ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk[01]\s+queue-id:\s+\d+'], # check that requested nr of queues was created on both NICs ['tools', 'assert', 'len(#STEP[-1])=={}'.format(int(_OVSDPDK_MQ)*2)], ] @@ -432,8 +386,10 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ }, "TestSteps": [ ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] -- set Interface dpdk0 other_config:pmd-rxq-affinity="0:{},1:{}"'.format(_OVSDPDK_1st_PMD_CORE, _OVSDPDK_1st_PMD_CORE)], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk0\s+queue-id: 0 1'], - ['tools', 'assert', 'len(#STEP[-1])==1'], + ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk0\s+queue-id:\s+0'], + ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk0\s+queue-id:\s+1'], + ['tools', 'assert', 'len(#STEP[-2])==1'], + ['tools', 'assert', 'len(#STEP[-2])==1'], ] }, { @@ -453,8 +409,8 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ }, "TestSteps": [ ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] -- set Interface dpdk0 other_config:pmd-rxq-affinity="0:{},1:{}"'.format(_OVSDPDK_1st_PMD_CORE, _OVSDPDK_2nd_PMD_CORE)], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk0\s+queue-id: 0$'], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk0\s+queue-id: 1$'], + ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk0\s+queue-id:\s+0'], + ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] dpif-netdev/pmd-rxq-show','|dpdk0\s+queue-id:\s+1'], ['tools', 'assert', 'len(#STEP[-2])==1'], ['tools', 'assert', 'len(#STEP[-2])==1'], ] @@ -475,12 +431,15 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ "TestSteps": STEP_VSWITCH_PVP_INIT + [ ['tools', 'exec_shell', "sudo $TOOLS['ovs-appctl'] dpif-netdev/pmd-rxq-show", - '|dpdkvhostuserclient0\s+queue-id: \d'], + '|dpdkvhostuserclient0\s+queue-id:\s+\d'], ['tools', 'assert', 'len(#STEP[-1])==1'], ['vnf', 'start'], ['tools', 'exec_shell', "sudo $TOOLS['ovs-appctl'] dpif-netdev/pmd-rxq-show", - '|dpdkvhostuserclient0\s+queue-id: 0 1'], - ['tools', 'assert', 'len(#STEP[-1])==1'], + '|dpdkvhostuserclient0\s+queue-id:\s+0'], + ['tools', 'exec_shell', "sudo $TOOLS['ovs-appctl'] dpif-netdev/pmd-rxq-show", + '|dpdkvhostuserclient0\s+queue-id:\s+1'], + ['tools', 'assert', 'len(#STEP[-2])==1'], + ['tools', 'assert', 'len(#STEP[-2])==1'], ['vnf', 'stop'], ] + STEP_VSWITCH_PVP_FINIT @@ -500,11 +459,12 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ "TRAFFICGEN_DURATION" : 5, "TRAFFICGEN" : "IxNet", "TRAFFIC" : { - "bidir" : "false", + "bidir" : "False", "traffic_type" : "rfc2544_continuous", "multistream" : 6, "stream_type" : "L3", "frame_rate" : 1, + "learning_frames" : False, 'l2': { 'srcmac': "00:00:07:00:0E:00", 'dstmac': "00:00:00:00:00:01" @@ -514,7 +474,7 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ 'proto': 'udp', 'srcip': '6.6.6.6', 'dstip': '1.1.1.1', - }, + } } }, "TestSteps": STEP_VSWITCH_PVP_INIT + [ @@ -525,6 +485,7 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ # so send_traffic() will end with success ['vswitch', 'add_flow', 'int_br0', {'in_port': '#STEP[2][1]', 'actions': ['output:#STEP[1][1]'], 'idle_timeout': '0'}], + ['vswitch', 'add_flow', 'int_br0', {'priority' : '0', 'actions' : ['NORMAL']}], ['vnf', 'start'], # configure two channels, so multiple cores could be used ['vnf', 'execute_and_wait', 'ethtool -L eth0 combined 2'], @@ -549,7 +510,6 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ ['vnf', 'execute_and_wait', 'route add default gw 1.1.1.5 eth0'], ['vnf', 'execute_and_wait', 'arp -s 1.1.1.5 DE:AD:BE:EF:CA:FC'], ['vnf', 'execute_and_wait', 'ip a'], - ['trafficgen', 'send_traffic',{}], # check interrupts to verify that traffic was corectly dispatched... ['#result', 'vnf', 'execute_and_wait', 'cat /proc/interrupts', @@ -580,16 +540,15 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ # there must be separate CPU for each of RX/TX queues "GUEST_SMP" : ['5'], "GUEST_TESTPMD_PARAMS" : ['-c 0x1F -n 4 --socket-mem 512 -- ' - '--burst=64 -i --txqflags=0xf00 --nb-cores=4 ' - # map queue stats to separate regs to verify MQ functionality - '--rx-queue-stats-mapping=\(0,0,0\),\(0,1,1\),\(1,0,2\),\(1,1,3\) ' - '--tx-queue-stats-mapping=\(0,0,4\),\(0,1,5\),\(1,0,6\),\(1,1,7\) ' - '--disable-hw-vlan --rxq=2 --txq=2'], + '--burst=64 -i --nb-cores=4 ' + '--rxq=2 --txq=2'], "TRAFFICGEN_DURATION" : 5, "TRAFFIC" : { "traffic_type" : "rfc2544_continuous", "multistream" : 3, "stream_type" : "L3", + "frame_rate" : 1, + "learning_frames" : False, 'l3': { 'enabled': True, 'proto': 'udp', @@ -597,12 +556,21 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ 'dstip': '1.1.1.1', }, }, + "GUEST_QUEUE_STATS_MAPPING" : ["rx 0 0 0", + "rx 0 1 1", + "rx 1 0 2", + "rx 1 1 3", + "tx 0 0 4", + "tx 0 1 5", + "tx 1 0 6", + "tx 1 1 7" + ] }, "TestSteps": STEP_VSWITCH_PVP_FLOWS_INIT + [ ['vnf', 'start'], ['tools', 'exec_shell', "sudo $TOOLS['ovs-appctl'] dpif-netdev/pmd-rxq-show", - '|dpdk\w+\s+queue-id: \d'], + '|dpdk\w+\s+queue-id:\s+\d'], # there must be two standalone queue records for every interface (2x4) ['tools', 'assert', 'len(#STEP[-1])==8'], ['trafficgen', 'send_traffic', {}], @@ -739,7 +707,7 @@ _OVSDPDK_VDEV_ADD_NULL = [ ['vswitch', 'add_switch', 'int_br0'], ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] add-port int_br0 null0 -- ' 'set Interface null0 type=dpdk options:dpdk-devargs=eth_null0'], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] show', '|dpdk-devargs=\S+eth_null0'], + ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] show', '|dpdk-devargs=eth_null0'], ['tools', 'assert', 'len(#STEP[-1])==1'], ] @@ -776,7 +744,7 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ "TestSteps": _OVSDPDK_VDEV_ADD_NULL + [ ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] del-port null0'], ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] show', - '|dpdk-devargs=\S+eth_null0'], + '|dpdk-devargs=eth_null0'], ['tools', 'assert', 'not len(#STEP[-1])'], ] }, @@ -1017,9 +985,9 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ "TestSteps": [ ['vswitch', 'add_switch', 'int_br0'], ['vswitch', 'add_phy_port', 'int_br0'], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] set Interface dpdk0 mtu_request=9710'], + ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] set Interface dpdk0 mtu_request=9702'], ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] get Interface dpdk0 mtu'], - ['tools', 'assert', 'int(#STEP[-1])==9710'], + ['tools', 'assert', 'int(#STEP[-1])==9702'], # get line number of next log file entry ['tools', 'exec_shell', 'echo $((1+`wc -l $_OVSDPDK_VSWITCH_LOG | cut -d" " -f1`))', '(\d+)'], ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] set Interface dpdk0 mtu_request=9711'], @@ -1027,7 +995,7 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ ['tools', 'exec_shell', "sed -n '#STEP[-2][0],$ p' $_OVSDPDK_VSWITCH_LOG", '|unsupported MTU 9711'], ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] get Interface dpdk0 mtu'], - ['tools', 'assert', 'int(#STEP[-1])==9710'], + ['tools', 'assert', 'int(#STEP[-1])==9702'], ] }, { @@ -1041,9 +1009,9 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ "TestSteps": [ ['vswitch', 'add_switch', 'int_br0'], ['vswitch', 'add_vport', 'int_br0'], - ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] set Interface dpdkvhostuserclient0 mtu_request=9710'], + ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] set Interface dpdkvhostuserclient0 mtu_request=9702'], ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] get Interface dpdkvhostuserclient0 mtu'], - ['tools', 'assert', 'int(#STEP[-1])==9710'], + ['tools', 'assert', 'int(#STEP[-1])==9702'], # get line number of next log file entry ['tools', 'exec_shell', 'echo $((1+`wc -l $_OVSDPDK_VSWITCH_LOG | cut -d" " -f1`))', '(\d+)'], ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] set Interface dpdkvhostuserclient0 mtu_request=9711'], @@ -1052,7 +1020,7 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ '|unsupported MTU 9711'], ['tools', 'assert', 'len(#STEP[-1])'], ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] get Interface dpdkvhostuserclient0 mtu'], - ['tools', 'assert', 'int(#STEP[-1])==9710'], + ['tools', 'assert', 'int(#STEP[-1])==9702'], ] }, { @@ -1200,8 +1168,8 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ ['trafficgen', 'get_results'], # all traffic should pass through (i.e. 0% frame loss) ['tools', 'assert', 'float(#STEP[-1][0]["frame_loss_percent"])==0'], - # set packetsize to 9019 and send traffic - ['settings', 'setValue', 'TRAFFICGEN_PKT_SIZES', (9019,)], + # set packetsize to 9702 and send traffic + ['settings', 'setValue', 'TRAFFICGEN_PKT_SIZES', (9702,)], # disable verification of send_traffic "!" prefix, otherwise vsperf # will fail when 100% packet loss is detected ['!trafficgen', 'send_traffic', {}], @@ -1244,10 +1212,6 @@ _OVSDPDK_RATE_set_rate_limiter = [ 'set Interface $_OVSDPDK_RATE_PORT$_OVSDPDK_RATE_NICID ' 'ingress_policing_burst=$_OVSDPDK_RATE_BURST ' 'ingress_policing_rate=$_OVSDPDK_RATE_RATE'], - # check vswitchd log file, that rate limiter was created - ['tools', 'exec_shell', "sed -n '#STEP[-2][0],$ p' $_OVSDPDK_VSWITCH_LOG", - '|CIR period'], - ['tools', 'assert', '("CIR period" in #STEP[-1])==$_OVSDPDK_RATE_LIMITER_CREATED'], # verify that interface has correct rate limiter configuration ['tools', 'exec_shell', 'sudo $TOOLS["ovs-vsctl"] ' 'list interface $_OVSDPDK_RATE_PORT$_OVSDPDK_RATE_NICID', @@ -1491,11 +1455,6 @@ _OVSDPDK_QOS_set_qos = [ 'other-config:cbs=$_OVSDPDK_QOS_CBS','|\w{8}-\w{4}-\w{4}-\w{4}-\w{12}'], ['tools', 'assert', 'len(#STEP[-1])==1'], - # Check the OVS logs - ['tools', 'exec_shell', "sed -n '#STEP[-3][0],$ p' $_OVSDPDK_VSWITCH_LOG", - '|CIR period'], - ['tools', 'assert', '"CIR period" in #STEP[-1]'], - # Check the QoS policy and attributes ['tools', 'exec_shell', 'sudo $TOOLS["ovs-appctl"] -t ovs-vswitchd qos/show ' '$_OVSDPDK_QOS_PORT$_OVSDPDK_QOS_NICID', '.+'], @@ -1615,7 +1574,7 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ # Check the OVS logs ['tools', 'exec_shell', "sed -n '#STEP[LOG_MARK][0],$ p' $_OVSDPDK_VSWITCH_LOG", - 'Failed to set QoS type egress-policer on port #STEP[1][0]: No such file or directory'], + 'Failed to set QoS type egress-policer on port #STEP[1][0]: Invalid argument'], ['tools', 'assert', 'len(#STEP[-1])==1'], # Check the attributes for vhost0 @@ -1645,7 +1604,7 @@ INTEGRATION_TESTS = INTEGRATION_TESTS + [ # Check the OVS logs ['tools', 'exec_shell', "sed -n '#STEP[LOG_MARK][0],$ p' $_OVSDPDK_VSWITCH_LOG", - 'Failed to set QoS type egress-policer on port #STEP[1][0]: No such file or directory'], + 'Failed to set QoS type egress-policer on port #STEP[1][0]: Invalid argument'], ['tools', 'assert', 'len(#STEP[-1])==1'], # Check the attributes for vhost0 diff --git a/conf/kubernetes/01_testcases.conf b/conf/kubernetes/01_testcases.conf new file mode 100644 index 00000000..c5b3135c --- /dev/null +++ b/conf/kubernetes/01_testcases.conf @@ -0,0 +1,12 @@ +K8SPERFORMANCE_TESTS = [ + { + "Name": "pcp_tput", + "Deployment": "p2p", + "Description": "LTD.Throughput.RFC2544.Throughput", + "Parameters" : { + "TRAFFIC" : { + "traffic_type" : "rfc2544_throughput", + }, + }, + }, +] |