from datetime import datetime as dt
from datetime import timedelta
from copy import deepcopy
+from json import loads
import plotly.graph_objects as go
import plotly.offline as ploff
tcol = ET.SubElement(
trow, u"td", attrib=dict(align=u"left", colspan=u"6")
)
- if dut_data.get(u"threads", None) is None:
+ if dut_data.get(u"runtime", None) is None:
tcol.text = u"No Data"
continue
+ runtime = loads(dut_data[u"runtime"])
+
+ try:
+ threads_nr = len(runtime[0][u"clocks"])
+ except (IndexError, KeyError):
+ tcol.text = u"No Data"
+ continue
+
+ threads = OrderedDict({idx: list() for idx in range(threads_nr)})
+ for item in runtime:
+ for idx in range(threads_nr):
+ if item[u"vectors"][idx] > 0:
+ clocks = item[u"clocks"][idx] / item[u"vectors"][idx]
+ elif item[u"calls"][idx] > 0:
+ clocks = item[u"clocks"][idx] / item[u"calls"][idx]
+ elif item[u"suspends"][idx] > 0:
+ clocks = item[u"clocks"][idx] / item[u"suspends"][idx]
+ else:
+ clocks = 0.0
+
+ if item[u"calls"][idx] > 0:
+ vectors_call = item[u"vectors"][idx] / item[u"calls"][
+ idx]
+ else:
+ vectors_call = 0.0
+
+ if int(item[u"calls"][idx]) + int(item[u"vectors"][idx]) + \
+ int(item[u"suspends"][idx]):
+ threads[idx].append([
+ item[u"name"],
+ item[u"calls"][idx],
+ item[u"vectors"][idx],
+ item[u"suspends"][idx],
+ clocks,
+ vectors_call
+ ])
+
bold = ET.SubElement(tcol, u"b")
bold.text = (
f"Host IP: {dut_data.get(u'host', '')}, "
)
thead.text = u"\t"
- for thread_nr, thread in dut_data[u"threads"].items():
+ for thread_nr, thread in threads.items():
trow = ET.SubElement(
tbl, u"tr", attrib=dict(bgcolor=colors[u"header"])
)
suite_name = suite[u"name"]
table_lst = list()
for test in data.keys():
- if data[test][u"parent"] not in suite_name:
+ if data[test][u"status"] != u"PASS" or \
+ data[test][u"parent"] not in suite_name:
continue
row_lst = list()
for column in table[u"columns"]:
col_data = col_data.split(u" |br| ", 1)[1]
except IndexError:
pass
+ col_data = col_data.replace(u'\n', u' |br| ').\
+ replace(u'\r', u'').replace(u'"', u"'")
col_data = f" |prein| {col_data} |preout| "
elif column[u"data"].split(u" ")[1] in \
(u"conf-history", u"show-run"):
- col_data = col_data.replace(u" |br| ", u"", 1)
+ col_data = col_data.replace(u'\n', u' |br| ')
col_data = f" |prein| {col_data[:-5]} |preout| "
row_lst.append(f'"{col_data}"')
except KeyError:
:rtype: str
"""
test_name_mod = test_name.\
- replace(u"-ndrpdrdisc", u""). \
replace(u"-ndrpdr", u"").\
- replace(u"-pdrdisc", u""). \
- replace(u"-ndrdisc", u"").\
- replace(u"-pdr", u""). \
- replace(u"-ndr", u""). \
replace(u"1t1c", u"1c").\
replace(u"2t1c", u"1c"). \
replace(u"2t2c", u"2c").\
"""Insert src data to the target structure.
:param target: Target structure where the data is placed.
- :param src: Source data to be placed into the target stucture.
+ :param src: Source data to be placed into the target structure.
:param include_tests: Which results will be included (MRR, NDR, PDR).
:type target: list
:type src: dict
if u"1t1c" in test_name or \
(u"-1c-" in test_name and
- testbed in (u"3n-hsw", u"3n-tsh", u"2n-dnv", u"3n-dnv")):
+ testbed in (u"3n-hsw", u"3n-tsh", u"2n-dnv", u"3n-dnv", u"2n-tx2")):
cores = u"1t1c"
elif u"2t2c" in test_name or \
(u"-2c-" in test_name and
- testbed in (u"3n-hsw", u"3n-tsh", u"2n-dnv", u"3n-dnv")):
+ testbed in (u"3n-hsw", u"3n-tsh", u"2n-dnv", u"3n-dnv", u"2n-tx2")):
cores = u"2t2c"
elif u"4t4c" in test_name or \
(u"-4c-" in test_name and
- testbed in (u"3n-hsw", u"3n-tsh", u"2n-dnv", u"3n-dnv")):
+ testbed in (u"3n-hsw", u"3n-tsh", u"2n-dnv", u"3n-dnv", u"2n-tx2")):
cores = u"4t4c"
elif u"2t1c" in test_name or \
(u"-1c-" in test_name and
bsf = u"udp-pps"
elif u"-pps" in test_name and u"ethip4tcp" in test_name:
bsf = u"tcp-pps"
+ elif u"-tput" in test_name and u"ethip4udp" in test_name:
+ bsf = u"udp-tput"
+ elif u"-tput" in test_name and u"ethip4tcp" in test_name:
+ bsf = u"tcp-tput"
elif u"udpsrcscale" in test_name:
bsf = u"features-udp"
elif u"iacl" in test_name:
domain += u"-cps"
elif u"-pps" in test_name:
domain += u"-pps"
+ elif u"-tput" in test_name:
+ domain += u"-tput"
elif u"testpmd" in test_name or u"l3fwd" in test_name:
domain = u"dpdk"
elif u"memif" in test_name:
bsf += u"-hw"
elif u"ethip4vxlan" in test_name:
domain = u"ip4_tunnels"
+ elif u"ethip4udpgeneve" in test_name:
+ domain = u"ip4_tunnels"
elif u"ip4base" in test_name or u"ip4scale" in test_name:
domain = u"ip4"
elif u"ip6base" in test_name or u"ip6scale" in test_name:
u"a",
attrib=dict(
href=f"{lnk_dir}"
- f"{_generate_url(table.get(u'testbed', ''), item)}"
- f"{lnk_sufix}"
+ f"{_generate_url(table.get(u'testbed', ''), item)}"
+ f"{lnk_sufix}"
)
)
ref.text = item
u"a",
attrib=dict(
href=f"{lnk_dir}"
- f"{_generate_url(table.get(u'testbed', ''), item)}"
- f"{lnk_sufix}"
+ f"{_generate_url(table.get(u'testbed', ''), item)}"
+ f"{lnk_sufix}"
)
)
ref.text = item
# Reorganize header in txt table
txt_table = list()
with open(txt_file_name, u"rt", encoding='utf-8') as file_handler:
- for line in file_handler:
+ for line in list(file_handler):
txt_table.append(line)
try:
txt_table.insert(5, txt_table.pop(2))