Report: plots
[csit.git] / resources / tools / presentation / generator_tables.py
index 367e8c9..59059df 100644 (file)
@@ -67,7 +67,13 @@ def table_details(table, input_data):
 
     job = table["data"].keys()[0]
     build = str(table["data"][job][0])
-    for suite_longname, suite in input_data.suites(job, build).iteritems():
+    try:
+        suites = input_data.suites(job, build)
+    except KeyError:
+        logging.error("    No data available. The table will not be generated.")
+        return
+
+    for suite_longname, suite in suites.iteritems():
         # Generate data
         suite_name = suite["name"]
         table_lst = list()
@@ -128,6 +134,8 @@ def table_performance_improvements(table, input_data):
                 line_lst.append(item["data"])
             elif isinstance(item["data"], float):
                 line_lst.append("{:.1f}".format(item["data"]))
+            elif item["data"] is None:
+                line_lst.append("")
         file_handler.write(",".join(line_lst) + "\n")
 
     logging.info("  Generating the table {0} ...".
@@ -178,17 +186,24 @@ def table_performance_improvements(table, input_data):
                                               ["value"]) / 1000000)
                     except (KeyError, TypeError):
                         # No data, ignore
-                        pass
+                        continue
                 if data_lst:
                     tbl_item.append({"data": eval(operation)(data_lst)})
+                else:
+                    tbl_item.append({"data": None})
             elif cmd == "operation":
                 operation = args[0]
-                nr1 = tbl_item[int(args[1])]["data"]
-                nr2 = tbl_item[int(args[2])]["data"]
-                if nr1 and nr2:
-                    tbl_item.append({"data": eval(operation)(nr1, nr2)})
-                else:
+                try:
+                    nr1 = tbl_item[int(args[1])]["data"]
+                    nr2 = tbl_item[int(args[2])]["data"]
+                    if nr1 and nr2:
+                        tbl_item.append({"data": eval(operation)(nr1, nr2)})
+                    else:
+                        tbl_item.append({"data": None})
+                except IndexError:
+                    logging.error("No data for {0}".format(tbl_item[1]["data"]))
                     tbl_item.append({"data": None})
+                    continue
             else:
                 logging.error("Not supported command {0}. Skipping the table.".
                               format(cmd))