X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=csit.infra.dash%2Fapp%2Fcdash%2Fcoverage%2Ftables.py;h=f2fa90ffb2b18d3be60937f9f302202bc5ea7e65;hb=512299ba5e0c9f2229d7ee5fef03cf8850f1316c;hp=a34b80f02433300c3ea47956083328858c6bf132;hpb=a7ed9061afe084648969a669f0c38bf567583a08;p=csit.git diff --git a/csit.infra.dash/app/cdash/coverage/tables.py b/csit.infra.dash/app/cdash/coverage/tables.py index a34b80f024..f2fa90ffb2 100644 --- a/csit.infra.dash/app/cdash/coverage/tables.py +++ b/csit.infra.dash/app/cdash/coverage/tables.py @@ -28,7 +28,8 @@ from ..utils.constants import Constants as C def select_coverage_data( data: pd.DataFrame, selected: dict, - csv: bool=False + csv: bool=False, + show_latency: bool=True ) -> list: """Select coverage data for the tables and generate tables as pandas data frames. @@ -37,9 +38,11 @@ def select_coverage_data( :param selected: Dictionary with user selection. :param csv: If True, pandas data frame with selected coverage data is returned for "Download Data" feature. + :param show_latency: If True, latency is displayed in the tables. :type data: pandas.DataFrame :type selected: dict :type csv: bool + :type show_latency: bool :returns: List of tuples with suite name (str) and data (pandas dataframe) or pandas dataframe if csv is True. :rtype: list[tuple[str, pandas.DataFrame], ] or pandas.DataFrame @@ -78,7 +81,7 @@ def select_coverage_data( ttype = df["test_type"].to_list()[0] # Prepare the coverage data - def _laten(hdrh_string: str, percentile: float) -> int: + def _latency(hdrh_string: str, percentile: float) -> int: """Get latency from HDRH string for given percentile. :param hdrh_string: Encoded HDRH string. @@ -117,87 +120,25 @@ def select_coverage_data( cov["Throughput_NDR"] = df.apply( lambda row: row["result_ndr_lower_rate_value"] / 1e6, axis=1 ) - cov["Throughput_NDR_Mbps"] = df.apply( - lambda row: row["result_ndr_lower_bandwidth_value"] /1e9, axis=1 + cov["Throughput_NDR_Gbps"] = df.apply( + lambda row: row["result_ndr_lower_bandwidth_value"] / 1e9, axis=1 ) cov["Throughput_PDR"] = df.apply( lambda row: row["result_pdr_lower_rate_value"] / 1e6, axis=1 ) - cov["Throughput_PDR_Mbps"] = df.apply( - lambda row: row["result_pdr_lower_bandwidth_value"] /1e9, axis=1 - ) - cov["Latency Forward [us]_10% PDR_P50"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_10_hdrh"], 50.0), - axis=1 - ) - cov["Latency Forward [us]_10% PDR_P90"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_10_hdrh"], 90.0), - axis=1 - ) - cov["Latency Forward [us]_10% PDR_P99"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_10_hdrh"], 99.0), - axis=1 - ) - cov["Latency Forward [us]_50% PDR_P50"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_50_hdrh"], 50.0), - axis=1 - ) - cov["Latency Forward [us]_50% PDR_P90"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_50_hdrh"], 90.0), - axis=1 - ) - cov["Latency Forward [us]_50% PDR_P99"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_50_hdrh"], 99.0), - axis=1 - ) - cov["Latency Forward [us]_90% PDR_P50"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_90_hdrh"], 50.0), - axis=1 - ) - cov["Latency Forward [us]_90% PDR_P90"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_90_hdrh"], 90.0), - axis=1 - ) - cov["Latency Forward [us]_90% PDR_P99"] = df.apply( - lambda row: _laten(row["result_latency_forward_pdr_90_hdrh"], 99.0), - axis=1 - ) - cov["Latency Reverse [us]_10% PDR_P50"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_10_hdrh"], 50.0), - axis=1 - ) - cov["Latency Reverse [us]_10% PDR_P90"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_10_hdrh"], 90.0), - axis=1 - ) - cov["Latency Reverse [us]_10% PDR_P99"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_10_hdrh"], 99.0), - axis=1 - ) - cov["Latency Reverse [us]_50% PDR_P50"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_50_hdrh"], 50.0), - axis=1 - ) - cov["Latency Reverse [us]_50% PDR_P90"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_50_hdrh"], 90.0), - axis=1 - ) - cov["Latency Reverse [us]_50% PDR_P99"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_50_hdrh"], 99.0), - axis=1 - ) - cov["Latency Reverse [us]_90% PDR_P50"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_90_hdrh"], 50.0), - axis=1 - ) - cov["Latency Reverse [us]_90% PDR_P90"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_90_hdrh"], 90.0), - axis=1 - ) - cov["Latency Reverse [us]_90% PDR_P99"] = df.apply( - lambda row: _laten(row["result_latency_reverse_pdr_90_hdrh"], 99.0), - axis=1 + cov["Throughput_PDR_Gbps"] = df.apply( + lambda row: row["result_pdr_lower_bandwidth_value"] / 1e9, axis=1 ) + if show_latency: + for way in ("Forward", "Reverse"): + for pdr in (10, 50, 90): + for perc in (50, 90, 99): + latency = f"result_latency_{way.lower()}_pdr_{pdr}_hdrh" + cov[f"Latency {way} [us]_{pdr}% PDR_P{perc}"] = \ + df.apply( + lambda row: _latency(row[latency], perc), + axis=1 + ) if csv: return cov @@ -222,19 +163,26 @@ def select_coverage_data( return l_data -def coverage_tables(data: pd.DataFrame, selected: dict) -> list: +def coverage_tables( + data: pd.DataFrame, + selected: dict, + show_latency: bool=True + ) -> list: """Generate an accordion with coverage tables. :param data: Coverage data. :param selected: Dictionary with user selection. + :param show_latency: If True, latency is displayed in the tables. :type data: pandas.DataFrame :type selected: dict + :type show_latency: bool :returns: Accordion with suite names (titles) and tables. :rtype: dash_bootstrap_components.Accordion """ accordion_items = list() - for suite, cov_data in select_coverage_data(data, selected): + sel_data = select_coverage_data(data, selected, show_latency=show_latency) + for suite, cov_data in sel_data: if len(cov_data.columns) == 3: # VPP Device cols = [ {