Skip to content

Commit 803d10d

Browse files
committed
selftests/bpf: Factor check_stackmap function from test_stacktrace_map_tp
Signed-off-by: Jiri Olsa <[email protected]>
1 parent 5d7e8d4 commit 803d10d

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

tools/testing/selftests/bpf/prog_tests/stacktrace_map.c

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,18 @@
22
#include <test_progs.h>
33
#include "stacktrace_map.skel.h"
44

5-
static void test_stacktrace_map_tp(bool raw_tp)
5+
static void check_stackmap(struct stacktrace_map *skel)
66
{
7-
struct stacktrace_map *skel;
87
int control_map_fd, stackid_hmap_fd, stackmap_fd, stack_amap_fd;
98
int err, stack_trace_len;
109
__u32 key, val, stack_id, duration = 0;
1110
__u64 stack[PERF_MAX_STACK_DEPTH];
1211

13-
skel = stacktrace_map__open_and_load();
14-
if (!ASSERT_OK_PTR(skel, "skel_open_and_load"))
15-
return;
16-
1712
control_map_fd = bpf_map__fd(skel->maps.control_map);
1813
stackid_hmap_fd = bpf_map__fd(skel->maps.stackid_hmap);
1914
stackmap_fd = bpf_map__fd(skel->maps.stackmap);
2015
stack_amap_fd = bpf_map__fd(skel->maps.stack_amap);
2116

22-
if (raw_tp) {
23-
skel->links.tp = bpf_program__attach_raw_tracepoint(skel->progs.raw_tp, "sched_switch");
24-
} else {
25-
skel->links.tp = bpf_program__attach_tracepoint(skel->progs.tp, "sched", "sched_switch");
26-
}
27-
28-
if (!ASSERT_OK_PTR(skel->links.tp, "attach"))
29-
goto out;
30-
/* give some time for bpf program run */
31-
sleep(1);
32-
3317
/* disable stack trace collection */
3418
key = 0;
3519
val = 1;
@@ -41,27 +25,50 @@ static void test_stacktrace_map_tp(bool raw_tp)
4125
err = compare_map_keys(stackid_hmap_fd, stackmap_fd);
4226
if (CHECK(err, "compare_map_keys stackid_hmap vs. stackmap",
4327
"err %d errno %d\n", err, errno))
44-
goto out;
28+
return;
4529

4630
err = compare_map_keys(stackmap_fd, stackid_hmap_fd);
4731
if (CHECK(err, "compare_map_keys stackmap vs. stackid_hmap",
4832
"err %d errno %d\n", err, errno))
49-
goto out;
33+
return;
5034

5135
stack_trace_len = PERF_MAX_STACK_DEPTH * sizeof(__u64);
5236
err = compare_stack_ips(stackmap_fd, stack_amap_fd, stack_trace_len);
5337
if (CHECK(err, "compare_stack_ips stackmap vs. stack_amap",
5438
"err %d errno %d\n", err, errno))
55-
goto out;
39+
return;
5640

5741
stack_id = skel->bss->stack_id;
5842
err = bpf_map_lookup_and_delete_elem(stackmap_fd, &stack_id, stack);
5943
if (!ASSERT_OK(err, "lookup and delete target stack_id"))
60-
goto out;
44+
return;
6145

6246
err = bpf_map_lookup_elem(stackmap_fd, &stack_id, stack);
63-
if (!ASSERT_EQ(err, -ENOENT, "lookup deleted stack_id"))
47+
ASSERT_EQ(err, -ENOENT, "lookup deleted stack_id");
48+
}
49+
50+
static void test_stacktrace_map_tp(bool raw_tp)
51+
{
52+
struct stacktrace_map *skel;
53+
54+
skel = stacktrace_map__open_and_load();
55+
if (!ASSERT_OK_PTR(skel, "skel_open_and_load"))
56+
return;
57+
58+
if (raw_tp) {
59+
skel->links.tp = bpf_program__attach_raw_tracepoint(skel->progs.raw_tp, "sched_switch");
60+
} else {
61+
skel->links.tp = bpf_program__attach_tracepoint(skel->progs.tp, "sched", "sched_switch");
62+
}
63+
64+
if (!ASSERT_OK_PTR(skel->links.tp, "attach"))
6465
goto out;
66+
67+
/* give some time for bpf program run */
68+
sleep(1);
69+
70+
check_stackmap(skel);
71+
6572
out:
6673
stacktrace_map__destroy(skel);
6774
}

0 commit comments

Comments
 (0)