-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2023 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
REGEX_NIC = re.compile(r'(\d*ge\dp\d\D*\d*[a-z]*)')
-REGEX_TOPO_ARCH = re.compile(r'^(\dn-.{3})')
NORM_FREQ = 2.0 # [GHz]
else:
data_c_mean = mean(data_c)
data_c_stdev = stdev(data_c)
- item.append(round(data_c_mean / 1e6, 1))
- item.append(round(data_c_stdev / 1e6, 1))
+ item.append(round(data_c_mean / 1e6, 2))
+ item.append(round(data_c_stdev / 1e6, 2))
else:
data_c_mean = None
data_c_stdev = None
delta, d_stdev = relative_change_stdev(
data_r_mean, data_c_mean, data_r_stdev, data_c_stdev)
try:
- item.append(round(delta))
+ item.append(round(delta, 2))
except ValueError:
item.append(delta)
try:
- item.append(round(d_stdev))
+ item.append(round(d_stdev, 2))
except ValueError:
item.append(d_stdev)
tbl_lst.append(item)
frame_size = u""
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", u"2n-tx2")):
+ (u"-1c-" in test_name and testbed in (u"3n-tsh", 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", u"2n-tx2")):
+ (u"-2c-" in test_name and testbed in (u"3n-tsh", 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", u"2n-tx2")):
+ (u"-4c-" in test_name and testbed in (u"3n-tsh", u"2n-tx2")):
cores = u"4t4c"
elif u"2t1c" in test_name or \
(u"-1c-" in test_name and
- testbed in
- (u"2n-icx", u"3n-icx", u"2n-skx", u"3n-skx", u"2n-clx", u"2n-zn2",
- u"2n-aws", u"3n-aws")):
+ testbed in (u"2n-icx", u"3n-icx", u"2n-clx", u"2n-zn2", u"2n-aws")):
cores = u"2t1c"
elif u"4t2c" in test_name or \
(u"-2c-" in test_name and
- testbed in
- (u"2n-icx", u"3n-icx", u"2n-skx", u"3n-skx", u"2n-clx", u"2n-zn2",
- u"2n-aws", u"3n-aws")):
+ testbed in (u"2n-icx", u"3n-icx", u"2n-clx", u"2n-zn2", u"2n-aws")):
cores = u"4t2c"
elif u"8t4c" in test_name or \
(u"-4c-" in test_name and
- testbed in
- (u"2n-icx", u"3n-icx", u"2n-skx", u"3n-skx", u"2n-clx", u"2n-zn2",
- u"2n-aws", u"3n-aws")):
+ testbed in (u"2n-icx", u"3n-icx", u"2n-clx", u"2n-zn2", u"2n-aws")):
cores = u"8t4c"
else:
cores = u""
driver = u"af_xdp"
elif u"rdma" in test_name:
driver = u"rdma"
- elif u"dnv" in testbed or u"tsh" in testbed:
+ elif u"tsh" in testbed:
driver = u"ixgbe"
elif u"ena" in test_name:
driver = u"ena"
f"{table.get('title', '')}."
)
- normalize = table.get('normalize', False)
-
columns = table.get("columns", None)
if not columns:
logging.error(
for tst_data in tbl_dict.values():
row = [tst_data[u"name"], ]
for col in cols:
- row_data = tst_data.get(col["title"], None)
- if normalize and row_data:
- groups = re.search(REGEX_TOPO_ARCH, col["title"])
- topo_arch = groups.group(0) if groups else ""
- norm_factor = table["norm_factor"].get(topo_arch, 1.0)
- row_data_norm = {
- "mean": row_data["mean"] * norm_factor,
- "stdev": row_data["stdev"] * norm_factor
- }
- else:
- row_data_norm = row_data
- row.append(row_data_norm)
+ row.append(tst_data.get(col[u"title"], None))
tbl_lst.append(row)
comparisons = table.get("comparisons", None)
cmp_itm["mean"] is not None and \
ref_itm["stdev"] is not None and \
cmp_itm["stdev"] is not None:
+ norm_factor_ref = table["norm_factor"].get(
+ comp.get("norm-ref", ""),
+ 1.0
+ )
+ norm_factor_cmp = table["norm_factor"].get(
+ comp.get("norm-cmp", ""),
+ 1.0
+ )
try:
delta, d_stdev = relative_change_stdev(
- ref_itm["mean"], cmp_itm["mean"],
- ref_itm["stdev"], cmp_itm["stdev"]
+ ref_itm["mean"] * norm_factor_ref,
+ cmp_itm["mean"] * norm_factor_cmp,
+ ref_itm["stdev"] * norm_factor_ref,
+ cmp_itm["stdev"] * norm_factor_cmp
)
except ZeroDivisionError:
break
header[1].insert(
1, in_data.metadata(job_name, build_nr).get(u"generated", u"")
)
+ logging.info(
+ in_data.metadata(job_name, build_nr).get(u"version", u"ERROR"))
header[0].insert(
- 1, in_data.metadata(job_name, build_nr).get(u"version", u"")
+ 1, in_data.metadata(job_name, build_nr).get("version", build_nr)
)
for tst_name, tst_data in build.items():
if ref_data is None or cmp_data is None:
cmp_dict[tst_name].append(float(u'nan'))
else:
- cmp_dict[tst_name].append(
- relative_change(ref_data, cmp_data)
- )
+ cmp_dict[tst_name].append(relative_change(ref_data, cmp_data))
tbl_lst_none = list()
tbl_lst = list()
txt_file_name = f"{table[u'output-file']}.txt"
logging.info(f" Writing the file {txt_file_name}")
- convert_csv_to_pretty_txt(csv_file_name, txt_file_name, delimiter=u",")
+ try:
+ convert_csv_to_pretty_txt(csv_file_name, txt_file_name, delimiter=u",")
+ except Exception as err:
+ logging.error(repr(err))
+ for hdr in header:
+ logging.info(",".join(hdr))
+ for test in tbl_lst:
+ logging.info(",".join(
+ [
+ str(item).replace(u"None", u"-").replace(u"nan", u"-").
+ replace(u"null", u"-") for item in test
+ ]
+ ))
# Reorganize header in txt table
txt_table = list()
- with open(txt_file_name, u"rt", encoding='utf-8') as file_handler:
- for line in list(file_handler):
- txt_table.append(line)
try:
+ with open(txt_file_name, u"rt", encoding='utf-8') as file_handler:
+ for line in list(file_handler):
+ txt_table.append(line)
txt_table.insert(5, txt_table.pop(2))
with open(txt_file_name, u"wt", encoding='utf-8') as file_handler:
file_handler.writelines(txt_table)
+ except FileNotFoundError as err:
+ logging.error(repr(err))
except IndexError:
pass