From 836cdd8930dd7383d5c59a4ae407864a1e03040f Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Wed, 27 May 2020 12:57:58 +0200 Subject: PAL: Improvements in tables and formatting + legend + footnote + output to log + fix formatting in the methodology section Type: Improvements Change-Id: I605615a602b239265fc6768a65c8d33dd793d4c4 Signed-off-by: Tibor Frank --- resources/tools/presentation/generator_tables.py | 69 ++++++++++++++---------- 1 file changed, 42 insertions(+), 27 deletions(-) (limited to 'resources/tools/presentation/generator_tables.py') diff --git a/resources/tools/presentation/generator_tables.py b/resources/tools/presentation/generator_tables.py index c06e492ec8..3afa3830fa 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( @@ -1737,12 +1749,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" ) @@ -1808,19 +1821,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( @@ -1969,9 +1984,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: @@ -1982,18 +1997,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 -- cgit 1.2.3-korg