X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Ftools%2Fpresentation%2Finput_data_parser.py;h=eeabaa855703e73c448184effc3f99091243a2c3;hb=654bfa4c33dca6d6eeba6636199de0ff80f75652;hp=1177defe35964c08016f3c75c43947db8aca041e;hpb=cbfa26dc0f5334bcd367c161b4eaad342355bbde;p=csit.git diff --git a/resources/tools/presentation/input_data_parser.py b/resources/tools/presentation/input_data_parser.py index 1177defe35..eeabaa8557 100644 --- a/resources/tools/presentation/input_data_parser.py +++ b/resources/tools/presentation/input_data_parser.py @@ -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]*') @@ -404,9 +416,9 @@ class ExecutionChecker(ResultVisitor): else: self._msg_type = None text = re.sub(r"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3} " - r"VAT command history:", u"", msg.message, count=1). \ - replace(u"\n\n", u"\n").replace(u'\n', u' |br| ').\ - replace(u'\r', u'').replace(u'"', u"'") + r"VAT 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}" @@ -427,10 +439,8 @@ class ExecutionChecker(ResultVisitor): self._msg_type = None text = re.sub(r"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3} " r"PAPI command history:", u"", - msg.message, count=1). \ - replace(u"\n\n", u"\n").replace(u'\n', u' |br| ').\ - replace(u'\r', u'').replace(u'"', 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}" ) @@ -443,14 +453,24 @@ class ExecutionChecker(ResultVisitor): :type msg: Message :returns: Nothing. """ + if u"show-run" not in self._data[u"tests"][self._test_id].keys(): self._data[u"tests"][self._test_id][u"show-run"] = str() - if msg.message.count(u"stats runtime"): - host = str(re.search(self.REGEX_TC_PAPI_CLI, msg.message). - group(1)) - socket = str(re.search(self.REGEX_TC_PAPI_CLI, msg.message). - group(2)) + if msg.message.count(u"stats runtime") or \ + msg.message.count(u"Runtime"): + try: + host = str(re.search(self.REGEX_TC_PAPI_CLI, msg.message). + group(1)) + except (AttributeError, IndexError): + host = self._data[u"tests"][self._test_id][u"show-run"].\ + count(u"DUT:") + 1 + try: + socket = str(re.search(self.REGEX_TC_PAPI_CLI, msg.message). + group(2)) + socket = f"/{socket}" + except (AttributeError, IndexError): + socket = u"" runtime = loads( str(msg.message). replace(u' ', u''). @@ -519,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"'") @@ -603,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. @@ -620,7 +673,7 @@ class ExecutionChecker(ResultVisitor): :throws IndexError: If in_str does not have enough substrings. :throws ValueError: If a substring does not convert to float. """ - in_list = in_str.split('/') + in_list = in_str.split('/', 3) rval = { u"min": float(in_list[0]), @@ -634,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. @@ -914,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"