Commit 6df2eb45 authored by Andrii Nakryiko's avatar Andrii Nakryiko Committed by Alexei Starovoitov

selftests/bpf: avoid reporting +100% difference in veristat for actual 0%

In special case when both base and comparison values are 0, veristat
currently reports "+0 (+100%)" difference, which is quite confusing. Fix
it up to be "+0 (+0%)".
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20221005161450.1064469-2-andrii@kernel.orgSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
parent 2a72f595
...@@ -1104,17 +1104,21 @@ static void output_comp_stats(const struct verif_stats *base, const struct verif ...@@ -1104,17 +1104,21 @@ static void output_comp_stats(const struct verif_stats *base, const struct verif
else else
snprintf(diff_buf, sizeof(diff_buf), "%s", "MISMATCH"); snprintf(diff_buf, sizeof(diff_buf), "%s", "MISMATCH");
} else { } else {
double p = 0.0;
snprintf(base_buf, sizeof(base_buf), "%ld", base_val); snprintf(base_buf, sizeof(base_buf), "%ld", base_val);
snprintf(comp_buf, sizeof(comp_buf), "%ld", comp_val); snprintf(comp_buf, sizeof(comp_buf), "%ld", comp_val);
diff_val = comp_val - base_val; diff_val = comp_val - base_val;
if (base == &fallback_stats || comp == &fallback_stats || base_val == 0) { if (base == &fallback_stats || comp == &fallback_stats || base_val == 0) {
snprintf(diff_buf, sizeof(diff_buf), "%+ld (%+.2lf%%)", if (comp_val == base_val)
diff_val, comp_val < base_val ? -100.0 : 100.0); p = 0.0; /* avoid +0 (+100%) case */
else
p = comp_val < base_val ? -100.0 : 100.0;
} else { } else {
snprintf(diff_buf, sizeof(diff_buf), "%+ld (%+.2lf%%)", p = diff_val * 100.0 / base_val;
diff_val, diff_val * 100.0 / base_val);
} }
snprintf(diff_buf, sizeof(diff_buf), "%+ld (%+.2lf%%)", diff_val, p);
} }
switch (fmt) { switch (fmt) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment