C-Dash: Add hoststack 89/38089/6
authorTibor Frank <tifrank@cisco.com>
Wed, 1 Feb 2023 14:50:36 +0000 (15:50 +0100)
committerTibor Frank <tifrank@cisco.com>
Fri, 3 Feb 2023 08:20:24 +0000 (09:20 +0100)
Signed-off-by: Tibor Frank <tifrank@cisco.com>
Change-Id: I5055bc785f5ba5c9b13ba83eaf646975cfe86ea4

csit.infra.dash/app/cdash/data/data.yaml
csit.infra.dash/app/cdash/report/graphs.py
csit.infra.dash/app/cdash/report/layout.py
csit.infra.dash/app/cdash/report/layout.yaml
csit.infra.dash/app/cdash/trending/graphs.py
csit.infra.dash/app/cdash/trending/layout.py
csit.infra.dash/app/cdash/trending/layout.yaml
csit.infra.dash/app/cdash/utils/constants.py

index 846be6b..9cc366e 100644 (file)
     - dut_type
     - dut_version
     - version
+- data_type: trending
+  partition: test_type
+  partition_name: hoststack
+  path: s3://fdio-docs-s3-cloudfront-index/csit/parquet/trending
+  columns:
+    - job
+    - build
+    - dut_type
+    - dut_version
+    - hosts
+    - tg_type
+    # - tg_version
+    - result_bandwidth_unit
+    - result_bandwidth_value
+    - result_rate_unit
+    - result_rate_value
+    - result_latency_unit
+    - result_latency_value
+    # - result_failed_requests_unit
+    # - result_failed_requests_value
+    # - result_completed_requests_unit
+    # - result_completed_requests_value
+    # - result_retransmits_unit
+    # - result_retransmits_value
+    # - result_duration_unit
+    # - result_duration_value
+    # - result_type
+    - start_time
+    - passed
+    - telemetry
+    - test_id
+    - test_type
+    - version
+  categories:
+    - job
+    - build
+    - dut_type
+    - dut_version
+    - tg_type
+    - version
 - data_type: iterative
   partition: test_type
   partition_name: mrr
     - dut_type
     - dut_version
     - version
+- data_type: iterative
+  partition: test_type
+  partition_name: hoststack
+  release: rls2302
+  path: s3://fdio-docs-s3-cloudfront-index/csit/parquet/iterative_rls2302
+  columns:
+    - job
+    - build
+    - dut_type
+    - dut_version
+    - hosts
+    - tg_type
+    # - tg_version
+    - result_bandwidth_unit
+    - result_bandwidth_value
+    - result_rate_unit
+    - result_rate_value
+    - result_latency_unit
+    - result_latency_value
+    # - result_failed_requests_unit
+    # - result_failed_requests_value
+    # - result_completed_requests_unit
+    # - result_completed_requests_value
+    # - result_retransmits_unit
+    # - result_retransmits_value
+    # - result_duration_unit
+    # - result_duration_value
+    - start_time
+    - passed
+    - telemetry
+    - test_id
+    - test_type
+    - version
+  categories:
+    - job
+    - build
+    - dut_type
+    - dut_version
+    - version
+  categories:
+    - job
+    - build
+    - dut_type
+    - dut_version
+    - tg_type
+    - version
index 5af9621..411a599 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""
+"""Implementation of graphs for iterative data.
 """
 
-import re
 import plotly.graph_objects as go
 import pandas as pd
 
@@ -47,13 +46,20 @@ def select_iterative_data(data: pd.DataFrame, itm:dict) -> pd.DataFrame:
     else:
         return None
 
-    core = str() if itm["dut"] == "trex" else f"{itm['core']}"
-    ttype = "ndrpdr" if itm["testtype"] in ("ndr", "pdr") else itm["testtype"]
+    if itm["testtype"] in ("ndr", "pdr"):
+        test_type = "ndrpdr"
+    elif itm["testtype"] == "mrr":
+        test_type = "mrr"
+    elif itm["area"] == "hoststack":
+        test_type = "hoststack"
     df = data.loc[(
         (data["release"] == itm["rls"]) &
-        (data["test_type"] == ttype) &
+        (data["test_type"] == test_type) &
         (data["passed"] == True)
     )]
+
+    core = str() if itm["dut"] == "trex" else f"{itm['core']}"
+    ttype = "ndrpdr" if itm["testtype"] in ("ndr", "pdr") else itm["testtype"]
     regex_test = \
         f"^.*[.|-]{nic}.*{itm['framesize']}-{core}-{drv}{itm['test']}-{ttype}$"
     df = df[
index 495de36..cae6993 100644 (file)
@@ -112,10 +112,11 @@ class Layout:
 
         # Get structure of tests:
         tbs = dict()
-        cols = ["job", "test_id", "test_type", "dut_version", "release"]
+        cols = [
+            "job", "test_id", "test_type", "dut_version", "tg_type", "release"
+        ]
         for _, row in self._data[cols].drop_duplicates().iterrows():
             rls = row["release"]
-            ttype = row["test_type"]
             lst_job = row["job"].split("-")
             dut = lst_job[1]
             d_ver = row["dut_version"]
@@ -167,18 +168,31 @@ class Layout:
                 tbs[rls][dut][d_ver][infra][area][test]["frame-size"].append(
                     framesize.upper()
                 )
-            if ttype == "mrr":
+            if row["test_type"] == "mrr":
                 if "MRR" not in \
                         tbs[rls][dut][d_ver][infra][area][test]["test-type"]:
                     tbs[rls][dut][d_ver][infra][area][test]["test-type"].append(
                         "MRR"
                     )
-            elif ttype == "ndrpdr":
+            elif row["test_type"] == "ndrpdr":
                 if "NDR" not in \
                         tbs[rls][dut][d_ver][infra][area][test]["test-type"]:
                     tbs[rls][dut][d_ver][infra][area][test]["test-type"].extend(
                         ("NDR", "PDR", )
                     )
+            elif row["test_type"] == "hoststack" and \
+                    row["tg_type"] in ("iperf", "vpp"):
+                if "BPS" not in \
+                        tbs[rls][dut][d_ver][infra][area][test]["test-type"]:
+                    tbs[rls][dut][d_ver][infra][area][test]["test-type"].append(
+                        "BPS"
+                    )
+            elif row["test_type"] == "hoststack" and row["tg_type"] == "ab":
+                if "CPS" not in \
+                        tbs[rls][dut][d_ver][infra][area][test]["test-type"]:
+                    tbs[rls][dut][d_ver][infra][area][test]["test-type"].extend(
+                        ("CPS", "RPS")
+                    )
         self._spec_tbs = tbs
 
         # Read from files:
index 4f9f7ac..636b901 100644 (file)
@@ -13,7 +13,7 @@ plot-throughput:
     tickmode: "array"
     zeroline: False
   yaxis:
-    title: "Packet Throughput [pps]"
+    title: "Throughput [pps|cps|rps|bps]"
     gridcolor: "rgb(230, 230, 230)"
     hoverformat: ".3s"
     tickformat: ".3s"
index 79e2697..b6581e6 100644 (file)
@@ -11,7 +11,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""
+"""Implementation of graphs for trending data.
 """
 
 import plotly.graph_objects as go
@@ -68,14 +68,19 @@ def select_trending_data(data: pd.DataFrame, itm: dict) -> pd.DataFrame:
     else:
         return None
 
-    core = str() if itm["dut"] == "trex" else f"{itm['core']}"
-    ttype = "ndrpdr" if itm["testtype"] in ("ndr", "pdr") else itm["testtype"]
-
+    if itm["testtype"] in ("ndr", "pdr"):
+        test_type = "ndrpdr"
+    elif itm["testtype"] == "mrr":
+        test_type = "mrr"
+    elif itm["area"] == "hoststack":
+        test_type = "hoststack"
     df = data.loc[(
-        (data["test_type"] == ttype) &
+        (data["test_type"] == test_type) &
         (data["passed"] == True)
     )]
     df = df[df.job.str.endswith(f"{topo}-{arch}")]
+    core = str() if itm["dut"] == "trex" else f"{itm['core']}"
+    ttype = "ndrpdr" if itm["testtype"] in ("ndr", "pdr") else itm["testtype"]
     df = df[df.test_id.str.contains(
         f"^.*[.|-]{nic}.*{itm['framesize']}-{core}-{drv}{itm['test']}-{ttype}$",
         regex=True
index 2d65567..2a91bf4 100644 (file)
@@ -111,11 +111,10 @@ class Layout:
 
         # Get structure of tests:
         tbs = dict()
-        for _, row in self._data[["job", "test_id"]].drop_duplicates().\
-                iterrows():
+        cols = ["job", "test_id", "test_type", "tg_type"]
+        for _, row in self._data[cols].drop_duplicates().iterrows():
             lst_job = row["job"].split("-")
             dut = lst_job[1]
-            ttype = lst_job[3]
             tbed = "-".join(lst_job[-2:])
             lst_test = row["test_id"].split(".")
             if dut == "dpdk":
@@ -160,14 +159,23 @@ class Layout:
                 tbs[dut][infra][area][test]["frame-size"].append(
                     framesize.upper()
                 )
-            if ttype == "mrr":
+            if row["test_type"] == "mrr":
                 if "MRR" not in tbs[dut][infra][area][test]["test-type"]:
                     tbs[dut][infra][area][test]["test-type"].append("MRR")
-            elif ttype == "ndrpdr":
+            elif row["test_type"] == "ndrpdr":
                 if "NDR" not in tbs[dut][infra][area][test]["test-type"]:
                     tbs[dut][infra][area][test]["test-type"].extend(
                         ("NDR", "PDR")
                     )
+            elif row["test_type"] == "hoststack":
+                if row["tg_type"] in ("iperf", "vpp"):
+                    if "BPS" not in tbs[dut][infra][area][test]["test-type"]:
+                        tbs[dut][infra][area][test]["test-type"].append("BPS")
+                elif row["tg_type"] == "ab":
+                    if "CPS" not in tbs[dut][infra][area][test]["test-type"]:
+                        tbs[dut][infra][area][test]["test-type"].extend(
+                            ("CPS", "RPS")
+                        )
         self._spec_tbs = tbs
 
         # Read from files:
index bc11dde..5e41b03 100644 (file)
@@ -4,7 +4,7 @@ plot-trending-tput:
   yaxis:
     showticklabels: True
     tickformat: ".3s"
-    title: "Throughput [pps]"
+    title: "Throughput [pps|cps|rps|bps]"
     hoverformat: ".5s"
     gridcolor: "rgb(238, 238, 238)"
     linecolor: "rgb(238, 238, 238)"
index cca68a5..4eb52d2 100644 (file)
@@ -127,6 +127,7 @@ class Constants:
         "nfv_density-vm_vhost-chain": "VNF Service Chains Routing",
         "nfv_density-dcr_memif-pipeline": "CNF Service Pipelines Routing",
         "nfv_density-dcr_memif-chain": "CNF Service Chains Routing",
+        "hoststack": "Hoststack"
     }
 
     # URL style.
@@ -201,21 +202,30 @@ class Constants:
         "mrr": "result_receive_rate_rate_avg",
         "ndr": "result_ndr_lower_rate_value",
         "pdr": "result_pdr_lower_rate_value",
-        "pdr-lat": "result_latency_forward_pdr_50_avg"
+        "pdr-lat": "result_latency_forward_pdr_50_avg",
+        "cps": "result_bandwidth_value",
+        "rps": "result_bandwidth_value",
+        "bps": "result_bandwidth_value"
     }
 
     VALUE_ITER = {
         "mrr": "result_receive_rate_rate_values",
         "ndr": "result_ndr_lower_rate_value",
         "pdr": "result_pdr_lower_rate_value",
-        "pdr-lat": "result_latency_forward_pdr_50_avg"
+        "pdr-lat": "result_latency_forward_pdr_50_avg",
+        "cps": "result_bandwidth_value",
+        "rps": "result_bandwidth_value",
+        "bps": "result_bandwidth_value"
     }
 
     UNIT = {
         "mrr": "result_receive_rate_rate_unit",
         "ndr": "result_ndr_lower_rate_unit",
         "pdr": "result_pdr_lower_rate_unit",
-        "pdr-lat": "result_latency_forward_pdr_50_unit"
+        "pdr-lat": "result_latency_forward_pdr_50_unit",
+        "cps": "result_bandwidth_unit",
+        "rps": "result_bandwidth_unit",
+        "bps": "result_bandwidth_unit"
     }
 
     # Latencies.