PAL: Process HDRH Latency
[csit.git] / resources / tools / presentation / input_data_parser.py
index d23fa84..eeabaa8 100644 (file)
@@ -212,6 +212,18 @@ class ExecutionChecker(ResultVisitor):
     REGEX_NDRPDR_LAT = re.compile(r'LATENCY.*\[\'(.*)\', \'(.*)\'\]\s\n.*\n.*\n'
                                   r'LATENCY.*\[\'(.*)\', \'(.*)\'\]')
 
+    REGEX_NDRPDR_LAT_LONG = re.compile(
+        r'LATENCY.*\[\'(.*)\', \'(.*)\'\]\s\n.*\n.*\n'
+        r'LATENCY.*\[\'(.*)\', \'(.*)\'\]\s\n.*\n'
+        r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
+        r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
+        r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
+        r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
+        r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
+        r'Latency.*\[\'(.*)\', \'(.*)\'\]\s\n'
+        r'Latency.*\[\'(.*)\', \'(.*)\'\]'
+    )
+
     REGEX_TOLERANCE = re.compile(r'^[\D\d]*LOSS_ACCEPTANCE:\s(\d*\.\d*)\s'
                                  r'[\D\d]*')
 
@@ -429,7 +441,6 @@ class ExecutionChecker(ResultVisitor):
                           r"PAPI command history:", u"",
                           msg.message, count=1).replace(u'\n', u' |br| ').\
                 replace(u'"', u"'")
-
             self._data[u"tests"][self._test_id][u"conf-history"] += (
                 f" |br| **DUT{str(self._conf_history_lookup_nr)}:** {text}"
             )
@@ -528,7 +539,7 @@ class ExecutionChecker(ResultVisitor):
                 txt_table.align[u"Vectors/Calls"] = u"r"
 
                 text += txt_table.get_string(sortby=u"Name") + u'\n'
-            text = f" \n**DUT: {host}{socket}**\n{text}".\
+            text = f"\n**DUT: {host}{socket}**\n{text}".\
                 replace(u'\n', u' |br| ').\
                 replace(u'\r', u'').\
                 replace(u'"', u"'")
@@ -612,10 +623,43 @@ class ExecutionChecker(ResultVisitor):
             u"PDR": {
                 u"direction1": copy.copy(latency_default),
                 u"direction2": copy.copy(latency_default)
-            }
+            },
+            u"LAT0": {
+                u"direction1": copy.copy(latency_default),
+                u"direction2": copy.copy(latency_default)
+            },
+            u"NDR10": {
+                u"direction1": copy.copy(latency_default),
+                u"direction2": copy.copy(latency_default)
+            },
+            u"NDR50": {
+                u"direction1": copy.copy(latency_default),
+                u"direction2": copy.copy(latency_default)
+            },
+            u"NDR90": {
+                u"direction1": copy.copy(latency_default),
+                u"direction2": copy.copy(latency_default)
+            },
+            u"PDR10": {
+                u"direction1": copy.copy(latency_default),
+                u"direction2": copy.copy(latency_default)
+            },
+            u"PDR50": {
+                u"direction1": copy.copy(latency_default),
+                u"direction2": copy.copy(latency_default)
+            },
+            u"PDR90": {
+                u"direction1": copy.copy(latency_default),
+                u"direction2": copy.copy(latency_default)
+            },
         }
-        status = u"FAIL"
+
         groups = re.search(self.REGEX_NDRPDR_LAT, msg)
+        if groups is None:
+            groups = re.search(self.REGEX_NDRPDR_LAT_LONG, msg)
+
+        if groups is None:
+            return latency, u"FAIL"
 
         def process_latency(in_str):
             """Return object with parsed latency values.
@@ -643,21 +687,36 @@ class ExecutionChecker(ResultVisitor):
 
             return rval
 
-        if groups is not None:
-            try:
-                latency[u"NDR"][u"direction1"] = \
-                    process_latency(groups.group(1))
-                latency[u"NDR"][u"direction2"] = \
-                    process_latency(groups.group(2))
-                latency[u"PDR"][u"direction1"] = \
-                    process_latency(groups.group(3))
-                latency[u"PDR"][u"direction2"] = \
-                    process_latency(groups.group(4))
-                status = u"PASS"
-            except (IndexError, ValueError):
-                pass
+        try:
+            latency[u"NDR"][u"direction1"] = process_latency(groups.group(1))
+            latency[u"NDR"][u"direction2"] = process_latency(groups.group(2))
+            latency[u"PDR"][u"direction1"] = process_latency(groups.group(3))
+            latency[u"PDR"][u"direction2"] = process_latency(groups.group(4))
+            if groups.lastindex == 4:
+                return latency, u"PASS"
+        except (IndexError, ValueError):
+            pass
+
+        try:
+            latency[u"LAT0"][u"direction1"] = process_latency(groups.group(5))
+            latency[u"LAT0"][u"direction2"] = process_latency(groups.group(6))
+            latency[u"NDR10"][u"direction1"] = process_latency(groups.group(7))
+            latency[u"NDR10"][u"direction2"] = process_latency(groups.group(8))
+            latency[u"NDR50"][u"direction1"] = process_latency(groups.group(9))
+            latency[u"NDR50"][u"direction2"] = process_latency(groups.group(10))
+            latency[u"NDR90"][u"direction1"] = process_latency(groups.group(11))
+            latency[u"NDR90"][u"direction2"] = process_latency(groups.group(12))
+            latency[u"PDR10"][u"direction1"] = process_latency(groups.group(13))
+            latency[u"PDR10"][u"direction2"] = process_latency(groups.group(14))
+            latency[u"PDR50"][u"direction1"] = process_latency(groups.group(15))
+            latency[u"PDR50"][u"direction2"] = process_latency(groups.group(16))
+            latency[u"PDR90"][u"direction1"] = process_latency(groups.group(17))
+            latency[u"PDR90"][u"direction2"] = process_latency(groups.group(18))
+            return latency, u"PASS"
+        except (IndexError, ValueError):
+            pass
 
-        return latency, status
+        return latency, u"FAIL"
 
     def visit_suite(self, suite):
         """Implements traversing through the suite and its direct children.
@@ -923,7 +982,8 @@ class ExecutionChecker(ResultVisitor):
         :type test_kw: Keyword
         :returns: Nothing.
         """
-        if test_kw.name.count(u"Show Runtime Counters On All Duts"):
+        if test_kw.name.count(u"Show Runtime On All Duts") or \
+                test_kw.name.count(u"Show Runtime Counters On All Duts"):
             self._lookup_kw_nr += 1
             self._show_run_lookup_nr = 0
             self._msg_type = u"test-show-runtime"