brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · 1932b1e Raw
64 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <test_progs.h>3#include "stacktrace_map_skip.skel.h"4 5#define TEST_STACK_DEPTH  26 7void test_stacktrace_map_skip(void)8{9	struct stacktrace_map_skip *skel;10	int stackid_hmap_fd, stackmap_fd, stack_amap_fd;11	int err, stack_trace_len;12 13	skel = stacktrace_map_skip__open_and_load();14	if (!ASSERT_OK_PTR(skel, "skel_open_and_load"))15		return;16 17	/* find map fds */18	stackid_hmap_fd = bpf_map__fd(skel->maps.stackid_hmap);19	if (!ASSERT_GE(stackid_hmap_fd, 0, "stackid_hmap fd"))20		goto out;21 22	stackmap_fd = bpf_map__fd(skel->maps.stackmap);23	if (!ASSERT_GE(stackmap_fd, 0, "stackmap fd"))24		goto out;25 26	stack_amap_fd = bpf_map__fd(skel->maps.stack_amap);27	if (!ASSERT_GE(stack_amap_fd, 0, "stack_amap fd"))28		goto out;29 30	skel->bss->pid = getpid();31 32	err = stacktrace_map_skip__attach(skel);33	if (!ASSERT_OK(err, "skel_attach"))34		goto out;35 36	/* give some time for bpf program run */37	sleep(1);38 39	/* disable stack trace collection */40	skel->bss->control = 1;41 42	/* for every element in stackid_hmap, we can find a corresponding one43	 * in stackmap, and vise versa.44	 */45	err = compare_map_keys(stackid_hmap_fd, stackmap_fd);46	if (!ASSERT_OK(err, "compare_map_keys stackid_hmap vs. stackmap"))47		goto out;48 49	err = compare_map_keys(stackmap_fd, stackid_hmap_fd);50	if (!ASSERT_OK(err, "compare_map_keys stackmap vs. stackid_hmap"))51		goto out;52 53	stack_trace_len = TEST_STACK_DEPTH * sizeof(__u64);54	err = compare_stack_ips(stackmap_fd, stack_amap_fd, stack_trace_len);55	if (!ASSERT_OK(err, "compare_stack_ips stackmap vs. stack_amap"))56		goto out;57 58	if (!ASSERT_EQ(skel->bss->failed, 0, "skip_failed"))59		goto out;60 61out:62	stacktrace_map_skip__destroy(skel);63}64