summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--conf/03_traffic.conf5
-rw-r--r--conf/10_custom.conf5
-rw-r--r--docs/testing/user/configguide/installation.rst1
-rw-r--r--docs/testing/user/configguide/trafficgen.rst9
-rwxr-xr-xsystems/centos/prepare_python_env.sh4
-rw-r--r--systems/fedora/24/prepare_python_env.sh2
-rw-r--r--systems/fedora/25/prepare_python_env.sh2
-rw-r--r--systems/fedora/26/prepare_python_env.sh2
-rwxr-xr-xsystems/opensuse/42.2/prepare_python_env.sh2
-rwxr-xr-xsystems/opensuse/42.3/prepare_python_env.sh2
-rwxr-xr-xsystems/opensuse/build_base_machine.sh95
-rwxr-xr-xsystems/opensuse/prepare_python_env.sh28
-rwxr-xr-xsystems/rhel/7.2/prepare_python_env.sh4
-rwxr-xr-xsystems/rhel/7.3/prepare_python_env.sh4
-rwxr-xr-xsystems/ubuntu/14.04/prepare_python_env.sh4
-rw-r--r--tools/pkt_gen/trex/trex.py18
16 files changed, 172 insertions, 15 deletions
diff --git a/conf/03_traffic.conf b/conf/03_traffic.conf
index a88e4bcc..3833a040 100644
--- a/conf/03_traffic.conf
+++ b/conf/03_traffic.conf
@@ -454,8 +454,11 @@ TRAFFICGEN_TREX_LATENCY_PPS = 1000
# Example 10 Gbps: TRAFFICGEN_TREXINE_SPEED_GBPS = '10'
# Today only 10 Gbps is supported
TRAFFICGEN_TREX_LINE_SPEED_GBPS = '10'
+# Enable of learning packets before sending test traffic
+TRAFFICGEN_TREX_LEARNING_MODE = True
+TRAFFICGEN_TREX_LEARNING_DURATION = 5
# FOR SR-IOV or multistream layer 2 tests to work with T-Rex enable Promiscuous mode
-TRAFFICGEN_TREX_PROMISCUOUS=False
+TRAFFICGEN_TREX_PROMISCUOUS = False
PATHS['trafficgen'] = {
'Trex': {
'type' : 'src',
diff --git a/conf/10_custom.conf b/conf/10_custom.conf
index 8020bb93..1f8448b4 100644
--- a/conf/10_custom.conf
+++ b/conf/10_custom.conf
@@ -136,8 +136,11 @@ TRAFFICGEN_TREX_LATENCY_PPS = 1000
# Example 10 Gbps: TRAFFICGEN_TREXINE_SPEED_GBPS = '10'
# Today only 10 Gbps is supported
TRAFFICGEN_TREX_LINE_SPEED_GBPS = '10'
+# Enable of learning packets before sending test traffic
+TRAFFICGEN_TREX_LEARNING_MODE = True
+TRAFFICGEN_TREX_LEARNING_DURATION = 5
# FOR SR-IOV or multistream layer 2 tests to work with T-Rex enable Promiscuous mode
-TRAFFICGEN_TREX_PROMISCUOUS=False
+TRAFFICGEN_TREX_PROMISCUOUS = False
# TREX Configuration and Connection Info-- END
####################################################
diff --git a/docs/testing/user/configguide/installation.rst b/docs/testing/user/configguide/installation.rst
index 8bad4efd..aeb2f2de 100644
--- a/docs/testing/user/configguide/installation.rst
+++ b/docs/testing/user/configguide/installation.rst
@@ -49,6 +49,7 @@ Supported Operating Systems
* Fedora 25 (kernel 4.9 requires DPDK 16.11 and newer)
* openSUSE 42.2
* openSUSE 42.3
+* openSUSE Tumbleweed
* RedHat 7.2 Enterprise Linux
* RedHat 7.3 Enterprise Linux
* Ubuntu 14.04
diff --git a/docs/testing/user/configguide/trafficgen.rst b/docs/testing/user/configguide/trafficgen.rst
index 4b9eec6e..535f7995 100644
--- a/docs/testing/user/configguide/trafficgen.rst
+++ b/docs/testing/user/configguide/trafficgen.rst
@@ -826,6 +826,15 @@ Default value of this parameter is defined in conf/03_traffic.conf as follows:
TRAFFICGEN_TREX_RFC2544_TPUT_THRESHOLD = ''
+T-Rex can have learning packets enabled. For certain tests it may be beneficial
+to send some packets before starting test traffic to allow switch learning to take
+place. This can be adjusted with the following configurations:
+
+.. code-block:: console
+
+ TRAFFICGEN_TREX_LEARNING_MODE=True
+ TRAFFICGEN_TREX_LEARNING_DURATION=5
+
SR-IOV and Multistream layer 2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
T-Rex by default only accepts packets on the receive side if the destination mac matches the
diff --git a/systems/centos/prepare_python_env.sh b/systems/centos/prepare_python_env.sh
index 5777448b..8bce53cc 100755
--- a/systems/centos/prepare_python_env.sh
+++ b/systems/centos/prepare_python_env.sh
@@ -2,7 +2,7 @@
#
# Prepare Python 3 environment for vsperf execution
#
-# Copyright 2015 OPNFV
+# Copyright 2015-2017 OPNFV
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then
fi
scl enable python33 "
-virtualenv "$VSPERFENV_DIR"
+virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint
diff --git a/systems/fedora/24/prepare_python_env.sh b/systems/fedora/24/prepare_python_env.sh
index b099df5e..920604c2 100644
--- a/systems/fedora/24/prepare_python_env.sh
+++ b/systems/fedora/24/prepare_python_env.sh
@@ -23,7 +23,7 @@ fi
# enable virtual environment in a subshell, so QEMU build can use python 2.7
-(virtualenv-3.5 "$VSPERFENV_DIR"
+(virtualenv-3.5 "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint)
diff --git a/systems/fedora/25/prepare_python_env.sh b/systems/fedora/25/prepare_python_env.sh
index 4a85eb35..c4613ca4 100644
--- a/systems/fedora/25/prepare_python_env.sh
+++ b/systems/fedora/25/prepare_python_env.sh
@@ -23,7 +23,7 @@ fi
# enable virtual environment in a subshell, so QEMU build can use python 2.7
-(virtualenv-3.5 "$VSPERFENV_DIR"
+(virtualenv-3.5 "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint
diff --git a/systems/fedora/26/prepare_python_env.sh b/systems/fedora/26/prepare_python_env.sh
index 33615cbd..05eedfd9 100644
--- a/systems/fedora/26/prepare_python_env.sh
+++ b/systems/fedora/26/prepare_python_env.sh
@@ -23,7 +23,7 @@ fi
# enable virtual environment in a subshell, so QEMU build can use python 2.7
-(virtualenv-3.6 "$VSPERFENV_DIR"
+(virtualenv-3.6 "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint
diff --git a/systems/opensuse/42.2/prepare_python_env.sh b/systems/opensuse/42.2/prepare_python_env.sh
index 66f94cf7..ab668ca4 100755
--- a/systems/opensuse/42.2/prepare_python_env.sh
+++ b/systems/opensuse/42.2/prepare_python_env.sh
@@ -21,7 +21,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then
exit
fi
-virtualenv "$VSPERFENV_DIR"
+virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint
diff --git a/systems/opensuse/42.3/prepare_python_env.sh b/systems/opensuse/42.3/prepare_python_env.sh
index 66f94cf7..ab668ca4 100755
--- a/systems/opensuse/42.3/prepare_python_env.sh
+++ b/systems/opensuse/42.3/prepare_python_env.sh
@@ -21,7 +21,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then
exit
fi
-virtualenv "$VSPERFENV_DIR"
+virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint
diff --git a/systems/opensuse/build_base_machine.sh b/systems/opensuse/build_base_machine.sh
new file mode 100755
index 00000000..8b26440c
--- /dev/null
+++ b/systems/opensuse/build_base_machine.sh
@@ -0,0 +1,95 @@
+#!/bin/bash
+#
+# Build a base machine for openSUSE Tumbleweed systems
+#
+# Copyright (c) 2017 SUSE LLC.
+#
+# 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.
+#
+# Contributors:
+# Jose Lausuch, SUSE LINUX GmbH
+
+zypper -q -n dup
+zypper -q -n in -y $(echo "
+# compiler, tools and dependencies
+make
+automake
+gcc
+gcc-c++
+glibc
+glibc-devel
+fuse
+fuse-devel
+glib2-devel
+zlib-devel
+ncurses-devel
+kernel-default
+kernel-default-devel
+pkg-config
+findutils-locate
+curl
+automake
+autoconf
+vim
+wget
+git
+pciutils
+cifs-utils
+socat
+sysstat
+java-1_8_0-openjdk
+git-review
+mlocate
+
+# python
+python3
+python-pip
+python3-pip
+python3-setuptools
+python3-devel
+python3-tk
+python3-virtualenv
+
+# libraries
+libnuma1
+libnuma-devel
+libpixman-1-0
+libpixman-1-0-devel
+libtool
+libpcap-devel
+libnet9
+libncurses6
+libcurl4
+libcurl-devel
+libxml2
+libfuse2
+libopenssl1_1_0
+libopenssl-devel
+libpython3_6m1_0
+
+" | grep -v ^#)
+
+updatedb
+
+# fix for the Ixia TclClient
+ln -sf $(locate libc.so.6) /lib/libc.so.6
+
+# virtual environment for python
+pip3 install virtualenv
+
+# hugepages setup
+mkdir -p /dev/hugepages
+
+# fix for non-utf8 characters in file
+cp /etc/services /etc/services.bak
+iconv -o /etc/services -f utf-8 -t utf-8 -c /etc/services.bak
diff --git a/systems/opensuse/prepare_python_env.sh b/systems/opensuse/prepare_python_env.sh
new file mode 100755
index 00000000..69871670
--- /dev/null
+++ b/systems/opensuse/prepare_python_env.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+#
+# Prepare Python environment for vsperf execution on openSUSE Tumbleweed systems
+#
+# Copyright (c) 2017 SUSE LLC.
+#
+# 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.
+
+if [ -d "$VSPERFENV_DIR" ] ; then
+ echo "Directory $VSPERFENV_DIR already exists. Skipping python virtualenv creation."
+ exit
+fi
+
+virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3
+source "$VSPERFENV_DIR"/bin/activate
+pip install -r ../requirements.txt
+pip install pylint
+
diff --git a/systems/rhel/7.2/prepare_python_env.sh b/systems/rhel/7.2/prepare_python_env.sh
index bd468d80..0178954e 100755
--- a/systems/rhel/7.2/prepare_python_env.sh
+++ b/systems/rhel/7.2/prepare_python_env.sh
@@ -2,7 +2,7 @@
#
# Prepare Python environment for vsperf execution on Red Hat 7.2 systems.
#
-# Copyright 2016 OPNFV, Intel Corporation, Red Hat Inc.
+# Copyright 2016-2017 OPNFV, Intel Corporation, Red Hat Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then
fi
scl enable python33 "
-virtualenv "$VSPERFENV_DIR"
+virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint
diff --git a/systems/rhel/7.3/prepare_python_env.sh b/systems/rhel/7.3/prepare_python_env.sh
index 3ba049e8..a9021451 100755
--- a/systems/rhel/7.3/prepare_python_env.sh
+++ b/systems/rhel/7.3/prepare_python_env.sh
@@ -2,7 +2,7 @@
#
# Prepare Python environment for vsperf execution on RHEL 7.3 systems.
#
-# Copyright 2016 OPNFV, Intel Corporation, Red Hat Inc.
+# Copyright 2016-2017 OPNFV, Intel Corporation, Red Hat Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@ if [ -d "$VSPERFENV_DIR" ] ; then
fi
scl enable python33 "
-virtualenv "$VSPERFENV_DIR"
+virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint
diff --git a/systems/ubuntu/14.04/prepare_python_env.sh b/systems/ubuntu/14.04/prepare_python_env.sh
index 6ef8680d..4c98dc42 100755
--- a/systems/ubuntu/14.04/prepare_python_env.sh
+++ b/systems/ubuntu/14.04/prepare_python_env.sh
@@ -2,7 +2,7 @@
#
# Prepare Python environment for vsperf execution on Ubuntu 14.04 systems
#
-# Copyright 2015 OPNFV, Intel Corporation.
+# Copyright 2015-2017 OPNFV, Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@ fi
# enable virtual environment in a subshell, so QEMU build can use python 2.7
-(virtualenv "$VSPERFENV_DIR"
+(virtualenv "$VSPERFENV_DIR" --python /usr/bin/python3
source "$VSPERFENV_DIR"/bin/activate
pip install -r ../requirements.txt
pip install pylint)
diff --git a/tools/pkt_gen/trex/trex.py b/tools/pkt_gen/trex/trex.py
index acdaf287..c166310d 100644
--- a/tools/pkt_gen/trex/trex.py
+++ b/tools/pkt_gen/trex/trex.py
@@ -19,6 +19,7 @@ Trex Traffic Generator Model
import logging
import subprocess
import sys
+import time
from collections import OrderedDict
# pylint: disable=unused-import
import netaddr
@@ -325,6 +326,19 @@ class Trex(ITrafficGenerator):
result[ResultsConstants.AVG_LATENCY_NS] = 'Unknown'
return result
+ def learning_packets(self, traffic):
+ """
+ Send learning packets before testing
+ :param traffic: traffic structure as per send_cont_traffic guidelines
+ :return: None
+ """
+ self._logger.info("T-Rex sending learning packets")
+ learning_thresh_traffic = copy.deepcopy(traffic)
+ learning_thresh_traffic["frame_rate"] = 1
+ self.generate_traffic(learning_thresh_traffic, settings.getValue("TRAFFICGEN_TREX_LEARNING_DURATION"))
+ self._logger.info("T-Rex finished learning packets")
+ time.sleep(3) # allow packets to complete before starting test traffic
+
def send_cont_traffic(self, traffic=None, duration=30):
"""See ITrafficGenerator for description
"""
@@ -336,6 +350,8 @@ class Trex(ITrafficGenerator):
self._params['traffic'] = merge_spec(
self._params['traffic'], traffic)
+ if settings.getValue('TRAFFICGEN_TREX_LEARNING_MODE'):
+ self.learning_packets(traffic)
stats = self.generate_traffic(traffic, duration)
return self.calculate_results(stats)
@@ -366,6 +382,8 @@ class Trex(ITrafficGenerator):
self._params['traffic'] = merge_spec(
self._params['traffic'], traffic)
new_params = copy.deepcopy(traffic)
+ if settings.getValue('TRAFFICGEN_TREX_LEARNING_MODE'):
+ self.learning_packets(traffic)
stats = self.generate_traffic(traffic, duration)
right = traffic['frame_rate']
center = traffic['frame_rate']