Re: [RFC] failing selftests/bpf/test_offload.py
From: Jiri Olsa <hidden>
Date: 2022-02-04 15:20:21
Also in:
bpf
Subsystem:
bpf [general] (safe dynamic programs and tools), bpf [tooling] (bpftool), the rest · Maintainers:
Alexei Starovoitov, Daniel Borkmann, Andrii Nakryiko, Eduard Zingerman, Kumar Kartikeya Dwivedi, Quentin Monnet, Linus Torvalds
On Mon, Jan 31, 2022 at 02:15:07PM +0100, Toke Høiland-Jørgensen wrote:
Jiri Olsa [off-list ref] writes:quoted
hi, I have failing test_offload.py with following output: # ./test_offload.py ... Test bpftool bound info reporting (own ns)... FAIL: 3 BPF maps loaded, expected 2 File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 1177, in <module> check_dev_info(False, "") File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 645, in check_dev_info maps = bpftool_map_list(expected=2, ns=ns) File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 190, in bpftool_map_list fail(True, "%d BPF maps loaded, expected %d" % File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 86, in fail tb = "".join(traceback.extract_stack().format()) it fails to detect maps from bpftool's feature detection, that did not make it yet through deferred removal with the fix below I have this subtest passed, but it fails further on: # ./test_offload.py ... Test bpftool bound info reporting (own ns)... Test bpftool bound info reporting (other ns)... Test bpftool bound info reporting (remote ns)... Test bpftool bound info reporting (back to own ns)... Test bpftool bound info reporting (removed dev)... Test map update (no flags)... Test map update (exists)... Test map update (noexist)... Test map dump... Test map dump... Traceback (most recent call last): File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 1251, in <module> _, entries = bpftool("map dump id %d" % (m["id"])) File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 169, in bpftool return tool("bpftool", args, {"json":"-p"}, JSON=JSON, ns=ns, File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 155, in tool ret, stdout = cmd(ns + name + " " + params + args, File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 109, in cmd return cmd_result(proc, include_stderr=include_stderr, fail=fail) File "/root/bpf-next/tools/testing/selftests/bpf/./test_offload.py", line 131, in cmd_result raise Exception("Command failed: %s\n%s" % (proc.args, stderr)) Exception: Command failed: bpftool -p map dump id 4325 the test seems to expect maps having BTF loaded, which for some reason did not happen, so the test fails with bpftool pretty dump fail the test loads the object with 'ip link ...', which I never touched, so I wanted ask first before I dive in, perhaps I miss some setup thoughts? ;-)It looks like the test_offload.py has been using 'bpftool -p' since its inception (in commit: 417ec26477a5 ("selftests/bpf: add offload test based on netdevsim") introduced in December 2017), so this sounds like a regression in bpftool? -Toke
right, looks like this commit:
e5043894b21f ("bpftool: Use libbpf_get_error() to check error")
forced btf for pretty map dump.. change below fixes the test for me,
I'll send full patchset for this later
thanks,
jirka
---
tools/bpf/bpftool/map.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c
index c66a3c979b7a..2ccf85042e75 100644
--- a/tools/bpf/bpftool/map.c
+++ b/tools/bpf/bpftool/map.c@@ -862,6 +862,7 @@ map_dump(int fd, struct bpf_map_info *info, json_writer_t *wtr, prev_key = NULL; if (wtr) { + errno = 0; btf = get_map_kv_btf(info); err = libbpf_get_error(btf); if (err) {
--
2.34.1