Re: [bpf-next PATCH v3 4/5] bpf: selftests, add sk_msg helpers load and attach test
From: Andrii Nakryiko <hidden>
Date: 2020-05-21 19:12:20
Also in:
bpf
On Thu, May 21, 2020 at 12:09 PM John Fastabend [off-list ref] wrote:
John Fastabend wrote:quoted
Andrii Nakryiko wrote:quoted
On Thu, May 21, 2020 at 7:36 AM John Fastabend [off-list ref] wrote:quoted
The test itself is not particularly useful but it encodes a common pattern we have. Namely do a sk storage lookup then depending on data here decide if we need to do more work or alternatively allow packet to PASS. Then if we need to do more work consult task_struct for more information about the running task. Finally based on this additional information drop or pass the data. In this case the suspicious check is not so realisitic but it encodes the general pattern and uses the helpers so we test the workflow. This is a load test to ensure verifier correctly handles this case. Signed-off-by: John Fastabend <john.fastabend@gmail.com> ---[...]quoted
quoted
quoted
+static void test_skmsg_helpers(enum bpf_map_type map_type) +{ + struct test_skmsg_load_helpers *skel; + int err, map, verdict; + + skel = test_skmsg_load_helpers__open_and_load(); + if (!skel) { + FAIL("skeleton open/load failed"); + return; + } + + verdict = bpf_program__fd(skel->progs.prog_msg_verdict); + map = bpf_map__fd(skel->maps.sock_map); + + err = xbpf_prog_attach(verdict, map, BPF_SK_MSG_VERDICT, 0); + if (err) + return; + xbpf_prog_detach2(verdict, map, BPF_SK_MSG_VERDICT);no cleanup in this test, at allGuess we need __destroy(skel) here. As an aside how come if the program closes and refcnt drops the entire thing isn't destroyed. I didn't think there was any pinning happening in the __open_and_load piece.I guess these are in progs_test so we can't leave these around for any following tests to trip over. OK. Same thing for patch 3 fwiw.
Yep, exactly. It's a cooperative environment at the moment. We've talked about running tests in forked processes and in parallel, but until then, cleaning up is very important.