Skip to content

Commit

Permalink
selftests/bpf: Skip ENOTSUPP in ASSERT_OK
Browse files Browse the repository at this point in the history
Just like handling ENOTSUPP in test_lsm_cgroup_functional(), this patch
adds a new helper test_progs_get_error() to check whether the input error
is ENOTSUPP (524) or ENOTSUP (95). If it is, invoke test__skip() to skip
the test instead of using test__fail().

Use this helper in ASSERT_OK() before invoking CHECK() macro.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
  • Loading branch information
Geliang Tang authored and Kernel Patches Daemon committed Jul 8, 2024
1 parent c292692 commit ec5bdee
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 7 deletions.
6 changes: 1 addition & 5 deletions tools/testing/selftests/bpf/prog_tests/lsm_cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,8 @@ static void test_lsm_cgroup_functional(void)
ASSERT_EQ(query_prog_cnt(cgroup_fd, "bpf_lsm_sk_alloc_security"), 0, "prog count");
ASSERT_EQ(query_prog_cnt(cgroup_fd, NULL), 0, "total prog count");
err = bpf_prog_attach(alloc_prog_fd, cgroup_fd, BPF_LSM_CGROUP, 0);
if (err == -ENOTSUPP) {
test__skip();
goto close_cgroup;
}
if (!ASSERT_OK(err, "attach alloc_prog_fd"))
goto detach_cgroup;
goto close_cgroup;
ASSERT_EQ(query_prog_cnt(cgroup_fd, "bpf_lsm_sk_alloc_security"), 1, "prog count");
ASSERT_EQ(query_prog_cnt(cgroup_fd, NULL), 1, "total prog count");

Expand Down
23 changes: 21 additions & 2 deletions tools/testing/selftests/bpf/test_progs.h
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,23 @@ void test__skip(void);
void test__fail(void);
int test__join_cgroup(const char *path);

static inline bool test_progs_check_errno(int error, int check)
{
return error == -check ||
(error && errno == check);
}

static inline int test_progs_get_error(int error)
{
if (test_progs_check_errno(error, ENOTSUP) ||
test_progs_check_errno(error, ENOTSUPP)) {
test__skip();
return 0;
} else {
return error;
}
}

#define PRINT_FAIL(format...) \
({ \
test__fail(); \
Expand Down Expand Up @@ -338,8 +355,10 @@ int test__join_cgroup(const char *path);
static int duration = 0; \
long long ___res = (res); \
bool ___ok = ___res == 0; \
CHECK(!___ok, (name), "unexpected error: %lld (errno %d)\n", \
___res, errno); \
if (test_progs_get_error(___res)) \
CHECK(!___ok, (name), \
"unexpected error: %lld (errno %d)\n", \
___res, errno); \
___ok; \
})

Expand Down

0 comments on commit ec5bdee

Please sign in to comment.