X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftools%2Fpresentation%2Fgenerator_tables.py;h=29a398a19f94113996e8fa4d7cfa8ad957552925;hp=d128a11e5477be7c1c1d6fc7438e74d90ced8c75;hb=f278b55927de4aa59cf87ac1e752effd1c64035c;hpb=dd41e6e33cec88898593b5fdc3064113d2cc3a81 diff --git a/resources/tools/presentation/generator_tables.py b/resources/tools/presentation/generator_tables.py index d128a11e54..29a398a19f 100644 --- a/resources/tools/presentation/generator_tables.py +++ b/resources/tools/presentation/generator_tables.py @@ -594,6 +594,7 @@ def _tpc_generate_html_table(header, data, out_file_name, legend=u"", path = u"_tmp/src/vpp_performance_tests/comparisons/" else: path = u"_tmp/src/dpdk_performance_tests/comparisons/" + logging.info(f" Writing the HTML file to {path}{file_name}.rst") with open(f"{path}{file_name}.rst", u"wt") as rst_file: rst_file.write( u"\n" @@ -612,11 +613,22 @@ def _tpc_generate_html_table(header, data, out_file_name, legend=u"", f'\n\n' ) - # TODO: Use html (rst) list for legend and footnote if legend: - rst_file.write(legend[1:].replace(u"\n", u" |br| ")) + try: + itm_lst = legend[1:-2].split(u"\n") + rst_file.write( + f"{itm_lst[0]}\n\n- " + u'\n- '.join(itm_lst[1:]) + u"\n\n" + ) + except IndexError as err: + logging.error(f"Legend cannot be written to html file\n{err}") if footnote: - rst_file.write(footnote.replace(u"\n", u" |br| ")[1:]) + try: + itm_lst = footnote[1:].split(u"\n") + rst_file.write( + f"{itm_lst[0]}\n\n- " + u'\n- '.join(itm_lst[1:]) + u"\n\n" + ) + except IndexError as err: + logging.error(f"Footnote cannot be written to html file\n{err}") def table_soak_vs_ndr(table, input_data): @@ -777,17 +789,17 @@ def table_soak_vs_ndr(table, input_data): tbl_lst.sort(key=lambda rel: rel[-1], reverse=True) # Generate csv tables: - csv_file = f"{table[u'output-file']}.csv" - with open(csv_file, u"wt") as file_handler: + csv_file_name = f"{table[u'output-file']}.csv" + with open(csv_file_name, u"wt") as file_handler: file_handler.write(header_str) for test in tbl_lst: file_handler.write(u";".join([str(item) for item in test]) + u"\n") convert_csv_to_pretty_txt( - csv_file, f"{table[u'output-file']}.txt", delimiter=u";" + csv_file_name, f"{table[u'output-file']}.txt", delimiter=u";" ) - with open(f"{table[u'output-file']}.txt", u'a') as txt_file: - txt_file.write(legend) + with open(f"{table[u'output-file']}.txt", u'a') as file_handler: + file_handler.write(legend) # Generate html table: _tpc_generate_html_table( @@ -1650,7 +1662,6 @@ def table_comparison(table, input_data): if comparisons: for row in tbl_lst: new_row = deepcopy(row) - add_to_tbl = False for comp in comparisons: ref_itm = row[int(comp[u"reference"])] if ref_itm is None and \ @@ -1666,20 +1677,23 @@ def table_comparison(table, input_data): ref_itm[u"mean"], cmp_itm[u"mean"], ref_itm[u"stdev"], cmp_itm[u"stdev"] ) - new_row.append( - { + if delta is None: + break + else: + new_row.append({ u"mean": delta * 1e6, u"stdev": d_stdev * 1e6 - } - ) - add_to_tbl = True + }) else: - new_row.append(None) - if add_to_tbl: + break + else: tbl_cmp_lst.append(new_row) - tbl_cmp_lst.sort(key=lambda rel: rel[0], reverse=False) - tbl_cmp_lst.sort(key=lambda rel: rel[-1][u'mean'], reverse=True) + try: + tbl_cmp_lst.sort(key=lambda rel: rel[0], reverse=False) + tbl_cmp_lst.sort(key=lambda rel: rel[-1][u'mean'], reverse=True) + except TypeError as err: + logging.warning(f"Empty data element in table\n{tbl_cmp_lst}\n{err}") rcas = list() rca_in = table.get(u"rca", None) @@ -1704,7 +1718,9 @@ def table_comparison(table, input_data): for line in tbl_cmp_lst: row = [line[0], ] for idx, itm in enumerate(line[1:]): - if itm is None: + if itm is None or not isinstance(itm, dict) or\ + itm.get(u'mean', None) is None or \ + itm.get(u'stdev', None) is None: row.append(u"NT") row.append(u"NT") else: @@ -1735,12 +1751,13 @@ def table_comparison(table, input_data): legend = u"\n" + u"\n".join(legend_lst) + u"\n" footnote = u"" - for rca in rcas: - footnote += f"\n{rca[u'title']}:\n" - footnote += rca[u"data"].get(u"footnote", u"") + if rcas: + footnote += u"\nRCA:\n" + for rca in rcas: + footnote += rca[u"data"].get(u"footnote", u"") - csv_file = f"{table[u'output-file']}-csv.csv" - with open(csv_file, u"wt", encoding='utf-8') as file_handler: + csv_file_name = f"{table[u'output-file']}-csv.csv" + with open(csv_file_name, u"wt", encoding='utf-8') as file_handler: file_handler.write( u",".join([f'"{itm}"' for itm in header_csv]) + u"\n" ) @@ -1760,7 +1777,9 @@ def table_comparison(table, input_data): for line in tbl_cmp_lst: row = [line[0], ] for idx, itm in enumerate(line[1:]): - if itm is None: + if itm is None or not isinstance(itm, dict) or \ + itm.get(u'mean', None) is None or \ + itm.get(u'stdev', None) is None: new_itm = u"NT" else: if idx < len(cols): @@ -1804,19 +1823,21 @@ def table_comparison(table, input_data): header.extend([rca[u"title"] for rca in rcas]) # Generate csv tables: - csv_file = f"{table[u'output-file']}.csv" - with open(csv_file, u"wt", encoding='utf-8') as file_handler: + csv_file_name = f"{table[u'output-file']}.csv" + logging.info(f" Writing the file {csv_file_name}") + with open(csv_file_name, u"wt", encoding='utf-8') as file_handler: file_handler.write(u";".join(header) + u"\n") for test in tbl_final: file_handler.write(u";".join([str(item) for item in test]) + u"\n") # Generate txt table: txt_file_name = f"{table[u'output-file']}.txt" - convert_csv_to_pretty_txt(csv_file, txt_file_name, delimiter=u";") + logging.info(f" Writing the file {txt_file_name}") + convert_csv_to_pretty_txt(csv_file_name, txt_file_name, delimiter=u";") - with open(txt_file_name, u'a', encoding='utf-8') as txt_file: - txt_file.write(legend) - txt_file.write(footnote) + with open(txt_file_name, u'a', encoding='utf-8') as file_handler: + file_handler.write(legend) + file_handler.write(footnote) # Generate html table: _tpc_generate_html_table( @@ -1965,9 +1986,9 @@ def table_weekly_comparison(table, in_data): tbl_lst.extend(tbl_lst_none) # Generate csv table: - csv_file = f"{table[u'output-file']}.csv" - logging.info(f" Writing the file {csv_file}") - with open(csv_file, u"wt", encoding='utf-8') as file_handler: + csv_file_name = f"{table[u'output-file']}.csv" + logging.info(f" Writing the file {csv_file_name}") + with open(csv_file_name, u"wt", encoding='utf-8') as file_handler: for hdr in header: file_handler.write(u",".join(hdr) + u"\n") for test in tbl_lst: @@ -1978,18 +1999,18 @@ def table_weekly_comparison(table, in_data): ] ) + u"\n") - txt_file = f"{table[u'output-file']}.txt" - logging.info(f" Writing the file {txt_file}") - convert_csv_to_pretty_txt(csv_file, txt_file, delimiter=u",") + txt_file_name = f"{table[u'output-file']}.txt" + logging.info(f" Writing the file {txt_file_name}") + convert_csv_to_pretty_txt(csv_file_name, txt_file_name, delimiter=u",") # Reorganize header in txt table txt_table = list() - with open(txt_file, u"rt", encoding='utf-8') as file_handler: + with open(txt_file_name, u"rt", encoding='utf-8') as file_handler: for line in file_handler: txt_table.append(line) try: txt_table.insert(5, txt_table.pop(2)) - with open(txt_file, u"wt", encoding='utf-8') as file_handler: + with open(txt_file_name, u"wt", encoding='utf-8') as file_handler: file_handler.writelines(txt_table) except IndexError: pass