From a214378b5d0589fcbd9a9cc8c9b25bce8a862cec Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Wed, 1 Feb 2023 15:50:36 +0100 Subject: C-Dash: Add hoststack Signed-off-by: Tibor Frank Change-Id: I5055bc785f5ba5c9b13ba83eaf646975cfe86ea4 --- csit.infra.dash/app/cdash/data/data.yaml | 86 ++++++++++++++++++++++++++ csit.infra.dash/app/cdash/report/graphs.py | 16 +++-- csit.infra.dash/app/cdash/report/layout.py | 22 +++++-- csit.infra.dash/app/cdash/report/layout.yaml | 2 +- csit.infra.dash/app/cdash/trending/graphs.py | 15 +++-- csit.infra.dash/app/cdash/trending/layout.py | 18 ++++-- csit.infra.dash/app/cdash/trending/layout.yaml | 2 +- csit.infra.dash/app/cdash/utils/constants.py | 16 ++++- 8 files changed, 153 insertions(+), 24 deletions(-) diff --git a/csit.infra.dash/app/cdash/data/data.yaml b/csit.infra.dash/app/cdash/data/data.yaml index 846be6b628..9cc366e62f 100644 --- a/csit.infra.dash/app/cdash/data/data.yaml +++ b/csit.infra.dash/app/cdash/data/data.yaml @@ -69,6 +69,46 @@ - 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 @@ -225,3 +265,49 @@ - 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 diff --git a/csit.infra.dash/app/cdash/report/graphs.py b/csit.infra.dash/app/cdash/report/graphs.py index 5af962158e..411a599b1c 100644 --- a/csit.infra.dash/app/cdash/report/graphs.py +++ b/csit.infra.dash/app/cdash/report/graphs.py @@ -11,10 +11,9 @@ # 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[ diff --git a/csit.infra.dash/app/cdash/report/layout.py b/csit.infra.dash/app/cdash/report/layout.py index 495de36dec..cae6993ec2 100644 --- a/csit.infra.dash/app/cdash/report/layout.py +++ b/csit.infra.dash/app/cdash/report/layout.py @@ -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: diff --git a/csit.infra.dash/app/cdash/report/layout.yaml b/csit.infra.dash/app/cdash/report/layout.yaml index 4f9f7ac2a7..636b901474 100644 --- a/csit.infra.dash/app/cdash/report/layout.yaml +++ b/csit.infra.dash/app/cdash/report/layout.yaml @@ -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" diff --git a/csit.infra.dash/app/cdash/trending/graphs.py b/csit.infra.dash/app/cdash/trending/graphs.py index 79e2697f54..b6581e67f4 100644 --- a/csit.infra.dash/app/cdash/trending/graphs.py +++ b/csit.infra.dash/app/cdash/trending/graphs.py @@ -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 diff --git a/csit.infra.dash/app/cdash/trending/layout.py b/csit.infra.dash/app/cdash/trending/layout.py index 2d65567489..2a91bf4755 100644 --- a/csit.infra.dash/app/cdash/trending/layout.py +++ b/csit.infra.dash/app/cdash/trending/layout.py @@ -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: diff --git a/csit.infra.dash/app/cdash/trending/layout.yaml b/csit.infra.dash/app/cdash/trending/layout.yaml index bc11dde61f..5e41b03118 100644 --- a/csit.infra.dash/app/cdash/trending/layout.yaml +++ b/csit.infra.dash/app/cdash/trending/layout.yaml @@ -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)" diff --git a/csit.infra.dash/app/cdash/utils/constants.py b/csit.infra.dash/app/cdash/utils/constants.py index cca68a56b8..4eb52d2117 100644 --- a/csit.infra.dash/app/cdash/utils/constants.py +++ b/csit.infra.dash/app/cdash/utils/constants.py @@ -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. -- cgit 1.2.3-korg