C-Dash: Add soak tests
[csit.git] / csit.infra.dash / app / cdash / trending / graphs.py
index ede3a06..1a507df 100644 (file)
@@ -50,6 +50,8 @@ def select_trending_data(data: pd.DataFrame, itm: dict) -> pd.DataFrame:
         test_type = "ndrpdr"
     elif itm["testtype"] == "mrr":
         test_type = "mrr"
+    elif itm["testtype"] == "soak":
+        test_type = "soak"
     elif itm["area"] == "hoststack":
         test_type = "hoststack"
     df = data.loc[(
@@ -194,6 +196,24 @@ def graph_trending(
                     f"bandwidth [{row['result_bandwidth_unit']}]: "
                     f"{row['result_bandwidth_value'] * nf:,.0f}<br>"
                 )
+            elif ttype in ("soak", "soak-bandwidth"):
+                h_tput = (
+                    f"tput [{row['result_critical_rate_lower_rate_unit']}]: "
+                    f"{row['result_critical_rate_lower_rate_value'] * nf:,.0f}"
+                    "<br>"
+                )
+                if pd.notna(row["result_critical_rate_lower_bandwidth_value"]):
+                    bv = row['result_critical_rate_lower_bandwidth_value']
+                    h_band = (
+                        "bandwidth "
+                        f"[{row['result_critical_rate_lower_bandwidth_unit']}]:"
+                        f" {bv * nf:,.0f}"
+                        "<br>"
+                    )
+            try:
+                hosts = f"<br>hosts: {', '.join(row['hosts'])}"
+            except (KeyError, TypeError):
+                hosts = str()
             hover_itm = (
                 f"dut: {name_lst[0]}<br>"
                 f"infra: {'-'.join(name_lst[1:5])}<br>"
@@ -201,8 +221,8 @@ def graph_trending(
                 f"date: {row['start_time'].strftime('%Y-%m-%d %H:%M:%S')}<br>"
                 f"{h_tput}{h_band}{h_lat}"
                 f"{row['dut_type']}-ref: {row['dut_version']}<br>"
-                f"csit-ref: {row['job']}/{row['build']}<br>"
-                f"hosts: {', '.join(row['hosts'])}"
+                f"csit-ref: {row['job']}/{row['build']}"
+                f"{hosts}"
             )
             hover.append(hover_itm)
             if ttype == "latency":
@@ -231,6 +251,10 @@ def graph_trending(
 
         hover_trend = list()
         for avg, stdev, (_, row) in zip(trend_avg, trend_stdev, df.iterrows()):
+            try:
+                hosts = f"<br>hosts: {', '.join(row['hosts'])}"
+            except (KeyError, TypeError):
+                hosts = str()
             hover_itm = (
                 f"dut: {name_lst[0]}<br>"
                 f"infra: {'-'.join(name_lst[1:5])}<br>"
@@ -239,8 +263,8 @@ def graph_trending(
                 f"trend [{row[C.UNIT[ttype]]}]: {avg:,.0f}<br>"
                 f"stdev [{row[C.UNIT[ttype]]}]: {stdev:,.0f}<br>"
                 f"{row['dut_type']}-ref: {row['dut_version']}<br>"
-                f"csit-ref: {row['job']}/{row['build']}<br>"
-                f"hosts: {', '.join(row['hosts'])}"
+                f"csit-ref: {row['job']}/{row['build']}"
+                f"{hosts}"
             )
             if ttype == "latency":
                 hover_itm = hover_itm.replace("[pps]", "[us]")
@@ -379,7 +403,7 @@ def graph_trending(
                 fig_tput = go.Figure()
             fig_tput.add_traces(traces)
 
-        if ttype in ("ndr", "pdr", "mrr", "hoststack-cps", "hoststack-rps"):
+        if ttype in C.TESTS_WITH_BANDWIDTH:
             traces, _ = _generate_trending_traces(
                 f"{ttype}-bandwidth",
                 itm["id"],
@@ -392,7 +416,7 @@ def graph_trending(
                     fig_band = go.Figure()
                 fig_band.add_traces(traces)
 
-        if ttype in ("pdr", "hoststack-cps", "hoststack-rps"):
+        if ttype in C.TESTS_WITH_LATENCY:
             traces, _ = _generate_trending_traces(
                 "latency" if ttype == "pdr" else "hoststack-latency",
                 itm["id"],