aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools
diff options
context:
space:
mode:
Diffstat (limited to 'resources/tools')
-rw-r--r--resources/tools/presentation/generator_alerts.py23
-rw-r--r--resources/tools/presentation/generator_plots.py120
-rw-r--r--resources/tools/presentation/generator_tables.py15
-rw-r--r--resources/tools/presentation/input_data_parser.py25
-rw-r--r--resources/tools/presentation/specifications/trending/elements.yaml437
-rw-r--r--resources/tools/presentation/specifications/trending/layouts.yaml68
6 files changed, 460 insertions, 228 deletions
diff --git a/resources/tools/presentation/generator_alerts.py b/resources/tools/presentation/generator_alerts.py
index a71b775485..4dd78fe820 100644
--- a/resources/tools/presentation/generator_alerts.py
+++ b/resources/tools/presentation/generator_alerts.py
@@ -246,7 +246,7 @@ class Alerting:
:type sort: bool
:returns: CSIT build number, VPP version, Number of passed tests,
Number of failed tests, Compressed failed tests.
- :rtype: tuple(str, str, int, int, OrderedDict)
+ :rtype: tuple(str, str, int, int, str, OrderedDict)
"""
directory = self.configs[alert[u"way"]][u"output-dir"]
@@ -268,6 +268,10 @@ class Alerting:
if idx == 3:
failed = line[:-1]
continue
+ if idx == 4:
+ minutes = int(line[:-1]) // 60000
+ duration = f"{(minutes // 60):02d}:{(minutes % 60):02d}"
+ continue
try:
test = line[:-1].split(u'-')
name = u'-'.join(test[3:-1])
@@ -285,14 +289,14 @@ class Alerting:
failed_tests[name][u"cores"].append(test[2])
except IOError:
logging.error(f"No such file or directory: {file_path}")
- return None, None, None, None, None
+ return None, None, None, None, None, None
if sort:
sorted_failed_tests = OrderedDict()
for key in sorted(failed_tests.keys()):
sorted_failed_tests[key] = failed_tests[key]
- return build, version, passed, failed, sorted_failed_tests
+ return build, version, passed, failed, duration, sorted_failed_tests
- return build, version, passed, failed, failed_tests
+ return build, version, passed, failed, duration, failed_tests
def _list_gressions(self, alert, idx, header, re_pro):
"""Create a file with regressions or progressions for the test set
@@ -352,7 +356,7 @@ class Alerting:
try:
groups = re.search(
re.compile(
- r'((vpp|dpdk)-\dn-(skx|clx|hsw|tsh|dnv|zn2|tx2)-.*)'
+ r'((vpp|dpdk)-\dn-(skx|clx|tsh|dnv|zn2|tx2)-.*)'
),
test_set
)
@@ -363,7 +367,7 @@ class Alerting:
f"The test set {test_set} does not include information "
f"about test bed. Using empty string instead."
)
- build, version, passed, failed, failed_tests = \
+ build, version, passed, failed, duration, failed_tests = \
self._get_compressed_failed_tests(alert, test_set)
if build is None:
text += (
@@ -373,8 +377,11 @@ class Alerting:
)
continue
text += (
- f"\n\n{test_set_short}, {failed} tests failed, {passed} tests "
- f"passed, CSIT build: {alert[u'urls'][idx]}/{build}, "
+ f"\n\n{test_set_short}, "
+ f"{failed} tests failed, "
+ f"{passed} tests passed, "
+ f"duration: {duration}, "
+ f"CSIT build: {alert[u'urls'][idx]}/{build}, "
f"{device} version: {version}\n\n"
)
diff --git a/resources/tools/presentation/generator_plots.py b/resources/tools/presentation/generator_plots.py
index f03a57f279..f273aeb97b 100644
--- a/resources/tools/presentation/generator_plots.py
+++ b/resources/tools/presentation/generator_plots.py
@@ -19,6 +19,7 @@ import re
import logging
from collections import OrderedDict
+from datetime import datetime
from copy import deepcopy
from math import log
@@ -27,6 +28,7 @@ import hdrh.codec
import pandas as pd
import plotly.offline as ploff
import plotly.graph_objs as plgo
+import plotly.exceptions as plerr
from plotly.exceptions import PlotlyError
@@ -84,7 +86,8 @@ def generate_plots(spec, data):
u"plot_hdrh_lat_by_percentile": plot_hdrh_lat_by_percentile,
u"plot_hdrh_lat_by_percentile_x_log": plot_hdrh_lat_by_percentile_x_log,
u"plot_mrr_box_name": plot_mrr_box_name,
- u"plot_ndrpdr_box_name": plot_ndrpdr_box_name
+ u"plot_ndrpdr_box_name": plot_ndrpdr_box_name,
+ u"plot_statistics": plot_statistics
}
logging.info(u"Generating the plots ...")
@@ -102,6 +105,121 @@ def generate_plots(spec, data):
logging.info(u"Done.")
+def plot_statistics(plot, input_data):
+ """Generate the plot(s) with algorithm: plot_statistics
+ specified in the specification file.
+
+ :param plot: Plot to generate.
+ :param input_data: Data to process.
+ :type plot: pandas.Series
+ :type input_data: InputData
+ """
+
+ data_x = list()
+ data_y_pass = list()
+ data_y_fail = list()
+ data_y_duration = list()
+ hover_text = list()
+ hover_str = (
+ u"date: {date}<br>"
+ u"passed: {passed}<br>"
+ u"failed: {failed}<br>"
+ u"duration: {duration}<br>"
+ u"{sut}-ref: {build}<br>"
+ u"csit-ref: {test}-{period}-build-{build_nr}<br>"
+ u"testbed: {testbed}"
+ )
+ for job, builds in plot[u"data"].items():
+ for build_nr in builds:
+ try:
+ meta = input_data.metadata(job, str(build_nr))
+ generated = meta[u"generated"]
+ date = datetime(
+ int(generated[0:4]),
+ int(generated[4:6]),
+ int(generated[6:8]),
+ int(generated[9:11]),
+ int(generated[12:])
+ )
+ d_y_pass = meta[u"tests_passed"]
+ d_y_fail = meta[u"tests_failed"]
+ minutes = meta[u"elapsedtime"] // 60000
+ duration = f"{(minutes // 60):02d}:{(minutes % 60):02d}"
+ version = meta[u"version"]
+ except (KeyError, IndexError, ValueError, AttributeError):
+ continue
+ data_x.append(date)
+ data_y_pass.append(d_y_pass)
+ data_y_fail.append(d_y_fail)
+ data_y_duration.append(minutes)
+ hover_text.append(hover_str.format(
+ date=date,
+ passed=d_y_pass,
+ failed=d_y_fail,
+ duration=duration,
+ sut=u"vpp" if u"vpp" in job else u"dpdk",
+ build=version,
+ test=u"mrr" if u"mrr" in job else u"ndrpdr",
+ period=u"daily" if u"daily" in job else u"weekly",
+ build_nr=build_nr,
+ testbed=meta[u"testbed"]
+ ))
+
+ traces = [
+ plgo.Bar(
+ x=data_x,
+ y=data_y_pass,
+ name=u"Passed",
+ text=hover_text,
+ hoverinfo=u"text"
+ ),
+ plgo.Bar(
+ x=data_x,
+ y=data_y_fail,
+ name=u"Failed",
+ text=hover_text,
+ hoverinfo=u"text"),
+ plgo.Scatter(
+ x=data_x,
+ y=data_y_duration,
+ name=u"Duration",
+ yaxis=u"y2",
+ text=hover_text,
+ hoverinfo=u"text"
+ )
+ ]
+
+ name_file = f"{plot[u'output-file']}.html"
+
+ logging.info(f" Writing the file {name_file}")
+ plpl = plgo.Figure(data=traces, layout=plot[u"layout"])
+ tickvals = [min(data_y_duration), max(data_y_duration)]
+ step = (tickvals[1] - tickvals[0]) / 6
+ for i in range(6):
+ tickvals.append(int(tickvals[0] + step * (i + 1)))
+ plpl.update_layout(
+ yaxis2=dict(
+ title=u"Duration [hh:mm]",
+ anchor=u"x",
+ overlaying=u"y",
+ side=u"right",
+ tickmode=u"array",
+ tickvals=tickvals,
+ ticktext=[f"{(val // 60):02d}:{(val % 60):02d}" for val in tickvals]
+ )
+ )
+ plpl.update_layout(barmode=u"stack")
+ try:
+ ploff.plot(
+ plpl,
+ show_link=False,
+ auto_open=False,
+ filename=name_file
+ )
+ except plerr.PlotlyEmptyDataError:
+ logging.warning(u"No data for the plot. Skipped.")
+
+
def plot_hdrh_lat_by_percentile(plot, input_data):
"""Generate the plot(s) with algorithm: plot_hdrh_lat_by_percentile
specified in the specification file.
diff --git a/resources/tools/presentation/generator_tables.py b/resources/tools/presentation/generator_tables.py
index 42f16e4b33..a715ecb800 100644
--- a/resources/tools/presentation/generator_tables.py
+++ b/resources/tools/presentation/generator_tables.py
@@ -917,7 +917,11 @@ def table_perf_trending_dash(table, input_data):
if len(data_t) < 2:
continue
- classification_lst, avgs, _ = classify_anomalies(data_t)
+ try:
+ classification_lst, avgs, _ = classify_anomalies(data_t)
+ except ValueError as err:
+ logging.info(f"{err} Skipping")
+ return
win_size = min(len(data_t), table[u"window"])
long_win_size = min(len(data_t), table[u"long-trend-window"])
@@ -1341,6 +1345,8 @@ def table_last_failed_tests(table, input_data):
build = str(build)
try:
version = input_data.metadata(job, build).get(u"version", u"")
+ duration = \
+ input_data.metadata(job, build).get(u"elapsedtime", u"")
except KeyError:
logging.error(f"Data for {job}: {build} is not present.")
return
@@ -1359,15 +1365,16 @@ def table_last_failed_tests(table, input_data):
continue
nic = groups.group(0)
failed_tests.append(f"{nic}-{tst_data[u'name']}")
- tbl_list.append(str(passed))
- tbl_list.append(str(failed))
+ tbl_list.append(passed)
+ tbl_list.append(failed)
+ tbl_list.append(duration)
tbl_list.extend(failed_tests)
file_name = f"{table[u'output-file']}{table[u'output-file-ext']}"
logging.info(f" Writing file: {file_name}")
with open(file_name, u"wt") as file_handler:
for test in tbl_list:
- file_handler.write(test + u'\n')
+ file_handler.write(f"{test}\n")
def table_failed_tests(table, input_data):
diff --git a/resources/tools/presentation/input_data_parser.py b/resources/tools/presentation/input_data_parser.py
index 00c2380fdc..67c3636aa2 100644
--- a/resources/tools/presentation/input_data_parser.py
+++ b/resources/tools/presentation/input_data_parser.py
@@ -362,7 +362,6 @@ class ExecutionChecker(ResultVisitor):
# Dictionary defining the methods used to parse different types of
# messages
self.parse_msg = {
- u"timestamp": self._get_timestamp,
u"vpp-version": self._get_vpp_version,
u"dpdk-version": self._get_dpdk_version,
u"teardown-papi-history": self._get_papi_history,
@@ -614,18 +613,6 @@ class ExecutionChecker(ResultVisitor):
finally:
self._msg_type = None
- def _get_timestamp(self, msg):
- """Called when extraction of timestamp is required.
-
- :param msg: Message to process.
- :type msg: Message
- :returns: Nothing.
- """
-
- self._timestamp = msg.timestamp[:14]
- self._data[u"metadata"][u"generated"] = self._timestamp
- self._msg_type = None
-
def _get_papi_history(self, msg):
"""Called when extraction of PAPI command history is required.
@@ -1355,9 +1342,6 @@ class ExecutionChecker(ResultVisitor):
elif setup_kw.name.count(u"Install Dpdk Framework On All Duts") and \
not self._version:
self._msg_type = u"dpdk-version"
- elif setup_kw.name.count(u"Set Global Variable") \
- and not self._timestamp:
- self._msg_type = u"timestamp"
elif setup_kw.name.count(u"Setup Framework") and not self._testbed:
self._msg_type = u"testbed"
else:
@@ -1544,6 +1528,15 @@ class InputData:
)
result.visit(checker)
+ checker.data[u"metadata"][u"tests_total"] = \
+ result.statistics.total.all.total
+ checker.data[u"metadata"][u"tests_passed"] = \
+ result.statistics.total.all.passed
+ checker.data[u"metadata"][u"tests_failed"] = \
+ result.statistics.total.all.failed
+ checker.data[u"metadata"][u"elapsedtime"] = result.suite.elapsedtime
+ checker.data[u"metadata"][u"generated"] = result.suite.endtime[:14]
+
return checker.data
def _download_and_parse_build(self, job, build, repeat, pid=10000):
diff --git a/resources/tools/presentation/specifications/trending/elements.yaml b/resources/tools/presentation/specifications/trending/elements.yaml
index 68ec170af0..a640401c7a 100644
--- a/resources/tools/presentation/specifications/trending/elements.yaml
+++ b/resources/tools/presentation/specifications/trending/elements.yaml
@@ -1,7 +1,145 @@
################################################################################
-### T A B L E S ###
+### P L O T S ###
################################################################################
+- type: "plot"
+ title: "Statistics: 3n-skx mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-3n-skx-mrr"
+ data: "plot-performance-trending-vpp-3n-skx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 3n-skx ndrpdr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-3n-skx-ndrpdr"
+ data: "plot-ndrpdr-comparison-3n-skx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: DPDK 3n-skx mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-dpdk-3n-skx-mrr"
+ data: "plot-performance-trending-dpdk-3n-skx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 2n-skx mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-2n-skx-mrr"
+ data: "plot-performance-trending-vpp-2n-skx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 2n-skx ndrpdr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-2n-skx-ndrpdr"
+ data: "plot-ndrpdr-comparison-2n-skx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: DPDK 2n-skx mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-dpdk-2n-skx-mrr"
+ data: "plot-performance-trending-dpdk-2n-skx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 2n-clx mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-2n-clx-mrr"
+ data: "plot-performance-trending-vpp-2n-clx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 2n-clx ndrpdr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-2n-clx-ndrpdr"
+ data: "plot-ndrpdr-comparison-2n-clx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: DPDK 2n-clx mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-dpdk-2n-skx-mrr"
+ data: "plot-performance-trending-dpdk-2n-clx"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 2n-zn2 mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-2n-zn2-mrr"
+ data: "plot-performance-trending-vpp-2n-zn2"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: DPDK 2n-zn2 mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-dpdk-2n-zn2-mrr"
+ data: "plot-performance-trending-dpdk-2n-zn2"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 3n-tsh mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-3n-tsh-mrr"
+ data: "plot-performance-trending-vpp-3n-tsh"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: DPDK 3n-tsh mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-dpdk-3n-tsh-mrr"
+ data: "plot-performance-trending-dpdk-3n-tsh"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 2n-tx2 mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-2n-tx2-mrr"
+ data: "plot-performance-trending-vpp-2n-tx2"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: DPDK 2n-tx2 mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-dpdk-2n-tx2-mrr"
+ data: "plot-performance-trending-dpdk-2n-tx2"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 3n-dnv mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-3n-dnv-mrr"
+ data: "plot-performance-trending-vpp-3n-dnv"
+ layout:
+ layout: "plot-statistics"
+
+- type: "plot"
+ title: "Statistics: 2n-dnv mrr"
+ algorithm: "plot_statistics"
+ output-file: "{DIR[STATIC,VPP]}/stats-2n-dnv-mrr"
+ data: "plot-performance-trending-vpp-2n-dnv"
+ layout:
+ layout: "plot-statistics"
+
+################################################################################
+### T A B L E S ###
################################################################################
# VPP NDRPDR weekly comparison 2n-skx-xxv710 2t1c ndr
@@ -94,8 +232,7 @@
- reference: -2
compare: -1
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 3n-skx"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -107,8 +244,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 2n-skx"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -120,8 +256,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 2n-clx"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -133,8 +268,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 2n-zn2"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -146,8 +280,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 3n-tsh"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -159,8 +292,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 2n-tx2"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -172,8 +304,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 3n-dnv"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -185,8 +316,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 2n-dnv"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -198,8 +328,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 3n-skx-ndrpdr"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -211,8 +340,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 2n-skx-ndrpdr"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -224,8 +352,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) VPP 2n-clx-ndrpdr"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -237,8 +364,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) DPDK 3n-tsh"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -250,8 +376,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) DPDK 2n-tx2"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -263,8 +388,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) DPDK 3n-skx"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -276,8 +400,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) DPDK 2n-skx"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -289,8 +412,7 @@
- "parent"
- "status"
--
- type: "table"
+- type: "table"
title: "Last failed tests (last builds) DPDK 2n-clx"
algorithm: "table_last_failed_tests"
output-file-ext: ".txt"
@@ -303,8 +425,7 @@
- "status"
# 3n-skx
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-3n-skx ndr"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -319,8 +440,7 @@
window: 4
long-trend-window: 12
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-3n-skx pdr"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -335,8 +455,7 @@
window: 4
long-trend-window: 12
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-3n-skx ndr"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-3n-skx-ndr.csv"
@@ -345,8 +464,7 @@
test-type: "NDR"
add-links: True
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-3n-skx pdr"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-3n-skx-pdr.csv"
@@ -356,8 +474,7 @@
add-links: True
# 2n-skx
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-2n-skx ndr"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -372,8 +489,7 @@
window: 4
long-trend-window: 12
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-2n-skx pdr"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -388,8 +504,7 @@
window: 4
long-trend-window: 12
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-2n-skx ndr"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-skx-ndr.csv"
@@ -398,8 +513,7 @@
test-type: "NDR"
add-links: True
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-2n-skx pdr"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-skx-pdr.csv"
@@ -409,8 +523,7 @@
add-links: True
# 2n-clx
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-2n-clx ndr"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -425,8 +538,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-2n-clx pdr"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -441,8 +553,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-2n-clx ndr"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-clx-ndr.csv"
@@ -451,8 +562,7 @@
test-type: "NDR"
add-links: True
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-2n-clx pdr"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-clx-pdr.csv"
@@ -463,8 +573,7 @@
###############################################################################
# 3n-skx
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-3n-skx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -478,8 +587,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 4t2c-3n-skx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -493,8 +601,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 8t4c-3n-skx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -508,32 +615,28 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-3n-skx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-3n-skx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-3n-skx.rst"
testbed: "3n-skx"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 4t2c-3n-skx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t2c-3n-skx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t2c-3n-skx.rst"
testbed: "3n-skx"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 8t4c-3n-skx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-8t4c-3n-skx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-8t4c-3n-skx.rst"
testbed: "3n-skx"
--
- type: "table"
+- type: "table"
title: "Failed MRR tests 3n-skx"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -546,16 +649,14 @@
- "status"
window: 7 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed MRR tests 3n-skx"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-3n-skx.csv"
output-file: "{DIR[STATIC,VPP]}/failed-tests-3n-skx.rst"
testbed: "3n-skx"
--
- type: "table"
+- type: "table"
title: "Failed NDRPDR tests 3n-skx"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -568,8 +669,7 @@
- "status"
window: 30 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed NDRPDR tests 3n-skx"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-3n-skx-ndrpdr.csv"
@@ -579,8 +679,7 @@
################################################################################
# 2n-skx
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-2n-skx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -594,8 +693,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 4t2c-2n-skx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -609,8 +707,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 8t4c-2n-skx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -624,32 +721,28 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-2n-skx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-skx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-skx.rst"
testbed: "2n-skx"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 4t2c-2n-skx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t2c-2n-skx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t2c-2n-skx.rst"
testbed: "2n-skx"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 8t4c-2n-skx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-8t4c-2n-skx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-8t4c-2n-skx.rst"
testbed: "2n-skx"
--
- type: "table"
+- type: "table"
title: "Failed MRR tests 2n-skx"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -662,16 +755,14 @@
- "status"
window: 7 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed MRR tests 2n-skx"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-2n-skx.csv"
output-file: "{DIR[STATIC,VPP]}/failed-tests-2n-skx.rst"
testbed: "2n-skx"
--
- type: "table"
+- type: "table"
title: "Failed NDRPDR tests 2n-skx"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -684,8 +775,7 @@
- "status"
window: 30 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed NDRPDR tests 2n-skx"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-2n-skx-ndrpdr.csv"
@@ -695,8 +785,7 @@
################################################################################
# 2n-clx
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-2n-clx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -710,8 +799,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 4t2c-2n-clx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -725,8 +813,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 8t4c-2n-clx"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -740,32 +827,28 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-2n-clx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-clx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-clx.rst"
testbed: "2n-clx"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 4t2c-2n-clx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t2c-2n-clx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t2c-2n-clx.rst"
testbed: "2n-clx"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 8t4c-2n-clx"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-8t4c-2n-clx.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-8t4c-2n-clx.rst"
testbed: "2n-clx"
--
- type: "table"
+- type: "table"
title: "Failed MRR tests 2n-clx"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -778,16 +861,14 @@
- "status"
window: 7 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed MRR tests 2n-clx"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-2n-clx.csv"
output-file: "{DIR[STATIC,VPP]}/failed-tests-2n-clx.rst"
testbed: "2n-clx"
--
- type: "table"
+- type: "table"
title: "Failed NDRPDR tests 2n-clx"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -800,8 +881,7 @@
- "status"
window: 30 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed NDRPDR tests 2n-clx"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-2n-clx-ndrpdr.csv"
@@ -811,8 +891,7 @@
################################################################################
# 2n-zn2
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t1c-2n-zn2"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -826,8 +905,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 4t2c-2n-zn2"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -841,8 +919,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 8t4c-2n-zn2"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -856,32 +933,28 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t1c-2n-zn2"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-zn2.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t1c-2n-zn2.rst"
testbed: "2n-zn2"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 4t2c-2n-zn2"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t2c-2n-zn2.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t2c-2n-zn2.rst"
testbed: "2n-zn2"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 8t4c-2n-zn2"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-8t4c-2n-zn2.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-8t4c-2n-zn2.rst"
testbed: "2n-zn2"
--
- type: "table"
+- type: "table"
title: "Failed MRR tests 2n-zn2"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -894,8 +967,7 @@
- "status"
window: 7 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed MRR tests 2n-zn2"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-2n-zn2.csv"
@@ -904,8 +976,7 @@
################################################################################
# 3n-tsh
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 1t1c-3n-tsh"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -919,8 +990,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t2c-3n-tsh"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -934,8 +1004,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 4t4c-3n-tsh"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -949,32 +1018,28 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 1t1c-3n-tsh"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-1t1c-3n-tsh.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-1t1c-3n-tsh.rst"
testbed: "3n-tsh"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t2c-3n-tsh"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t2c-3n-tsh.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t2c-3n-tsh.rst"
testbed: "3n-tsh"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 4t4c-3n-tsh"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t4c-3n-tsh.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t4c-3n-tsh.rst"
testbed: "3n-tsh"
--
- type: "table"
+- type: "table"
title: "Failed MRR tests 3n-tsh"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -987,8 +1052,7 @@
- "status"
window: 7 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed MRR tests 3n-tsh"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-3n-tsh.csv"
@@ -997,8 +1061,7 @@
################################################################################
# 2n-tx2
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 1t1c-2n-tx2"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1012,8 +1075,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t2c-2n-tx2"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1027,8 +1089,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 4t4c-2n-tx2"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1042,32 +1103,28 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 1t1c-2n-tx2"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-1t1c-2n-tx2.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-1t1c-2n-tx2.rst"
testbed: "2n-tx2"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t2c-2n-tx2"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t2c-2n-tx2.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t2c-2n-tx2.rst"
testbed: "2n-tx2"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 4t4c-2n-tx2"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t4c-2n-tx2.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t4c-2n-tx2.rst"
testbed: "2n-tx2"
--
- type: "table"
+- type: "table"
title: "Failed MRR tests 2n-tx2"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -1080,8 +1137,7 @@
- "status"
window: 7 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed MRR tests 2n-tx2"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-2n-tx2.csv"
@@ -1090,8 +1146,7 @@
################################################################################
# 3n-dnv
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 1t1c-3n-dnv"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1105,8 +1160,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t2c-3n-dnv"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1120,8 +1174,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 4t4c-3n-dnv"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1135,32 +1188,28 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 1t1c-3n-dnv"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-1t1c-3n-dnv.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-1t1c-3n-dnv.rst"
testbed: "3n-dnv"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t2c-3n-dnv"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t2c-3n-dnv.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t2c-3n-dnv.rst"
testbed: "3n-dnv"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 4t4c-3n-dnv"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t4c-3n-dnv.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t4c-3n-dnv.rst"
testbed: "3n-dnv"
--
- type: "table"
+- type: "table"
title: "Failed MRR tests 3n-dnv"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -1173,8 +1222,7 @@
- "status"
window: 7 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed MRR tests 3n-dnv"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-3n-dnv.csv"
@@ -1183,8 +1231,7 @@
################################################################################
# 2n-dnv
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 1t1c-2n-dnv"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1198,8 +1245,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 2t2c-2n-dnv"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1213,8 +1259,7 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "Performance trending dashboard 4t4c-2n-dnv"
algorithm: "table_perf_trending_dash"
output-file-ext: ".csv"
@@ -1228,32 +1273,28 @@
window: 14
long-trend-window: 180
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 1t1c-2n-dnv"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-1t1c-2n-dnv.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-1t1c-2n-dnv.rst"
testbed: "2n-dnv"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 2t2c-2n-dnv"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t2c-2n-dnv.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-2t2c-2n-dnv.rst"
testbed: "2n-dnv"
--
- type: "table"
+- type: "table"
title: "HTML performance trending dashboard 4t4c-2n-dnv"
algorithm: "table_perf_trending_dash_html"
input-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t4c-2n-dnv.csv"
output-file: "{DIR[STATIC,VPP]}/performance-trending-dashboard-4t4c-2n-dnv.rst"
testbed: "2n-dnv"
--
- type: "table"
+- type: "table"
title: "Failed MRR tests 2n-dnv"
algorithm: "table_failed_tests"
output-file-ext: ".csv"
@@ -1266,8 +1307,7 @@
- "status"
window: 7 # days
--
- type: "table"
+- type: "table"
title: "HTML Failed MRR tests 2n-dnv"
algorithm: "table_failed_tests_html"
input-file: "{DIR[STATIC,VPP]}/failed-tests-2n-dnv.csv"
@@ -1280,8 +1320,7 @@
# Plots VPP Continuous Performance Trending and Analysis
--
- type: "cpta"
+- type: "cpta"
title: "Continuous Performance Trending and Analysis"
output-file: "{DIR[STATIC,VPP]}"
diff --git a/resources/tools/presentation/specifications/trending/layouts.yaml b/resources/tools/presentation/specifications/trending/layouts.yaml
index ccc4a39939..72bd69a652 100644
--- a/resources/tools/presentation/specifications/trending/layouts.yaml
+++ b/resources/tools/presentation/specifications/trending/layouts.yaml
@@ -4,6 +4,74 @@
- type: "layouts"
+ plot-statistics:
+ title: ""
+ titlefont:
+ size: 16
+ autosize: True
+ showlegend: True
+ width: 1100
+ height: 800
+ yaxis:
+ showticklabels: True
+ title: "Number of Passed / Failed Tests"
+ gridcolor: "rgb(238, 238, 238)"
+ linecolor: "rgb(238, 238, 238)"
+ showline: True
+ zeroline: False
+ tickcolor: "rgb(238, 238, 238)"
+ linewidth: 1
+ showgrid: True
+ xaxis:
+ title: 'Date [MMDD]'
+ type: "date"
+ autorange: True
+ fixedrange: False
+ showgrid: True
+ gridcolor: "rgb(238, 238, 238)"
+ showline: True
+ linecolor: "rgb(238, 238, 238)"
+ zeroline: False
+ linewidth: 1
+ showticklabels: True
+ tickcolor: "rgb(238, 238, 238)"
+ tickmode: "auto"
+ tickformat: "%m%d"
+ rangeselector:
+ buttons:
+ - count: 14
+ label: "2w"
+ step: "day"
+ stepmode: "backward"
+ - count: 1
+ label: "1m"
+ step: "month"
+ stepmode: "backward"
+ - count: 2
+ label: "2m"
+ step: "month"
+ stepmode: "backward"
+ - count: 3
+ label: "3m"
+ step: "month"
+ stepmode: "backward"
+ - step: "all"
+ margin:
+ r: 20
+ b: 5
+ t: 5
+ l: 70
+ legend:
+ orientation: "h"
+ xanchor: "center"
+ x: 0.5
+ bordercolor: "rgb(238, 238, 238)"
+ paper_bgcolor: "#fff"
+ plot_bgcolor: "#fff"
+ barmode: "stack"
+ hoverlabel:
+ namelength: -1
+
plot-cpta:
title: ""
titlefont: