42 lines · c
1// SPDX-License-Identifier: GPL-2.02/* Copyright (c) 2021 Facebook */3#include <test_progs.h>4#include "recursion.skel.h"5 6void test_recursion(void)7{8 struct bpf_prog_info prog_info = {};9 __u32 prog_info_len = sizeof(prog_info);10 struct recursion *skel;11 int key = 0;12 int err;13 14 skel = recursion__open_and_load();15 if (!ASSERT_OK_PTR(skel, "skel_open_and_load"))16 return;17 18 err = recursion__attach(skel);19 if (!ASSERT_OK(err, "skel_attach"))20 goto out;21 22 ASSERT_EQ(skel->bss->pass1, 0, "pass1 == 0");23 bpf_map_delete_elem(bpf_map__fd(skel->maps.hash1), &key);24 ASSERT_EQ(skel->bss->pass1, 1, "pass1 == 1");25 bpf_map_delete_elem(bpf_map__fd(skel->maps.hash1), &key);26 ASSERT_EQ(skel->bss->pass1, 2, "pass1 == 2");27 28 ASSERT_EQ(skel->bss->pass2, 0, "pass2 == 0");29 bpf_map_delete_elem(bpf_map__fd(skel->maps.hash2), &key);30 ASSERT_EQ(skel->bss->pass2, 1, "pass2 == 1");31 bpf_map_delete_elem(bpf_map__fd(skel->maps.hash2), &key);32 ASSERT_EQ(skel->bss->pass2, 2, "pass2 == 2");33 34 err = bpf_prog_get_info_by_fd(bpf_program__fd(skel->progs.on_delete),35 &prog_info, &prog_info_len);36 if (!ASSERT_OK(err, "get_prog_info"))37 goto out;38 ASSERT_EQ(prog_info.recursion_misses, 2, "recursion_misses");39out:40 recursion__destroy(skel);41}42