Trending: Add cx556a to urls
[csit.git] / resources / tools / presentation / generator_tables.py
index 7c99ab5..0afbf87 100644 (file)
@@ -138,7 +138,7 @@ def table_details(table, input_data):
                 f"{table[u'output-file-ext']}"
             )
             logging.info(f"      Writing file: {file_name}")
-            with open(file_name, u"w") as file_handler:
+            with open(file_name, u"wt") as file_handler:
                 file_handler.write(u",".join(header) + u"\n")
                 for item in table_lst:
                     file_handler.write(u",".join(item) + u"\n")
@@ -212,7 +212,7 @@ def table_merged_details(table, input_data):
                 f"{table[u'output-file-ext']}"
             )
             logging.info(f"      Writing file: {file_name}")
-            with open(file_name, u"w") as file_handler:
+            with open(file_name, u"wt") as file_handler:
                 file_handler.write(u",".join(header) + u"\n")
                 for item in table_lst:
                     file_handler.write(u",".join(item) + u"\n")
@@ -469,9 +469,9 @@ def table_perf_comparison(table, input_data):
 
     # Prepare data to the table:
     tbl_dict = dict()
-    topo = ""
+    topo = ""
     for job, builds in table[u"reference"][u"data"].items():
-        topo = u"2n-skx" if u"2n-skx" in job else u""
+        topo = u"2n-skx" if u"2n-skx" in job else u""
         for build in builds:
             for tst_name, tst_data in data[job][str(build)].items():
                 tst_name_mod = _tpc_modify_test_name(tst_name)
@@ -494,6 +494,38 @@ def table_perf_comparison(table, input_data):
                                  src=tst_data,
                                  include_tests=table[u"include-tests"])
 
+    replacement = table[u"reference"].get(u"data-replacement", None)
+    if replacement:
+        create_new_list = True
+        rpl_data = input_data.filter_data(
+            table, data=replacement, continue_on_error=True)
+        for job, builds in replacement.items():
+            for build in builds:
+                for tst_name, tst_data in rpl_data[job][str(build)].items():
+                    tst_name_mod = _tpc_modify_test_name(tst_name)
+                    if u"across topologies" in table[u"title"].lower():
+                        tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
+                    if tbl_dict.get(tst_name_mod, None) is None:
+                        name = \
+                            f"{u'-'.join(tst_data[u'name'].split(u'-')[:-1])}"
+                        if u"across testbeds" in table[u"title"].lower() or \
+                                u"across topologies" in table[u"title"].lower():
+                            name = _tpc_modify_displayed_test_name(name)
+                        tbl_dict[tst_name_mod] = {
+                            u"name": name,
+                            u"ref-data": list(),
+                            u"cmp-data": list()
+                        }
+                    if create_new_list:
+                        create_new_list = False
+                        tbl_dict[tst_name_mod][u"ref-data"] = list()
+
+                    _tpc_insert_data(
+                        target=tbl_dict[tst_name_mod][u"ref-data"],
+                        src=tst_data,
+                        include_tests=table[u"include-tests"]
+                    )
+
     for job, builds in table[u"compare"][u"data"].items():
         for build in builds:
             for tst_name, tst_data in data[job][str(build)].items():
@@ -609,10 +641,10 @@ def table_perf_comparison(table, input_data):
         if item[-2] == u"Not tested":
             pass
         elif item[-4] == u"Not tested":
-            item.append(u"New in CSIT-1908")
-        elif topo == u"2n-skx" and u"dot1q" in tbl_dict[tst_name][u"name"]:
-            item.append(u"See footnote [1]")
-            footnote = True
+            item.append(u"New in CSIT-2001")
+        elif topo == u"2n-skx" and u"dot1q" in tbl_dict[tst_name][u"name"]:
+            item.append(u"See footnote [1]")
+            footnote = True
         elif item[-4] != 0:
             item.append(int(relative_change(float(item[-4]), float(item[-2]))))
         if (len(item) == len(header)) and (item[-3] != u"Not tested"):
@@ -622,7 +654,7 @@ def table_perf_comparison(table, input_data):
 
     # Generate csv tables:
     csv_file = f"{table[u'output-file']}.csv"
-    with open(csv_file, u"w") as file_handler:
+    with open(csv_file, 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")
@@ -700,9 +732,9 @@ def table_perf_comparison_nic(table, input_data):
 
     # Prepare data to the table:
     tbl_dict = dict()
-    topo = u""
+    topo = u""
     for job, builds in table[u"reference"][u"data"].items():
-        topo = u"2n-skx" if u"2n-skx" in job else u""
+        topo = u"2n-skx" if u"2n-skx" in job else u""
         for build in builds:
             for tst_name, tst_data in data[job][str(build)].items():
                 if table[u"reference"][u"nic"] not in tst_data[u"tags"]:
@@ -726,6 +758,40 @@ def table_perf_comparison_nic(table, input_data):
                     include_tests=table[u"include-tests"]
                 )
 
+    replacement = table[u"reference"].get(u"data-replacement", None)
+    if replacement:
+        create_new_list = True
+        rpl_data = input_data.filter_data(
+            table, data=replacement, continue_on_error=True)
+        for job, builds in replacement.items():
+            for build in builds:
+                for tst_name, tst_data in rpl_data[job][str(build)].items():
+                    if table[u"reference"][u"nic"] not in tst_data[u"tags"]:
+                        continue
+                    tst_name_mod = _tpc_modify_test_name(tst_name)
+                    if u"across topologies" in table[u"title"].lower():
+                        tst_name_mod = tst_name_mod.replace(u"2n1l-", u"")
+                    if tbl_dict.get(tst_name_mod, None) is None:
+                        name = \
+                            f"{u'-'.join(tst_data[u'name'].split(u'-')[:-1])}"
+                        if u"across testbeds" in table[u"title"].lower() or \
+                                u"across topologies" in table[u"title"].lower():
+                            name = _tpc_modify_displayed_test_name(name)
+                        tbl_dict[tst_name_mod] = {
+                            u"name": name,
+                            u"ref-data": list(),
+                            u"cmp-data": list()
+                        }
+                    if create_new_list:
+                        create_new_list = False
+                        tbl_dict[tst_name_mod][u"ref-data"] = list()
+
+                    _tpc_insert_data(
+                        target=tbl_dict[tst_name_mod][u"ref-data"],
+                        src=tst_data,
+                        include_tests=table[u"include-tests"]
+                    )
+
     for job, builds in table[u"compare"][u"data"].items():
         for build in builds:
             for tst_name, tst_data in data[job][str(build)].items():
@@ -844,10 +910,10 @@ def table_perf_comparison_nic(table, input_data):
         if item[-2] == u"Not tested":
             pass
         elif item[-4] == u"Not tested":
-            item.append(u"New in CSIT-1908")
-        elif topo == u"2n-skx" and u"dot1q" in tbl_dict[tst_name][u"name"]:
-            item.append(u"See footnote [1]")
-            footnote = True
+            item.append(u"New in CSIT-2001")
+        elif topo == u"2n-skx" and u"dot1q" in tbl_dict[tst_name][u"name"]:
+            item.append(u"See footnote [1]")
+            footnote = True
         elif item[-4] != 0:
             item.append(int(relative_change(float(item[-4]), float(item[-2]))))
         if (len(item) == len(header)) and (item[-3] != u"Not tested"):
@@ -857,7 +923,7 @@ def table_perf_comparison_nic(table, input_data):
 
     # Generate csv tables:
     csv_file = f"{table[u'output-file']}.csv"
-    with open(csv_file, u"w") as file_handler:
+    with open(csv_file, 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")
@@ -983,7 +1049,7 @@ def table_nics_comparison(table, input_data):
     tbl_lst.sort(key=lambda rel: rel[-1], reverse=True)
 
     # Generate csv tables:
-    with open(f"{table[u'output-file']}.csv", u"w") as file_handler:
+    with open(f"{table[u'output-file']}.csv", u"wt") as file_handler:
         file_handler.write(u",".join(header) + u"\n")
         for test in tbl_lst:
             file_handler.write(u",".join([str(item) for item in test]) + u"\n")
@@ -1117,7 +1183,7 @@ def table_soak_vs_ndr(table, input_data):
 
     # Generate csv tables:
     csv_file = f"{table[u'output-file']}.csv"
-    with open(csv_file, u"w") as file_handler:
+    with open(csv_file, 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")
@@ -1240,7 +1306,7 @@ def table_perf_trending_dash(table, input_data):
     file_name = f"{table[u'output-file']}{table[u'output-file-ext']}"
 
     logging.info(f"    Writing file: {file_name}")
-    with open(file_name, u"w") as file_handler:
+    with open(file_name, u"wt") as file_handler:
         file_handler.write(header_str)
         for test in tbl_sorted:
             file_handler.write(u",".join([str(item) for item in test]) + u'\n')
@@ -1275,6 +1341,8 @@ def _generate_url(testbed, test_name):
         nic = u"vic1385"
     elif u"x553" in test_name:
         nic = u"x553"
+    elif u"cx556" in test_name or u"cx556a" in test_name:
+        nic = u"cx556a"
     else:
         nic = u""
 
@@ -1307,11 +1375,15 @@ def _generate_url(testbed, test_name):
         cores = u"4t4c"
     elif u"2t1c" in test_name or \
          (u"-1c-" in test_name and
-          testbed in (u"2n-skx", u"3n-skx")):
+          testbed in (u"2n-skx", u"3n-skx", u"2n-clx")):
         cores = u"2t1c"
-    elif u"4t2c" in test_name:
+    elif u"4t2c" in test_name or \
+         (u"-2c-" in test_name and
+          testbed in (u"2n-skx", u"3n-skx", u"2n-clx")):
         cores = u"4t2c"
-    elif u"8t4c" in test_name:
+    elif u"8t4c" in test_name or \
+         (u"-4c-" in test_name and
+          testbed in (u"2n-skx", u"3n-skx", u"2n-clx")):
         cores = u"8t4c"
     else:
         cores = u""
@@ -1322,6 +1394,8 @@ def _generate_url(testbed, test_name):
         driver = u"l3fwd"
     elif u"avf" in test_name:
         driver = u"avf"
+    elif u"rdma" in test_name:
+        driver = u"rdma"
     elif u"dnv" in testbed or u"tsh" in testbed:
         driver = u"ixgbe"
     else:
@@ -1548,7 +1622,7 @@ def table_last_failed_tests(table, input_data):
 
     file_name = f"{table[u'output-file']}{table[u'output-file-ext']}"
     logging.info(f"    Writing file: {file_name}")
-    with open(file_name, u"w") as file_handler:
+    with open(file_name, u"wt") as file_handler:
         for test in tbl_list:
             file_handler.write(test + u'\n')
 
@@ -1653,7 +1727,7 @@ def table_failed_tests(table, input_data):
 
     file_name = f"{table[u'output-file']}{table[u'output-file-ext']}"
     logging.info(f"    Writing file: {file_name}")
-    with open(file_name, u"w") as file_handler:
+    with open(file_name, u"wt") as file_handler:
         file_handler.write(u",".join(header) + u"\n")
         for test in tbl_sorted:
             file_handler.write(u",".join([str(item) for item in test]) + u'\n')