X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=csit.infra.dash%2Fapp%2Fcdash%2Freport%2Flayout.py;h=cae6993ec2af71bd6a6785adc186e91cd5ccb58f;hb=a214378b5d0589fcbd9a9cc8c9b25bce8a862cec;hp=d4720d91fcb1c989bc4a17eded6e2963897adab4;hpb=430c577e8e8a737cb46e67cbe802e038b8ffd25a;p=csit.git diff --git a/csit.infra.dash/app/cdash/report/layout.py b/csit.infra.dash/app/cdash/report/layout.py index d4720d91fc..cae6993ec2 100644 --- a/csit.infra.dash/app/cdash/report/layout.py +++ b/csit.infra.dash/app/cdash/report/layout.py @@ -1,4 +1,4 @@ -# Copyright (c) 2022 Cisco and/or its affiliates. +# Copyright (c) 2023 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -33,8 +33,7 @@ from ..utils.trigger import Trigger from ..utils.utils import show_tooltip, label, sync_checklists, gen_new_url, \ generate_options, get_list_group_items from ..utils.url_processing import url_decode -from ..data.data import Data -from .graphs import graph_iterative, get_short_version, select_iterative_data +from .graphs import graph_iterative, select_iterative_data # Control panel partameters and their default values. @@ -76,8 +75,14 @@ class Layout: """The layout of the dash app and the callbacks. """ - def __init__(self, app: Flask, releases: list, html_layout_file: str, - graph_layout_file: str, data_spec_file: str, tooltip_file: str) -> None: + def __init__( + self, + app: Flask, + data_iterative: pd.DataFrame, + html_layout_file: str, + graph_layout_file: str, + tooltip_file: str + ) -> None: """Initialization: - save the input parameters, - read and pre-process the data, @@ -86,54 +91,35 @@ class Layout: - read tooltips from the tooltip file. :param app: Flask application running the dash application. - :param releases: Lis of releases to be displayed. :param html_layout_file: Path and name of the file specifying the HTML layout of the dash application. :param graph_layout_file: Path and name of the file with layout of plot.ly graphs. - :param data_spec_file: Path and name of the file specifying the data to - be read from parquets for this application. :param tooltip_file: Path and name of the yaml file specifying the tooltips. :type app: Flask - :type releases: list :type html_layout_file: str :type graph_layout_file: str - :type data_spec_file: str :type tooltip_file: str """ # Inputs self._app = app - self.releases = releases self._html_layout_file = html_layout_file self._graph_layout_file = graph_layout_file - self._data_spec_file = data_spec_file self._tooltip_file = tooltip_file - - # Read the data: - self._data = pd.DataFrame() - for rls in releases: - data_mrr = Data(self._data_spec_file, True).\ - read_iterative_mrr(release=rls.replace("csit", "rls")) - data_mrr["release"] = rls - data_ndrpdr = Data(self._data_spec_file, True).\ - read_iterative_ndrpdr(release=rls.replace("csit", "rls")) - data_ndrpdr["release"] = rls - self._data = pd.concat( - [self._data, data_mrr, data_ndrpdr], - ignore_index=True - ) + self._data = data_iterative # 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 = get_short_version(row["dut_version"], dut) + d_ver = row["dut_version"] tbed = "-".join(lst_job[-2:]) lst_test_id = row["test_id"].split(".") if dut == "dpdk": @@ -182,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: @@ -343,7 +342,7 @@ class Layout: return dbc.Col( id="col-plotting-area", children=[ - dcc.Loading( + dbc.Spinner( children=[ dbc.Row( id="plotting-area", @@ -503,132 +502,164 @@ class Layout: dbc.Row( class_name="g-0 p-1", children=[ - dbc.Label( - children=show_tooltip( - self._tooltips, - "help-framesize", - "Frame Size" - ) - ), - dbc.Col( - children=[ - dbc.Checklist( - id={"type": "ctrl-cl", "index": "frmsize-all"}, - options=C.CL_ALL_DISABLED, - inline=True, - switch=False, - input_class_name="border-info bg-info" + dbc.InputGroup( + [ + dbc.InputGroupText( + children=show_tooltip( + self._tooltips, + "help-framesize", + "Frame Size" + ) + ), + dbc.Col( + children=[ + dbc.Checklist( + id={ + "type": "ctrl-cl", + "index": "frmsize-all" + }, + options=C.CL_ALL_DISABLED, + inline=True, + class_name="ms-2" + ) + ], + width=2 + ), + dbc.Col( + children=[ + dbc.Checklist( + id={ + "type": "ctrl-cl", + "index": "frmsize" + }, + inline=True + ) + ] ) ], - width=3 - ), - dbc.Col( - children=[ - dbc.Checklist( - id={"type": "ctrl-cl", "index": "frmsize"}, - inline=True, - switch=False, - input_class_name="border-info bg-info" - ) - ] + style={"align-items": "center"}, + size="sm" ) ] ), dbc.Row( class_name="g-0 p-1", children=[ - dbc.Label( - children=show_tooltip( - self._tooltips, - "help-cores", - "Number of Cores" - ) - ), - dbc.Col( - children=[ - dbc.Checklist( - id={"type": "ctrl-cl", "index": "core-all"}, - options=C.CL_ALL_DISABLED, - inline=False, - switch=False, - input_class_name="border-info bg-info" + dbc.InputGroup( + [ + dbc.InputGroupText( + children=show_tooltip( + self._tooltips, + "help-cores", + "Number of Cores" + ) + ), + dbc.Col( + children=[ + dbc.Checklist( + id={ + "type": "ctrl-cl", + "index": "core-all" + }, + options=C.CL_ALL_DISABLED, + inline=True, + class_name="ms-2" + ) + ], + width=2 + ), + dbc.Col( + children=[ + dbc.Checklist( + id={ + "type": "ctrl-cl", + "index": "core" + }, + inline=True + ) + ] ) ], - width=3 - ), - dbc.Col( - children=[ - dbc.Checklist( - id={"type": "ctrl-cl", "index": "core"}, - inline=True, - switch=False, - input_class_name="border-info bg-info" - ) - ] + style={"align-items": "center"}, + size="sm" ) ] ), dbc.Row( class_name="g-0 p-1", children=[ - dbc.Label( - children=show_tooltip( - self._tooltips, - "help-ttype", - "Test Type" - ) - ), - dbc.Col( - children=[ - dbc.Checklist( - id={"type": "ctrl-cl", "index": "tsttype-all"}, - options=C.CL_ALL_DISABLED, - inline=True, - switch=False, - input_class_name="border-info bg-info" + dbc.InputGroup( + [ + dbc.InputGroupText( + children=show_tooltip( + self._tooltips, + "help-ttype", + "Test Type" + ) + ), + dbc.Col( + children=[ + dbc.Checklist( + id={ + "type": "ctrl-cl", + "index": "tsttype-all" + }, + options=C.CL_ALL_DISABLED, + inline=True, + class_name="ms-2" + ) + ], + width=2 + ), + dbc.Col( + children=[ + dbc.Checklist( + id={ + "type": "ctrl-cl", + "index": "tsttype" + }, + inline=True + ) + ] ) ], - width=3 - ), - dbc.Col( - children=[ - dbc.Checklist( - id={"type": "ctrl-cl", "index": "tsttype"}, - inline=True, - switch=False, - input_class_name="border-info bg-info" - ) - ] + style={"align-items": "center"}, + size="sm" ) ] ), dbc.Row( class_name="g-0 p-1", children=[ - dbc.Label( - children=show_tooltip( - self._tooltips, - "help-normalize", - "Normalize" - ) - ), - dbc.Col( - children=[ - dbc.Checklist( - id="normalize", - options=[{ - "value": "normalize", - "label": ( - "Normalize results to CPU " - "frequency 2GHz" - ) - }], - value=[], - inline=True, - switch=False, - input_class_name="border-info bg-info" + dbc.InputGroup( + [ + dbc.InputGroupText( + children=show_tooltip( + self._tooltips, + "help-normalize", + "Normalization" + ) ), - ] + dbc.Col( + children=[ + dbc.Checklist( + id="normalize", + options=[{ + "value": "normalize", + "label": ( + "Normalize to CPU frequency " + "2GHz" + ) + }], + value=[], + inline=True, + class_name="ms-2" + ) + ] + ) + ], + style={"align-items": "center"}, + size="sm" ) ] ), @@ -743,7 +774,7 @@ class Layout: [ dbc.Button( id="plot-btn-url", - children="URL", + children="Show URL", class_name="me-1", color="info", style={ @@ -1158,7 +1189,7 @@ class Layout: f"cl-{param}-val": val_sel, f"cl-{param}-all-val": val_all, }) - if all((ctrl_panel.get("cl-core-val"), + if all((ctrl_panel.get("cl-core-val"), ctrl_panel.get("cl-frmsize-val"), ctrl_panel.get("cl-tsttype-val"), )): ctrl_panel.set({"btn-add-dis": False}) @@ -1219,7 +1250,7 @@ class Layout: if on_draw: if store_sel: - lg_selected = get_list_group_items(store_sel) + lg_selected = get_list_group_items(store_sel, "sel-cl") plotting_area = self._get_plotting_area( store_sel, bool(normalize),