from datetime import datetime as dt
from datetime import timedelta
from json import loads
+from json.decoder import JSONDecodeError
import hdrh.histogram
import hdrh.codec
try:
out_msg = (
- f"1. {(data[u'ndr_low'] / 1e6):.2f} "
- f"{data[u'ndr_low_b']:.2f}"
- f"\n2. {(data[u'pdr_low'] / 1e6):.2f} "
- f"{data[u'pdr_low_b']:.2f}"
+ f"1. {(data[u'ndr_low'] / 1e6):5.2f} "
+ f"{data[u'ndr_low_b']:5.2f}"
+ f"\n2. {(data[u'pdr_low'] / 1e6):5.2f} "
+ f"{data[u'pdr_low_b']:5.2f}"
)
latency = (
_process_lat(data[u'pdr_lat_10_1'], data[u'pdr_lat_10_2']),
)
if all(latency):
max_len = len(str(max((max(item) for item in latency))))
+ max_len = 4 if max_len < 4 else max_len
for idx, lat in enumerate(latency):
if not idx:
out_msg += u"\n"
- out_msg += f"\n{idx + 3}. "
- for count, itm in enumerate(lat):
- if count == 3:
- out_msg += u" " * 6
- out_msg += u" " * (max_len - len(str(itm)) + 1)
- out_msg += str(itm)
+ out_msg += (
+ f"\n{idx + 3}. "
+ f"{lat[0]:{max_len}d} "
+ f"{lat[1]:{max_len}d} "
+ f"{lat[2]:{max_len}d} "
+ f"{lat[3]:{max_len}d} "
+ f"{lat[4]:{max_len}d} "
+ f"{lat[5]:{max_len}d} "
+ )
return out_msg
return latency, u"FAIL"
+ @staticmethod
+ def _get_hoststack_data(msg, tags):
+ """Get data from the hoststack test message.
+
+ :param msg: The test message to be parsed.
+ :param tags: Test tags.
+ :type msg: str
+ :type tags: list
+ :returns: Parsed data as a JSON dict and the status (PASS/FAIL).
+ :rtype: tuple(dict, str)
+ """
+ result = dict()
+ status = u"FAIL"
+
+ msg = msg.replace(u"'", u'"').replace(u" ", u"")
+ if u"LDPRELOAD" in tags:
+ try:
+ result = loads(msg)
+ status = u"PASS"
+ except JSONDecodeError:
+ pass
+ elif u"VPPECHO" in tags:
+ try:
+ msg_lst = msg.replace(u"}{", u"} {").split(u" ")
+ result = dict(
+ client=loads(msg_lst[0]),
+ server=loads(msg_lst[1])
+ )
+ status = u"PASS"
+ except (JSONDecodeError, IndexError):
+ pass
+
+ return result, status
+
def visit_suite(self, suite):
"""Implements traversing through the suite and its direct children.
test_result[u"type"] = u"SOAK"
test_result[u"throughput"], test_result[u"status"] = \
self._get_plr_throughput(test.message)
+ elif u"HOSTSTACK" in tags:
+ test_result[u"type"] = u"HOSTSTACK"
+ test_result[u"result"], test_result[u"status"] = \
+ self._get_hoststack_data(test.message, tags)
elif u"TCP" in tags:
test_result[u"type"] = u"TCP"
groups = re.search(self.REGEX_TCP, test.message)
test_kw.name.count(u"Show Runtime Counters On All Duts"):
self._msg_type = u"test-show-runtime"
self._sh_run_counter += 1
- elif test_kw.name.count(u"Install Dpdk Test") and not self._version:
+ elif test_kw.name.count(u"Install Dpdk Test On All Duts") and \
+ not self._version:
self._msg_type = u"dpdk-version"
else:
return