X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Ftools%2Fpresentation%2Fgenerator_cpta.py;h=a308f64e2e7406b7486104e07db7da3616f39446;hb=48cd54ff00049d58494834d25d3f0ac846ce4017;hp=ac0a5c60e17d0c14677f5f203565fdf1ea12da90;hpb=1945ebc5fe96f2289c6ffc4cc162daa1d3b8658f;p=csit.git diff --git a/resources/tools/presentation/generator_cpta.py b/resources/tools/presentation/generator_cpta.py index ac0a5c60e1..a308f64e2e 100644 --- a/resources/tools/presentation/generator_cpta.py +++ b/resources/tools/presentation/generator_cpta.py @@ -146,7 +146,7 @@ def generate_cpta(spec, data): def _generate_trending_traces(in_data, job_name, build_info, - show_trend_line=True, name=u"", color=u""): + name=u"", color=u""): """Generate the trending traces: - samples, - outliers, regress, progress @@ -155,13 +155,11 @@ def _generate_trending_traces(in_data, job_name, build_info, :param in_data: Full data set. :param job_name: The name of job which generated the data. :param build_info: Information about the builds. - :param show_trend_line: Show moving median (trending plot). :param name: Name of the plot :param color: Name of the color for the plot. :type in_data: OrderedDict :type job_name: str :type build_info: dict - :type show_trend_line: bool :type name: str :type color: str :returns: Generated traces (list) and the evaluated result. @@ -169,8 +167,13 @@ def _generate_trending_traces(in_data, job_name, build_info, """ data_x = list(in_data.keys()) - data_y_pps = list(in_data.values()) - data_y_mpps = [float(item) / 1e6 for item in data_y_pps] + data_y_pps = list() + data_y_mpps = list() + data_y_stdev = list() + for item in in_data.values(): + data_y_pps.append(float(item[u"receive-rate"])) + data_y_stdev.append(float(item[u"receive-stdev"]) / 1e6) + data_y_mpps.append(float(item[u"receive-rate"]) / 1e6) hover_text = list() xaxis = list() @@ -178,7 +181,8 @@ def _generate_trending_traces(in_data, job_name, build_info, str_key = str(key) date = build_info[job_name][str_key][0] hover_str = (u"date: {date}
" - u"value [Mpps]: {value:.3f}
" + u"average [Mpps]: {value:.3f}
" + u"stdev [Mpps]: {stdev:.3f}
" u"{sut}-ref: {build}
" u"csit-ref: mrr-{period}-build-{build_nr}
" u"testbed: {testbed}") @@ -186,6 +190,7 @@ def _generate_trending_traces(in_data, job_name, build_info, hover_text.append(hover_str.format( date=date, value=data_y_mpps[index], + stdev=data_y_stdev[index], sut=u"dpdk", build=build_info[job_name][str_key][1].rsplit(u'~', 1)[0], period=u"weekly", @@ -195,6 +200,7 @@ def _generate_trending_traces(in_data, job_name, build_info, hover_text.append(hover_str.format( date=date, value=data_y_mpps[index], + stdev=data_y_stdev[index], sut=u"vpp", build=build_info[job_name][str_key][1].rsplit(u'~', 1)[0], period=u"daily", @@ -208,8 +214,9 @@ def _generate_trending_traces(in_data, job_name, build_info, for key, value in zip(xaxis, data_y_pps): data_pd[key] = value - anomaly_classification, avgs_pps = classify_anomalies(data_pd) + anomaly_classification, avgs_pps, stdevs_pps = classify_anomalies(data_pd) avgs_mpps = [avg_pps / 1e6 for avg_pps in avgs_pps] + stdevs_mpps = [stdev_pps / 1e6 for stdev_pps in stdevs_pps] anomalies = OrderedDict() anomalies_colors = list() @@ -221,8 +228,7 @@ def _generate_trending_traces(in_data, job_name, build_info, } if anomaly_classification: for index, (key, value) in enumerate(data_pd.items()): - if anomaly_classification[index] in \ - (u"outlier", u"regression", u"progression"): + if anomaly_classification[index] in (u"regression", u"progression"): anomalies[key] = value / 1e6 anomalies_colors.append( anomaly_color[anomaly_classification[index]]) @@ -251,23 +257,30 @@ def _generate_trending_traces(in_data, job_name, build_info, ) traces = [trace_samples, ] - if show_trend_line: - trace_trend = plgo.Scatter( - x=xaxis, - y=avgs_mpps, - mode=u"lines", - line={ - u"shape": u"linear", - u"width": 1, - u"color": color, - }, - showlegend=False, - legendgroup=name, - name=f"{name}", - text=[f"trend [Mpps]: {avg:.3f}" for avg in avgs_mpps], - hoverinfo=u"text+name" + trend_hover_text = list() + for idx in range(len(data_x)): + trend_hover_str = ( + f"trend [Mpps]: {avgs_mpps[idx]:.3f}
" + f"stdev [Mpps]: {stdevs_mpps[idx]:.3f}" ) - traces.append(trace_trend) + trend_hover_text.append(trend_hover_str) + + trace_trend = plgo.Scatter( + x=xaxis, + y=avgs_mpps, + mode=u"lines", + line={ + u"shape": u"linear", + u"width": 1, + u"color": color, + }, + showlegend=False, + legendgroup=name, + name=f"{name}", + text=trend_hover_text, + hoverinfo=u"text+name" + ) + traces.append(trace_trend) trace_anomalies = plgo.Scatter( x=list(anomalies.keys()), @@ -347,8 +360,8 @@ def _generate_all_charts(spec, input_data): # Transform the data logging.info( - f" Creating the data set for the {graph.get(u'type', u'')} " - f"{graph.get(u'title', u'')}." + f" Creating the data set for the {graph.get(u'type', u'')} " + f"{graph.get(u'title', u'')}." ) if graph.get(u"include", None): @@ -377,8 +390,10 @@ def _generate_all_charts(spec, input_data): if chart_data.get(test_name, None) is None: chart_data[test_name] = OrderedDict() try: - chart_data[test_name][int(index)] = \ - test[u"result"][u"receive-rate"] + chart_data[test_name][int(index)] = { + u"receive-rate": test[u"result"][u"receive-rate"], + u"receive-stdev": test[u"result"][u"receive-stdev"] + } chart_tags[test_name] = test.get(u"tags", None) except (KeyError, TypeError): pass @@ -387,9 +402,12 @@ def _generate_all_charts(spec, input_data): for tst_name, tst_data in chart_data.items(): tst_lst = list() for bld in builds_dict[job_name]: - itm = tst_data.get(int(bld), u'') + itm = tst_data.get(int(bld), dict()) # CSIT-1180: Itm will be list, compute stats. - tst_lst.append(str(itm)) + try: + tst_lst.append(str(itm.get(u"receive-rate", u""))) + except AttributeError: + tst_lst.append(u"") csv_tbl.append(f"{tst_name}," + u",".join(tst_lst) + u'\n') # Generate traces: