X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftools%2Fpresentation%2Fgenerator_CPTA.py;h=e8091c0b8d99f5c7bab7211a0540d03f4ba7f6d4;hp=0c317c05ce4987a138f08c2c76f6f5b2b4d4e61b;hb=f2f19bad6847e315366e5e9ab4952fded0097b1f;hpb=5ae1aea05849a69a97f559756e80b9794482f302 diff --git a/resources/tools/presentation/generator_CPTA.py b/resources/tools/presentation/generator_CPTA.py index 0c317c05ce..e8091c0b8d 100644 --- a/resources/tools/presentation/generator_CPTA.py +++ b/resources/tools/presentation/generator_CPTA.py @@ -197,7 +197,7 @@ def _evaluate_results(in_data, trimmed_data, window=10): return results -def _generate_trending_traces(in_data, period, moving_win_size=10, +def _generate_trending_traces(in_data, build_info, period, moving_win_size=10, fill_missing=True, use_first=False, show_moving_median=True, name="", color=""): """Generate the trending traces: @@ -206,6 +206,7 @@ def _generate_trending_traces(in_data, period, moving_win_size=10, - outliers, regress, progress :param in_data: Full data set. + :param build_info: Information about the builds. :param period: Sampling period. :param moving_win_size: Window size. :param fill_missing: If the chosen sample is missing in the full set, its @@ -215,6 +216,7 @@ def _generate_trending_traces(in_data, period, moving_win_size=10, :param name: Name of the plot :param color: Name of the color for the plot. :type in_data: OrderedDict + :type build_info: dict :type period: int :type moving_win_size: int :type fill_missing: bool @@ -230,8 +232,11 @@ def _generate_trending_traces(in_data, period, moving_win_size=10, in_data = _select_data(in_data, period, fill_missing=fill_missing, use_first=use_first) - - data_x = [key for key in in_data.keys()] + try: + data_x = ["{0}/{1}".format(key, build_info[str(key)][1].split("~")[-1]) + for key in in_data.keys()] + except KeyError: + data_x = [key for key in in_data.keys()] data_y = [val for val in in_data.values()] data_pd = pd.Series(data_y, index=data_x) @@ -242,7 +247,10 @@ def _generate_trending_traces(in_data, period, moving_win_size=10, anomalies = pd.Series() anomalies_res = list() for idx, item in enumerate(in_data.items()): - item_pd = pd.Series([item[1], ], index=[item[0], ]) + item_pd = pd.Series([item[1], ], + index=["{0}/{1}". + format(item[0], + build_info[str(item[0])][1].split("~")[-1]), ]) if item[0] in outliers.keys(): anomalies = anomalies.append(item_pd) anomalies_res.append(0.0) @@ -291,19 +299,21 @@ def _generate_trending_traces(in_data, period, moving_win_size=10, "color": anomalies_res, "colorscale": color_scale, "showscale": True, - + "line": { + "width": 2 + }, "colorbar": { "y": 0.5, "len": 0.8, - "title": "Results Clasification", + "title": "Circles Marking Data Classification", "titleside": 'right', "titlefont": { "size": 14 }, "tickmode": 'array', "tickvals": [0.125, 0.375, 0.625, 0.875], - "ticktext": ["Outlier", "Regress", "Normal", "Progress"], - "ticks": 'outside', + "ticktext": ["Outlier", "Regression", "Normal", "Progression"], + "ticks": "", "ticklen": 0, "tickangle": -90, "thickness": 10 @@ -313,9 +323,8 @@ def _generate_trending_traces(in_data, period, moving_win_size=10, traces.append(trace_anomalies) if show_moving_median: - min_periods = moving_win_size / 2 + 1 data_mean_y = pd.Series(data_y).rolling( - window=moving_win_size, min_periods=min_periods).median() + window=moving_win_size, min_periods=2).median() trace_median = plgo.Scatter( x=data_x, y=data_mean_y, @@ -361,12 +370,35 @@ def _generate_all_charts(spec, input_data): :type input_data: InputData """ - csv_table = list() + job_name = spec.cpta["data"].keys()[0] + + builds_lst = list() + for build in spec.input["builds"][job_name]: + status = build["status"] + if status != "failed" and status != "not found": + builds_lst.append(str(build["build"])) + + # Get "build ID": "date" dict: + build_info = dict() + for build in builds_lst: + try: + build_info[build] = ( + input_data.metadata(job_name, build)["generated"][:14], + input_data.metadata(job_name, build)["version"] + ) + except KeyError: + pass + # Create the header: - builds = spec.cpta["data"].values()[0] - builds_lst = [str(build) for build in range(builds[0], builds[-1] + 1)] + csv_table = list() header = "Build Number:," + ",".join(builds_lst) + '\n' csv_table.append(header) + build_dates = [x[0] for x in build_info.values()] + header = "Build Date:," + ",".join(build_dates) + '\n' + csv_table.append(header) + vpp_versions = [x[1] for x in build_info.values()] + header = "VPP Version:," + ",".join(vpp_versions) + '\n' + csv_table.append(header) results = list() for chart in spec.cpta["plots"]: @@ -412,6 +444,7 @@ def _generate_all_charts(spec, input_data): test_name = test_name.split('.')[-1] trace, result = _generate_trending_traces( test_data, + build_info=build_info, period=period, moving_win_size=win_size, fill_missing=True, @@ -423,9 +456,8 @@ def _generate_all_charts(spec, input_data): idx += 1 # Generate the chart: - period_name = "Daily" if period == 1 else \ - "Weekly" if period < 20 else "Monthly" - chart["layout"]["title"] = chart["title"].format(period=period_name) + chart["layout"]["xaxis"]["title"] = \ + chart["layout"]["xaxis"]["title"].format(job=job_name) _generate_chart(traces, chart["layout"], file_name="{0}-{1}-{2}{3}".format( @@ -444,11 +476,19 @@ def _generate_all_charts(spec, input_data): txt_table = None with open("{0}.csv".format(file_name), 'rb') as csv_file: csv_content = csv.reader(csv_file, delimiter=',', quotechar='"') + line_nr = 0 for row in csv_content: if txt_table is None: txt_table = prettytable.PrettyTable(row) else: + if line_nr > 1: + for idx, item in enumerate(row): + try: + row[idx] = str(round(float(item) / 1000000, 2)) + except ValueError: + pass txt_table.add_row(row) + line_nr += 1 txt_table.align["Build Number:"] = "l" with open("{0}.txt".format(file_name), "w") as txt_file: txt_file.write(str(txt_table))