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]*')
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}"
)
: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") or \
msg.message.count(u"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))
+ 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'').
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"'")
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.
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.
: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"