aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore10
-rwxr-xr-xci/build-vsperf.sh4
-rw-r--r--docs/release/release-notes/release-notes.rst34
-rw-r--r--docs/testing/developer/devguide/results/results.rst42
-rw-r--r--src/Makefile.src_cuse33
-rwxr-xr-xsrc/dpdk/Makefile5
-rw-r--r--src/ovs/Makefile2
-rwxr-xr-xsrc/qemu/Makefile2
-rw-r--r--src/vpp/Makefile2
-rw-r--r--tools/opnfvdashboard/opnfvdashboard.py58
-rwxr-xr-xvsperf5
11 files changed, 83 insertions, 114 deletions
diff --git a/.gitignore b/.gitignore
index 9d803438..48751193 100644
--- a/.gitignore
+++ b/.gitignore
@@ -64,6 +64,16 @@ target/
/src/dpdk/dpdk/
/src/ovs/ovs/
/src/qemu/qemu/
+/src/vpp/vpp/
/src_cuse/
/src_vanilla/
.vagrant
+tags
+
+# Ignore all files in l2fwd except those prefaced by "!"
+/src/l2fwd
+!/src/l2fwd/gen_debian_package.sh
+!/src/l2fwd/l2fwd.c
+!/src/l2fwd/LICENSE.txt
+!/src/l2fwd/Makefile
+
diff --git a/ci/build-vsperf.sh b/ci/build-vsperf.sh
index 30069c47..cee0e525 100755
--- a/ci/build-vsperf.sh
+++ b/ci/build-vsperf.sh
@@ -80,10 +80,10 @@ fi
# Test report related configuration
TEST_REPORT_PARTIAL="*_test_report.rst"
-TEST_REPORT_DIR="${WORKSPACE}/docs/testing/developer/results"
+TEST_REPORT_DIR="${WORKSPACE}/docs/testing/developer/devguide/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/testing/developer/results/index.html"
+TEST_REPORT_FILE="${WORKSPACE}/docs_output/testing_developer_devguide_results/index.html"
TEST_REPORT_TARBALL="vswitchperf_logs_${DATE}.tar.gz"
if [[ "x${BRANCH}" == "xmaster" ]]; then
diff --git a/docs/release/release-notes/release-notes.rst b/docs/release/release-notes/release-notes.rst
index c2dff390..e4c5f6c8 100644
--- a/docs/release/release-notes/release-notes.rst
+++ b/docs/release/release-notes/release-notes.rst
@@ -2,6 +2,40 @@
.. http://creativecommons.org/licenses/by/4.0
.. (c) OPNFV, Intel Corporation, AT&T and others.
+OPNFV Euphrates Release
+=======================
+
+* Improvement of stepdriven testcases
+* Support for graph plotting from vsperf results
+* Support for vHost User client mode in OVS and VPP
+* Support for DPDK 17.02
+* Support for dpdk driver NIC binding by drivectl tool
+* Several bugfixes and small improvements
+
+* vSwitches
+
+ * Support for VPP virtual switch
+ * OVS: Support for jumbo frames
+
+* Traffic Generators:
+
+ * Support for Trex traffic generator
+ * Support for huge number of streams
+ * Ixia: L3, L4 or vlan headers can be turned off/on, support of 1 NIC connection
+ between DUT and Ixia, bugfixing
+ * MoonGen: fix multistream support
+ * Xena: option for final verification, JSON refactoring, support for xena
+ pairs topology and port removal options, bugfixes
+
+* Guest specific:
+
+ * Support for additional QEMU cpu features
+ * Support for pinning of vCPU threads
+
+* Integration tests:
+
+ * New VPP related testcases
+ * New multistream testcases focused on L3 and L4 performance of OVS and VPP
OPNFV Danube Release
====================
diff --git a/docs/testing/developer/devguide/results/results.rst b/docs/testing/developer/devguide/results/results.rst
index df9c52cb..0a0ab75d 100644
--- a/docs/testing/developer/devguide/results/results.rst
+++ b/docs/testing/developer/devguide/results/results.rst
@@ -7,32 +7,22 @@ OPNFV Test Results
VSPERF CI jobs are run daily and sample results can be found at
https://wiki.opnfv.org/display/vsperf/Vsperf+Results
-The following example maps the results in the test dashboard to the appropriate
-test case in the VSPERF Framework and specifies the metric the vertical/Y axis
-is plotting. **Please note**, the presence of dpdk within a test name signifies
-that the vswitch under test was OVS with DPDK, while its absence indicates that
-the vswitch under test was stock OVS.
+Testcase names shown in the dashboard are combination of orignal testcase
+name from VSPERF framework and indication of used vswitch.
-===================== ===================== ================== ===============
- Dashboard Test Framework Test Metric Guest Interface
-===================== ===================== ================== ===============
-tput_ovsdpdk phy2phy_tput Throughput (FPS) N/A
-tput_ovs phy2phy_tput Throughput (FPS) N/A
-b2b_ovsdpdk back2back Back-to-back value N/A
-b2b_ovs back2back Back-to-back value N/A
-tput_mod_vlan_ovs phy2phy_tput_mod_vlan Throughput (FPS) N/A
-tput_mod_vlan_ovsdpdk phy2phy_tput_mod_vlan Throughput (FPS) N/A
-scalability_ovs phy2phy_scalability Throughput (FPS) N/A
-scalability_ovsdpdk phy2phy_scalability Throughput (FPS) N/A
-pvp_tput_ovsdpdkuser pvp_tput Throughput (FPS) vhost-user
-pvp_tput_ovsvirtio pvp_tput Throughput (FPS) virtio-net
-pvp_b2b_ovsdpdkuser pvp_back2back Back-to-back value vhost-user
-pvp_b2b_ovsvirtio pvp_back2back Back-to-back value virtio-net
-pvvp_tput_ovsdpdkuser pvvp_tput Throughput (FPS) vhost-user
-pvvp_tput_ovsvirtio pvvp_tput Throughput (FPS) virtio-net
-pvvp_b2b_ovsdpdkuser pvvp_back2back Throughput (FPS) vhost-user
-pvvp_b2b_ovsvirtio pvvp_back2back Throughput (FPS) virtio-net
-===================== ===================== ================== ===============
+ Example:
-The loopback application in the VNF was used for PVP and PVVP scenarios was DPDK
+ Testcase ``phy2phy_tput`` is executed for three vSwitch types: ``OvsDpdkVhost``,
+ ``OvsVanilla`` and ``VppDpdkVhost``. In this case, following testcase names
+ will be used in the dashboard: ``phy2phy_tput_ovsdpdkvhost``,
+ ``phy2phy_tput_ovsvanilla`` and ``phy2phy_tput_vppdpdkvhost``.
+
+In case of RFC2544 Throughput test, the recorded metric is FPS (frames per
+second) without packet loss. For RFC2544 Back2Back test, the recorded metric
+is back-to-back value (number of frames) without packet loss.
+
+The loopback application in the VNF used for PVP and PVVP scenarios was DPDK
testpmd.
+
+Guest interface types are ``vhost-user`` for ``OvsDpdkVhost`` and ``VppDpdkVhost``
+and ``virtio-net`` for ``OvsVanilla``.
diff --git a/src/Makefile.src_cuse b/src/Makefile.src_cuse
deleted file mode 100644
index 0ddac4cb..00000000
--- a/src/Makefile.src_cuse
+++ /dev/null
@@ -1,33 +0,0 @@
-# Top Makefile to build upstream packages.
-#
-
-# Copyright 2015 OPNFV
-#
-# 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:
-# Aihua Li, Huawei Technologies.
-
-include mk/master.mk
-
-export VHOST_USER
-
-# specify upstream package as SUBDIRS - common terms as suggest by gnu-make
-SUBDIRS =
-SUBDIRS += dpdk
-SUBDIRS += ovs
-ovs: dpdk
-WITH_LINUX =
-VHOST_USER = n
-include mk/make-subsys.mk
diff --git a/src/dpdk/Makefile b/src/dpdk/Makefile
index 69671169..4b4330d7 100755
--- a/src/dpdk/Makefile
+++ b/src/dpdk/Makefile
@@ -99,9 +99,6 @@ ifdef CONFIG_FILE_BASE
$(AT)cd `dirname $(CONFIG_FILE_BASE)` && git checkout `basename $(CONFIG_FILE_BASE)` && cd -
endif
$(AT)echo "VHOST_USER = $(VHOST_USER)"
-ifeq ($(VHOST_USER),n)
- $(AT)cd $(WORK_DIR)/lib/librte_vhost/eventfd_link; make
-endif
@echo "Make done"
install: $(INSTALL_TARGET)
@@ -126,7 +123,7 @@ sanity:
@echo "Make sanity in $(WORK_DIR) (stub) "
$(WORK_DIR):
- $(AT)git clone $(DPDK_URL)
+ $(AT)git clone $(DPDK_URL) dpdk
$(TAG_DONE_FLAG): $(WORK_DIR)
$(AT)cd $(WORK_DIR); git checkout $(DPDK_TAG)
diff --git a/src/ovs/Makefile b/src/ovs/Makefile
index ee15c521..e3adc2f8 100644
--- a/src/ovs/Makefile
+++ b/src/ovs/Makefile
@@ -111,7 +111,7 @@ boot $(WORK_DIR)/configure:
boot $(WORK_DIR)/configure: $(TAG_DONE_FLAG)
$(WORK_DIR):
- $(AT)git clone $(OVS_URL)
+ $(AT)git clone $(OVS_URL) ovs
$(AT)mkdir -p $(OVS_VANILLA)
$(AT)cp -rf ./* $(OVS_VANILLA)
diff --git a/src/qemu/Makefile b/src/qemu/Makefile
index 5f5e941f..b105496c 100755
--- a/src/qemu/Makefile
+++ b/src/qemu/Makefile
@@ -68,7 +68,7 @@ sanity:
$(WORK_DIR)/configure: $(TAG_DONE_FLAG)
$(WORK_DIR):
- $(AT)git clone $(QEMU_URL)
+ $(AT)git clone $(QEMU_URL) qemu
$(TAG_DONE_FLAG): $(WORK_DIR)
$(AT)cd $(WORK_DIR); git checkout $(QEMU_TAG)
diff --git a/src/vpp/Makefile b/src/vpp/Makefile
index de50d941..d3146f46 100644
--- a/src/vpp/Makefile
+++ b/src/vpp/Makefile
@@ -66,7 +66,7 @@ sanity:
$(WORK_DIR)/configure: $(TAG_DONE_FLAG)
$(WORK_DIR):
- $(AT)git clone $(VPP_URL)
+ $(AT)git clone $(VPP_URL) vpp
$(TAG_DONE_FLAG): $(WORK_DIR)
$(AT)cd vpp; git checkout $(VPP_TAG)
diff --git a/tools/opnfvdashboard/opnfvdashboard.py b/tools/opnfvdashboard/opnfvdashboard.py
index c24b9f8c..cf2fd1b0 100644
--- a/tools/opnfvdashboard/opnfvdashboard.py
+++ b/tools/opnfvdashboard/opnfvdashboard.py
@@ -40,13 +40,14 @@ def _push_results(reader, int_data):
db_url = int_data['db_url']
url = db_url + "/results"
casename = ""
- version_ovs = ""
+ version_vswitch = ""
version_dpdk = ""
version = ""
allowed_pkt = ["64", "128", "512", "1024", "1518"]
details = {"64": '', "128": '', "512": '', "1024": '', "1518": ''}
test_start = None
test_stop = None
+ vswitch = None
for row_reader in reader:
if allowed_pkt.count(row_reader['packet_size']) == 0:
@@ -58,8 +59,10 @@ def _push_results(reader, int_data):
if test_start is None:
test_start = row_reader['start_time']
test_stop = row_reader['stop_time']
+ # CI job executes/reports TCs per vswitch type
+ vswitch = row_reader['vswitch']
- casename = _generate_test_name(row_reader['id'], int_data)
+ casename = "{}_{}".format(row_reader['id'], row_reader['vswitch'].lower())
if "back2back" in row_reader['id']:
details[row_reader['packet_size']] = row_reader['b2b_frames']
else:
@@ -68,16 +71,19 @@ def _push_results(reader, int_data):
# Create version field
with open(int_data['pkg_list'], 'r') as pkg_file:
for line in pkg_file:
- if "OVS_TAG" in line:
- version_ovs = line.replace(' ', '')
- version_ovs = version_ovs.replace('OVS_TAG?=', '')
+ if "OVS_TAG" in line and vswitch.startswith('Ovs'):
+ version_vswitch = line.replace(' ', '')
+ version_vswitch = "OVS " + version_vswitch.replace('OVS_TAG?=', '')
+ if "VPP_TAG" in line and vswitch.startswith('Vpp'):
+ version_vswitch = line.replace(' ', '')
+ version_vswitch = "VPP " + version_vswitch.replace('VPP_TAG?=', '')
if "DPDK_TAG" in line:
- if int_data['vanilla'] is False:
+ # DPDK_TAG is not used by VPP, it downloads its onw DPDK version
+ if vswitch == "OvsDpdkVhost":
version_dpdk = line.replace(' ', '')
- version_dpdk = version_dpdk.replace('DPDK_TAG?=', '')
- else:
- version_dpdk = "not used"
- version = "OVS " + version_ovs.replace('\n', '') + " DPDK " + version_dpdk.replace('\n', '')
+ version_dpdk = " DPDK {}".format(
+ version_dpdk.replace('DPDK_TAG?=', ''))
+ version = version_vswitch.replace('\n', '') + version_dpdk.replace('\n', '')
# Build body
body = {"project_name": "vsperf",
@@ -97,35 +103,3 @@ def _push_results(reader, int_data):
logging.debug("opnfv url: %s", db_url)
logging.debug("the body sent to opnfv")
logging.debug(body)
-
-def _generate_test_name(testcase, int_data):
- """
- the method generates testcase name for releng
- """
- vanilla = int_data['vanilla']
- res_name = ""
-
- names = {'phy2phy_tput': ["tput_ovsdpdk", "tput_ovs"],
- 'back2back': ["b2b_ovsdpdk", "b2b_ovs"],
- 'phy2phy_tput_mod_vlan': ["tput_mod_vlan_ovsdpdk", "tput_mod_vlan_ovs"],
- 'phy2phy_cont': ["cont_ovsdpdk", "cont_ovs"],
- 'pvp_cont': ["pvp_cont_ovsdpdkuser", "pvp_cont_ovsvirtio"],
- 'pvvp_cont': ["pvvp_cont_ovsdpdkuser", "pvvp_cont_ovsvirtio"],
- 'phy2phy_scalability': ["scalability_ovsdpdk", "scalability_ovs"],
- 'pvp_tput': ["pvp_tput_ovsdpdkuser", "pvp_tput_ovsvirtio"],
- 'pvp_back2back': ["pvp_b2b_ovsdpdkuser", "pvp_b2b_ovsvirtio"],
- 'pvvp_tput': ["pvvp_tput_ovsdpdkuser", "pvvp_tput_ovsvirtio"],
- 'pvvp_back2back': ["pvvp_b2b_ovsdpdkuser", "pvvp_b2b_ovsvirtio"],
- 'phy2phy_cpu_load': ["cpu_load_ovsdpdk", "cpu_load_ovs"],
- 'phy2phy_mem_load': ["mem_load_ovsdpdk", "mem_load_ovs"]}
-
- for name, name_list in names.items():
- if name != testcase:
- continue
- if vanilla is True:
- res_name = name_list[1]
- else:
- res_name = name_list[0]
- break
-
- return res_name
diff --git a/vsperf b/vsperf
index f4bc63b8..36c12df9 100755
--- a/vsperf
+++ b/vsperf
@@ -707,15 +707,12 @@ def main():
opnfv_url = settings.getValue('OPNFV_URL')
pkg_list = settings.getValue('PACKAGE_LIST')
- int_data = {'vanilla': False,
- 'pod': pod_name,
+ int_data = {'pod': pod_name,
'criteria': "PASS",
'build_tag': get_build_tag(),
'installer': installer_name,
'pkg_list': pkg_list,
'db_url': opnfv_url}
- if str(settings.getValue('VSWITCH')).endswith('Vanilla'):
- int_data['vanilla'] = True
opnfvdashboard.results2opnfv_dashboard(results_path, int_data)
# cleanup before exit