On 6/2/23 12:02 PM, Rhys Rustad-Elliott wrote:
> Add a selftest that accesses a BPF_MAP_TYPE_ARRAY (at a nonzero index)
> nested within a BPF_MAP_TYPE_HASH_OF_MAPS to flex a previously buggy
> case.
>
> Signed-off-by: Rhys Rustad-Elliott <[email protected]>
> ---
> .../bpf/prog_tests/inner_array_lookup.c | 31 +++++++++++++
> .../bpf/progs/test_inner_array_lookup.c | 45 +++++++++++++++++++
> 2 files changed, 76 insertions(+)
> create mode 100644 tools/testing/selftests/bpf/prog_tests/inner_array_lookup.c
> create mode 100644 tools/testing/selftests/bpf/progs/test_inner_array_lookup.c
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/inner_array_lookup.c b/tools/testing/selftests/bpf/prog_tests/inner_array_lookup.c
> new file mode 100644
> index 000000000000..29d4d0067c60
> --- /dev/null
> +++ b/tools/testing/selftests/bpf/prog_tests/inner_array_lookup.c
> @@ -0,0 +1,31 @@
> +// SPDX-License-Identifier: GPL-2.0-only
> +
> +#include <test_progs.h>
> +
> +#include "test_inner_array_lookup.skel.h"
> +
> +void test_inner_array_lookup(void)
> +{
> + int map1_fd, err;
> + int key = 3;
> + int val = 1;
> + struct test_inner_array_lookup *skel;
> +
> + skel = test_inner_array_lookup__open_and_load();
> + if (!ASSERT_TRUE(skel != NULL, "open_load_skeleton"))
Changed to ASSERT_OK_PTR. Similar changes to the ASSERT_TRUE below.
> + return;
> +
> + err = test_inner_array_lookup__attach(skel);
> + if (!ASSERT_TRUE(err == 0, "skeleton_attach"))
> + goto cleanup;
> +
> + map1_fd = bpf_map__fd(skel->maps.inner_map1);
> + bpf_map_update_elem(map1_fd, &key, &val, 0);
> +
> + /* Probe should have set the element at index 3 to 2 */
> + bpf_map_lookup_elem(map1_fd, &key, &val);
> + ASSERT_TRUE(val == 2, "value_is_2");
> +
> +cleanup:
> + test_inner_array_lookup__destroy(skel);
> +}
> diff --git a/tools/testing/selftests/bpf/progs/test_inner_array_lookup.c b/tools/testing/selftests/bpf/progs/test_inner_array_lookup.c
> new file mode 100644
> index 000000000000..c2c8f2fa451d
> --- /dev/null
> +++ b/tools/testing/selftests/bpf/progs/test_inner_array_lookup.c
Removed 'test_' from the filename, already mentioned in v1.
Applied. Thanks for the fix.