selftests/bpf: Test struct_ops bpf map auto-attach

Adding selftest to verify that struct_ops maps are auto attached by
bpf skeleton's `*__attach` function.

Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20240621180324.238379-1-yatsenko@meta.com
This commit is contained in:
Mykyta Yatsenko 2024-06-21 19:03:24 +01:00 committed by Andrii Nakryiko
parent 2bb138cb20
commit cd387ce548

View File

@ -185,6 +185,39 @@ done:
close(fd);
}
static void test_dctcp_autoattach_map(void)
{
struct cb_opts cb_opts = {
.cc = "bpf_dctcp",
};
struct network_helper_opts opts = {
.post_socket_cb = cc_cb,
.cb_opts = &cb_opts,
};
struct bpf_dctcp *dctcp_skel;
struct bpf_link *link;
dctcp_skel = bpf_dctcp__open_and_load();
if (!ASSERT_OK_PTR(dctcp_skel, "bpf_dctcp__open_and_load"))
return;
bpf_map__set_autoattach(dctcp_skel->maps.dctcp, true);
bpf_map__set_autoattach(dctcp_skel->maps.dctcp_nouse, false);
if (!ASSERT_OK(bpf_dctcp__attach(dctcp_skel), "bpf_dctcp__attach"))
goto destroy;
/* struct_ops is auto-attached */
link = dctcp_skel->links.dctcp;
if (!ASSERT_OK_PTR(link, "link"))
goto destroy;
do_test(&opts);
destroy:
bpf_dctcp__destroy(dctcp_skel);
}
static char *err_str;
static bool found;
@ -598,4 +631,6 @@ void test_bpf_tcp_ca(void)
test_tcp_ca_kfunc();
if (test__start_subtest("cc_cubic"))
test_cc_cubic();
if (test__start_subtest("dctcp_autoattach_map"))
test_dctcp_autoattach_map();
}