diff options
-rwxr-xr-x | ci/build-vsperf.sh | 12 | ||||
-rw-r--r-- | conf/02_vswitch.conf | 8 | ||||
-rwxr-xr-x | docs/configguide/installation.rst | 10 | ||||
-rw-r--r-- | fuel-plugin-vsperf/metadata.yaml | 6 | ||||
-rw-r--r-- | src/dpdk/dpdk.py | 8 | ||||
-rwxr-xr-x | systems/rhel/7.2/build_base_machine.sh | 24 | ||||
-rwxr-xr-x | systems/rhel/7.2/prepare_python_env.sh | 17 | ||||
-rw-r--r-- | testcases/integration.py | 9 | ||||
-rw-r--r-- | testcases/testcase.py | 13 | ||||
-rw-r--r-- | tools/report/report.jinja | 1 |
10 files changed, 49 insertions, 59 deletions
diff --git a/ci/build-vsperf.sh b/ci/build-vsperf.sh index 38fda03b..4d6acf70 100755 --- a/ci/build-vsperf.sh +++ b/ci/build-vsperf.sh @@ -43,10 +43,10 @@ VSPERFENV_DIR="$HOME/vsperfenv" # CI job specific configuration # VERIFY - run basic set of TCs with default settings TESTCASES_VERIFY="vswitch_add_del_bridge vswitch_add_del_bridges vswitch_add_del_vport vswitch_add_del_vports vswitch_vports_add_del_flow" -TESTPARAM_VERIFY="--integration" +TESTPARAM_VERIFY="--integration --test-params HUGEPAGE_RAM_ALLOCATION=2097152" # MERGE - run selected TCs with default settings TESTCASES_MERGE="vswitch_add_del_bridge vswitch_add_del_bridges vswitch_add_del_vport vswitch_add_del_vports vswitch_vports_add_del_flow" -TESTPARAM_MERGE="--integration" +TESTPARAM_MERGE="--integration --test-params HUGEPAGE_RAM_ALLOCATION=2097152" # DAILY - run selected TCs for defined packet sizes TESTCASES_DAILY='phy2phy_tput back2back phy2phy_tput_mod_vlan phy2phy_scalability pvp_tput pvp_back2back pvvp_tput pvvp_back2back' TESTPARAM_DAILY='--test-params TRAFFICGEN_PKT_SIZES=(64,128,512,1024,1518)' @@ -67,7 +67,7 @@ TEST_REPORT_PARTIAL="*_test_report.rst" TEST_REPORT_DIR="${WORKSPACE}/docs/results" TEST_REPORT_INDEX="${TEST_REPORT_DIR}/index.rst" TEST_REPORT_LINK_OLD="https://wiki.opnfv.org/wiki/vsperf_results" -TEST_REPORT_FILE="${WORKSPACE}/docs_output/results/results.pdf" +TEST_REPORT_FILE="${WORKSPACE}/docs_output/results/index.html" TEST_REPORT_TARBALL="vswitchperf_logs_${DATE}.tar.gz" if [[ "x${BRANCH}" == "xmaster" ]]; then @@ -239,9 +239,9 @@ function generate_report() { sed -ie 's,python ,python2 ,g' ./opnfvdocs/scripts/docs-build.sh OPNFVDOCS_DIR='./opnfvdocs' ./opnfvdocs/scripts/docs-build.sh &> /dev/null - # store PDF with test results into dedicated directory + # store HTML report with test results into dedicated directory if [ -f $TEST_REPORT_FILE ] ; then - cp -a $TEST_REPORT_FILE $TEST_REPORT_LOG_DIR + cp -ar $TEST_REPORT_FILE $(dirname $TEST_REPORT_FILE)/_static $TEST_REPORT_LOG_DIR echo "Final test report has been created." else echo "FAILURE: Generation of final test report has failed." @@ -319,7 +319,7 @@ function dependencies_check() { if [ $ID == "ubuntu" ] ; then echo "Dependencies check" echo "==================" - for PACKAGE in "python3-tk" ; do + for PACKAGE in "python3-tk" "sysstat" ; do if dpkg -s $PACKAGE &> /dev/null ; then printf " %-70s %-6s\n" $PACKAGE "OK" else diff --git a/conf/02_vswitch.conf b/conf/02_vswitch.conf index f9b8f957..2b74dae9 100644 --- a/conf/02_vswitch.conf +++ b/conf/02_vswitch.conf @@ -23,11 +23,15 @@ OVS_CMD_TIMEOUT = 10 RTE_TARGET = 'x86_64-native-linuxapp-gcc' # list of NIC HWIDs to which traffic generator is connected -# In case of NIC with SRIOV suport, it is possible to define, +# e.g. WHITELIST_NICS = ['05:00.0', '05:00.1'] +# NIC HWIDs for given network device name can be retrieved +# by call of ehtool: +# e.g. ethtool -i eth0 +# In case of NIC with SRIOV support, it is possible to define, # which virtual function should be used # e.g. value '0000:05:00.0|vf1' will configure two VFs and second VF # will be used for testing -WHITELIST_NICS = ['0000:05:00.0', '0000:05:00.1'] +WHITELIST_NICS = [] # vhost character device file used by dpdkvhostport QemuWrap cases VHOST_DEV_FILE = 'ovs-vhost-net' diff --git a/docs/configguide/installation.rst b/docs/configguide/installation.rst index 2f3faaeb..7ba64bba 100755 --- a/docs/configguide/installation.rst +++ b/docs/configguide/installation.rst @@ -13,7 +13,7 @@ Supported Operating Systems * Fedora 20 * Fedora 21 * Fedora 22 -* RedHat 7.2 +* RedHat 7.2 Enterprise * Ubuntu 14.04 Supported vSwitches @@ -99,8 +99,8 @@ reside in a directory called **vsperfenv** in $HOME. You will need to activate the virtual environment every time you start a new shell session. Its activation is specific to your OS: -CentOS 7 -======== +CentOS 7 and RedHat +=================== .. code:: bash @@ -108,8 +108,8 @@ CentOS 7 $ cd $HOME/vsperfenv $ source bin/activate -Fedora, RedHat and Ubuntu -========================= +Fedora and Ubuntu +================= .. code:: bash diff --git a/fuel-plugin-vsperf/metadata.yaml b/fuel-plugin-vsperf/metadata.yaml index 2b28fc58..cf64e292 100644 --- a/fuel-plugin-vsperf/metadata.yaml +++ b/fuel-plugin-vsperf/metadata.yaml @@ -3,11 +3,11 @@ name: fuel-plugin-vsperf # Human-readable name for your plugin title: Enable VSPERF plugin # Plugin version -version: '1.0.9' +version: '1.0.10' # Description description: Deploy VSPERF code # Required fuel version -fuel_version: ['9.0'] +fuel_version: ['10.0'] # Specify license of your plugin licenses: ['Apache License Version 2.0'] # Specify author or company name @@ -21,7 +21,7 @@ groups: ['network'] # The plugin is compatible with releases in the list releases: - os: ubuntu - version: mitaka-9.0 + version: newton-10.0 mode: ['ha'] deployment_scripts_path: deployment_scripts/ repository_path: repositories/ubuntu diff --git a/src/dpdk/dpdk.py b/src/dpdk/dpdk.py index 16223915..0c5ed9f4 100644 --- a/src/dpdk/dpdk.py +++ b/src/dpdk/dpdk.py @@ -139,6 +139,9 @@ def _vhost_user_cleanup(): def _bind_nics(): """Bind NICs using the Intel DPDK ``dpdk*bind.py`` tool. """ + if not len(_NICS_PCI): + _LOGGER.info('NICs are not configured - nothing to bind') + return try: _driver = 'igb_uio' if 'vfio-pci' in S.getValue('TOOLS')['dpdk_modules']: @@ -151,7 +154,7 @@ def _bind_nics(): True) tasks.run_task(['sudo', S.getValue('TOOLS')['bind-tool'], - '--bind=' + _driver] + + '--bind=' + _driver] + _NICS_PCI, _LOGGER, 'Binding NICs %s...' % _NICS_PCI, True) @@ -161,6 +164,9 @@ def _bind_nics(): def _unbind_nics(): """Unbind NICs using the Intel DPDK ``dpdk*bind.py`` tool. """ + if not len(_NICS_PCI): + _LOGGER.info('NICs are not configured - nothing to unbind') + return try: tasks.run_task(['sudo', S.getValue('TOOLS')['bind-tool'], '--unbind'] + _NICS_PCI, _LOGGER, diff --git a/systems/rhel/7.2/build_base_machine.sh b/systems/rhel/7.2/build_base_machine.sh index 2319535b..d57cf9c0 100755 --- a/systems/rhel/7.2/build_base_machine.sh +++ b/systems/rhel/7.2/build_base_machine.sh @@ -78,23 +78,15 @@ if [ "${#failedinstall[*]}" -gt 0 ]; then exit 1 fi -# python34 is not yet available to Red Hat customers so we will just build -# it as an alternate install in usr/local for use with VSPerf. This prevents -# any functionality issues with pre-installed packages using python. -wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tar.xz -tar -xf Python-3.4.2.tar.xz -cd Python-3.4.2 -./configure -make -make altinstall -cd .. +# install SCL for python33 +wget https://www.softwarecollections.org/en/scls/rhscl/python33/epel-7-x86_64/download/rhscl-python33-epel-7-x86_64.noarch.rpm +rpm -i rhscl-python33-epel-7-x86_64.noarch.rpm -# cleanup -rm -Rf Python-3.4.2 -rm -f Python-3.4.2.tar.xz - -# need virtualenv -pip3.4 install virtualenv +# install python33 packages and git-review tool +yum -y install $(echo " +python33 +python33-python-tkinter +" | grep -v ^#) # Create hugepage dirs mkdir -p /dev/hugepages diff --git a/systems/rhel/7.2/prepare_python_env.sh b/systems/rhel/7.2/prepare_python_env.sh index 1d51380a..bd468d80 100755 --- a/systems/rhel/7.2/prepare_python_env.sh +++ b/systems/rhel/7.2/prepare_python_env.sh @@ -17,18 +17,13 @@ # limitations under the License. if [ -d "$VSPERFENV_DIR" ] ; then - echo "Directory $VSPERFENV_DIR already exists. Skipping python virtualenv \ -creation." + echo "Directory $VSPERFENV_DIR already exists. Skipping python virtualenv creation." exit fi -# enable virtual environment in a subshell, so QEMU build can use python 2.7 -# Also make sure we know which virtualenv was installed. I've seen the file -# name change pending on what type of installation was done. -virtualenv_file=$(ls /usr/local/bin | awk '/virtualenv/') - -($virtualenv_file "$VSPERFENV_DIR" +scl enable python33 " +virtualenv "$VSPERFENV_DIR" source "$VSPERFENV_DIR"/bin/activate -pip3.4 install -r ../requirements.txt -pip3.4 install pylint -)
\ No newline at end of file +pip install -r ../requirements.txt +pip install pylint +"
\ No newline at end of file diff --git a/testcases/integration.py b/testcases/integration.py index 4b9dacfd..f2a5fecf 100644 --- a/testcases/integration.py +++ b/testcases/integration.py @@ -14,19 +14,10 @@ """IntegrationTestCase class """ -import os -import time import logging -import copy -import re from collections import OrderedDict from testcases import TestCase -from conf import settings as S -from tools import namespace -from tools import veth -from tools.teststepstools import TestStepsTools -from core.loader import Loader class IntegrationTestCase(TestCase): """IntegrationTestCase class diff --git a/testcases/testcase.py b/testcases/testcase.py index 01a07391..18ad4240 100644 --- a/testcases/testcase.py +++ b/testcases/testcase.py @@ -32,6 +32,9 @@ from core.results.results_constants import ResultsConstants from tools import tasks from tools import hugepages from tools import functions +from tools import namespace +from tools import veth +from tools.teststepstools import TestStepsTools from tools.pkt_gen.trafficgen.trafficgenhelper import TRAFFIC_DEFAULTS CHECK_PREFIX = 'validate_' @@ -176,7 +179,9 @@ class TestCase(object): self._traffic['l2'] = S.getValue(self._tunnel_type.upper() + '_FRAME_L2') self._traffic['l3'] = S.getValue(self._tunnel_type.upper() + '_FRAME_L3') self._traffic['l4'] = S.getValue(self._tunnel_type.upper() + '_FRAME_L4') - elif S.getValue('NICS')[0]['type'] == 'vf' or S.getValue('NICS')[1]['type'] == 'vf': + elif len(S.getValue('NICS')) and \ + (S.getValue('NICS')[0]['type'] == 'vf' or + S.getValue('NICS')[1]['type'] == 'vf'): mac1 = S.getValue('NICS')[0]['mac'] mac2 = S.getValue('NICS')[1]['mac'] if mac1 and mac2: @@ -278,22 +283,20 @@ class TestCase(object): # cleanup any namespaces created if os.path.isdir('/tmp/namespaces'): - import tools.namespace namespace_list = os.listdir('/tmp/namespaces') if len(namespace_list): self._logger.info('Cleaning up namespaces') for name in namespace_list: - tools.namespace.delete_namespace(name) + namespace.delete_namespace(name) os.rmdir('/tmp/namespaces') # cleanup any veth ports created if os.path.isdir('/tmp/veth'): - import tools.veth veth_list = os.listdir('/tmp/veth') if len(veth_list): self._logger.info('Cleaning up veth ports') for eth in veth_list: port1, port2 = eth.split('-') - tools.veth.del_veth_port(port1, port2) + veth.del_veth_port(port1, port2) os.rmdir('/tmp/veth') def run_report(self): diff --git a/tools/report/report.jinja b/tools/report/report.jinja index 8354835c..c9588565 100644 --- a/tools/report/report.jinja +++ b/tools/report/report.jinja @@ -138,7 +138,6 @@ The following are the metrics obtained during this test: The following system statistics were collected during testcase execution: {% for process in test.stats %} -| --------------------------------------------------------------- | | Process: {{ "%-54s |"|format('_'.join(process.split('_')[:-1])) }} | ------------------------------ | ------------------------------ | | Statistic | Value | |