# Temporary solution: remove NDR results from message:
if bool(table.get(u'remove-ndr', False)):
try:
- col_data = col_data.split(u" |br| ", 1)[1]
+ col_data = col_data.split(u"\n", 1)[1]
except IndexError:
pass
col_data = col_data.replace(u'\n', u' |br| ').\
target[u"data"].append(src[u"throughput"][u"PDR"][u"LOWER"])
elif include_tests == u"NDR":
target[u"data"].append(src[u"throughput"][u"NDR"][u"LOWER"])
+ elif u"latency" in include_tests:
+ keys = include_tests.split(u"-")
+ if len(keys) == 4:
+ lat = src[keys[0]][keys[1]][keys[2]][keys[3]]
+ target[u"data"].append(
+ float(u"nan") if lat == -1 else lat * 1e6
+ )
except (KeyError, TypeError):
pass
if len(data_t) < 2:
continue
- classification_lst, avgs, _ = classify_anomalies(data_t)
+ try:
+ classification_lst, avgs, _ = classify_anomalies(data_t)
+ except ValueError as err:
+ logging.info(f"{err} Skipping")
+ return
win_size = min(len(data_t), table[u"window"])
long_win_size = min(len(data_t), table[u"long-trend-window"])
try:
with open(table[u"input-file"], u'rt') as csv_file:
csv_lst = list(csv.reader(csv_file, delimiter=u',', quotechar=u'"'))
+ except FileNotFoundError as err:
+ logging.warning(f"{err}")
+ return
except KeyError:
logging.warning(u"The input file is not defined.")
return
build = str(build)
try:
version = input_data.metadata(job, build).get(u"version", u"")
+ duration = \
+ input_data.metadata(job, build).get(u"elapsedtime", u"")
except KeyError:
logging.error(f"Data for {job}: {build} is not present.")
return
continue
nic = groups.group(0)
failed_tests.append(f"{nic}-{tst_data[u'name']}")
- tbl_list.append(str(passed))
- tbl_list.append(str(failed))
+ tbl_list.append(passed)
+ tbl_list.append(failed)
+ tbl_list.append(duration)
tbl_list.extend(failed_tests)
file_name = f"{table[u'output-file']}{table[u'output-file-ext']}"
logging.info(f" Writing file: {file_name}")
with open(file_name, u"wt") as file_handler:
for test in tbl_list:
- file_handler.write(test + u'\n')
+ file_handler.write(f"{test}\n")
def table_failed_tests(table, input_data):
tag = col.get(u"tag", None)
data = input_data.filter_data(
table,
- params=[u"throughput", u"result", u"name", u"parent", u"tags"],
+ params=[
+ u"throughput",
+ u"result",
+ u"latency",
+ u"name",
+ u"parent",
+ u"tags"
+ ],
data=col[u"data-set"],
continue_on_error=True
)
if replacement:
rpl_data = input_data.filter_data(
table,
- params=[u"throughput", u"result", u"name", u"parent", u"tags"],
+ params=[
+ u"throughput",
+ u"result",
+ u"latency",
+ u"name",
+ u"parent",
+ u"tags"
+ ],
data=replacement,
continue_on_error=True
)
include_tests=table[u"include-tests"]
)
- if table[u"include-tests"] in (u"NDR", u"PDR"):
+ if table[u"include-tests"] in (u"NDR", u"PDR") or \
+ u"latency" in table[u"include-tests"]:
for tst_name, tst_data in col_data[u"data"].items():
if tst_data[u"data"]:
tst_data[u"mean"] = mean(tst_data[u"data"])
cmp_itm[u"mean"] is not None and \
ref_itm[u"stdev"] is not None and \
cmp_itm[u"stdev"] is not None:
- delta, d_stdev = relative_change_stdev(
- ref_itm[u"mean"], cmp_itm[u"mean"],
- ref_itm[u"stdev"], cmp_itm[u"stdev"]
- )
- if delta is None:
+ try:
+ delta, d_stdev = relative_change_stdev(
+ ref_itm[u"mean"], cmp_itm[u"mean"],
+ ref_itm[u"stdev"], cmp_itm[u"stdev"]
+ )
+ except ZeroDivisionError:
+ break
+ if delta in (None, float(u"nan"), u"nan", u"NaN"):
break
new_row.append({
u"mean": delta * 1e6,