opnfvresultdb: Add mapping for VPP TCs 91/40091/4
authorMartin Klozik <martinx.klozik@intel.com>
Thu, 24 Aug 2017 12:52:34 +0000 (13:52 +0100)
committerMartin Klozik <martinx.klozik@intel.com>
Fri, 25 Aug 2017 13:45:17 +0000 (14:45 +0100)
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>
docs/testing/developer/devguide/results/results.rst
tools/opnfvdashboard/opnfvdashboard.py
vsperf

index df9c52c..0a0ab75 100644 (file)
@@ -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``.
index c24b9f8..cf2fd1b 100644 (file)
@@ -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 f4bc63b..36c12df 100755 (executable)
--- 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