]> www.infradead.org Git - users/hch/configfs.git/commitdiff
selftests/bpf: Test struct_ops bpf map auto-attach
authorMykyta Yatsenko <yatsenko@meta.com>
Fri, 21 Jun 2024 18:03:24 +0000 (19:03 +0100)
committerAndrii Nakryiko <andrii@kernel.org>
Fri, 21 Jun 2024 21:34:23 +0000 (14:34 -0700)
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
tools/testing/selftests/bpf/prog_tests/bpf_tcp_ca.c

index 164f237b24ddf35983e1ed854a4c3e9c4e4baacf..bceff590001689b044386a28e004860e371b3506 100644 (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();
 }