summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Klozik <martinx.klozik@intel.com>2017-08-24 13:52:34 +0100
committerMartin Klozik <martinx.klozik@intel.com>2017-08-25 14:45:17 +0100
commit430bb728a4ab0f9a037a2157a9ff00a00ad0ac72 (patch)
tree1aa0d8ecaaf6578dea2f19e776d78ceecd90da0d
parent7032b8ec49833084b9e7c06442a9756a3ec7e501 (diff)
opnfvresultdb: Add mapping for VPP TCs
Patch adds testcase mapping among native VSPERF VPP TCs and appropriate TC names defined in results DB. JIRA: VSPERF-488 Change-Id: I5c4a50587a354a741c738d255105726943a701f5 Signed-off-by: Martin Klozik <martinx.klozik@intel.com> Reviewed-by: Mars Toktonaliev <mars.toktonaliev@nokia.com> Reviewed-by: Morgan Richomme <morgan.richomme@orange.com> Reviewed-by: Al Morton <acmorton@att.com> Reviewed-by: Christian Trautman <ctrautma@redhat.com> Reviewed-by: Sridhar Rao <sridhar.rao@spirent.com> Reviewed-by: Trevor Cooper <trevor.cooper@intel.com>
-rw-r--r--docs/testing/developer/devguide/results/results.rst42
-rw-r--r--tools/opnfvdashboard/opnfvdashboard.py58
-rwxr-xr-xvsperf5
3 files changed, 33 insertions, 72 deletions
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/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