aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Klozik <martinx.klozik@intel.com>2016-11-21 13:59:09 +0000
committerMartin Klozik <martinx.klozik@intel.com>2016-11-21 14:07:40 +0000
commit221038f0517719d898b5f9f3173eabfe9aba560a (patch)
treebd0365c48599b089a01082a866f89841426a98f5
parent1356d7c2bccabdd6239d1ae8628f869556ed2938 (diff)
ci: Decrease hugepages size for VERIFY&MERGE jobs
VSPERF by default requires allocation of hugepages with total size of 10GB. However for MERGE and VERIFY jobs less memory is required and default size of 10GB can cause issues. Thus amount of memory was limited and other minor enhancements were introduced: * sysstat system package is installed at nodes running VERIFY and MERGE jobs * WHITELIST_NICS was set to empty list by default to avoid automatic bind of NICs to DPDK. Old default value could cut off network connection to DUT. * imports were fixed at both integration.py and testcase.py JIRA: VSPERF-391 Change-Id: Ic07d68f4591ae697c1b8edeae6c0cffe47c065ce Signed-off-by: Martin Klozik <martinx.klozik@intel.com> Reviewed-by: Al Morton <acmorton@att.com> Reviewed-by: Christian Trautman <ctrautma@redhat.com> Reviewed-by: Bill Michalowski <bmichalo@redhat.com> Reviewed-by: Antonio Fischetti <antonio.fischetti@intel.com>
-rwxr-xr-xci/build-vsperf.sh6
-rw-r--r--conf/02_vswitch.conf8
-rw-r--r--src/dpdk/dpdk.py8
-rw-r--r--testcases/integration.py9
-rw-r--r--testcases/testcase.py13
5 files changed, 24 insertions, 20 deletions
diff --git a/ci/build-vsperf.sh b/ci/build-vsperf.sh
index 38fda03b..16e4625e 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)'
@@ -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/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/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):