Message ID | 20240321200103.2218888-1-yonghong.song@linux.dev (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | BPF |
Headers | show |
Series | bpf: Fix a couple of test failures with LTO kernel | expand |
On Thu, Mar 21, 2024 at 01:01:03PM -0700, Yonghong Song wrote: > I am going to modify ksyms test later so take this opportunity > to replace old CHECK macros with new ASSERT macros. > No functionality change. > > Signed-off-by: Yonghong Song <yonghong.song@linux.dev> Acked-by: Jiri Olsa <jolsa@kernel.org> jirka > --- > .../testing/selftests/bpf/prog_tests/ksyms.c | 30 ++++++------------- > 1 file changed, 9 insertions(+), 21 deletions(-) > > diff --git a/tools/testing/selftests/bpf/prog_tests/ksyms.c b/tools/testing/selftests/bpf/prog_tests/ksyms.c > index b295969b263b..6a86d1f07800 100644 > --- a/tools/testing/selftests/bpf/prog_tests/ksyms.c > +++ b/tools/testing/selftests/bpf/prog_tests/ksyms.c > @@ -5,8 +5,6 @@ > #include "test_ksyms.skel.h" > #include <sys/stat.h> > > -static int duration; > - > void test_ksyms(void) > { > const char *btf_path = "/sys/kernel/btf/vmlinux"; > @@ -18,43 +16,33 @@ void test_ksyms(void) > int err; > > err = kallsyms_find("bpf_link_fops", &link_fops_addr); > - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) > - return; > - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'bpf_link_fops' not found\n")) > + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "bpf_link_fops")) > return; > > err = kallsyms_find("__per_cpu_start", &per_cpu_start_addr); > - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) > - return; > - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'per_cpu_start' not found\n")) > + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "__per_cpu_start")) > return; > > - if (CHECK(stat(btf_path, &st), "stat_btf", "err %d\n", errno)) > + if (!ASSERT_OK(stat(btf_path, &st), "stat_btf")) > return; > btf_size = st.st_size; > > skel = test_ksyms__open_and_load(); > - if (CHECK(!skel, "skel_open", "failed to open and load skeleton\n")) > + if (!ASSERT_OK_PTR(skel, "test_ksyms__open_and_load")) > return; > > err = test_ksyms__attach(skel); > - if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err)) > + if (!ASSERT_OK(err, "test_ksyms__attach")) > goto cleanup; > > /* trigger tracepoint */ > usleep(1); > > data = skel->data; > - CHECK(data->out__bpf_link_fops != link_fops_addr, "bpf_link_fops", > - "got 0x%llx, exp 0x%llx\n", > - data->out__bpf_link_fops, link_fops_addr); > - CHECK(data->out__bpf_link_fops1 != 0, "bpf_link_fops1", > - "got %llu, exp %llu\n", data->out__bpf_link_fops1, (__u64)0); > - CHECK(data->out__btf_size != btf_size, "btf_size", > - "got %llu, exp %llu\n", data->out__btf_size, btf_size); > - CHECK(data->out__per_cpu_start != per_cpu_start_addr, "__per_cpu_start", > - "got %llu, exp %llu\n", data->out__per_cpu_start, > - per_cpu_start_addr); > + ASSERT_EQ(data->out__bpf_link_fops, link_fops_addr, "bpf_link_fops"); > + ASSERT_EQ(data->out__bpf_link_fops1, 0, "bpf_link_fops1"); > + ASSERT_EQ(data->out__btf_size, btf_size, "btf_size"); > + ASSERT_EQ(data->out__per_cpu_start, per_cpu_start_addr, "__per_cpu_start"); > > cleanup: > test_ksyms__destroy(skel); > -- > 2.43.0 > >
On Thu, Mar 21, 2024 at 1:01 PM Yonghong Song <yonghong.song@linux.dev> wrote: > > I am going to modify ksyms test later so take this opportunity > to replace old CHECK macros with new ASSERT macros. > No functionality change. > > Signed-off-by: Yonghong Song <yonghong.song@linux.dev> > --- > .../testing/selftests/bpf/prog_tests/ksyms.c | 30 ++++++------------- > 1 file changed, 9 insertions(+), 21 deletions(-) > > diff --git a/tools/testing/selftests/bpf/prog_tests/ksyms.c b/tools/testing/selftests/bpf/prog_tests/ksyms.c > index b295969b263b..6a86d1f07800 100644 > --- a/tools/testing/selftests/bpf/prog_tests/ksyms.c > +++ b/tools/testing/selftests/bpf/prog_tests/ksyms.c > @@ -5,8 +5,6 @@ > #include "test_ksyms.skel.h" > #include <sys/stat.h> > > -static int duration; > - > void test_ksyms(void) > { > const char *btf_path = "/sys/kernel/btf/vmlinux"; > @@ -18,43 +16,33 @@ void test_ksyms(void) > int err; > > err = kallsyms_find("bpf_link_fops", &link_fops_addr); > - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) > - return; > - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'bpf_link_fops' not found\n")) > + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "bpf_link_fops")) > return; it's best to keep each individual equality test as ASSERT_EQ(), that way we get more specific and detailed error (with expected vs actual value), which here we'll just get "wanted true but got false", and then we'd have to debug some more which of the conditions it is. So please keep the original granularity of checks everywhere. > > err = kallsyms_find("__per_cpu_start", &per_cpu_start_addr); > - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) > - return; > - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'per_cpu_start' not found\n")) > + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "__per_cpu_start")) > return; > > - if (CHECK(stat(btf_path, &st), "stat_btf", "err %d\n", errno)) > + if (!ASSERT_OK(stat(btf_path, &st), "stat_btf")) > return; > btf_size = st.st_size; > > skel = test_ksyms__open_and_load(); > - if (CHECK(!skel, "skel_open", "failed to open and load skeleton\n")) > + if (!ASSERT_OK_PTR(skel, "test_ksyms__open_and_load")) > return; > > err = test_ksyms__attach(skel); > - if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err)) > + if (!ASSERT_OK(err, "test_ksyms__attach")) > goto cleanup; > > /* trigger tracepoint */ > usleep(1); > > data = skel->data; > - CHECK(data->out__bpf_link_fops != link_fops_addr, "bpf_link_fops", > - "got 0x%llx, exp 0x%llx\n", > - data->out__bpf_link_fops, link_fops_addr); > - CHECK(data->out__bpf_link_fops1 != 0, "bpf_link_fops1", > - "got %llu, exp %llu\n", data->out__bpf_link_fops1, (__u64)0); > - CHECK(data->out__btf_size != btf_size, "btf_size", > - "got %llu, exp %llu\n", data->out__btf_size, btf_size); > - CHECK(data->out__per_cpu_start != per_cpu_start_addr, "__per_cpu_start", > - "got %llu, exp %llu\n", data->out__per_cpu_start, > - per_cpu_start_addr); > + ASSERT_EQ(data->out__bpf_link_fops, link_fops_addr, "bpf_link_fops"); > + ASSERT_EQ(data->out__bpf_link_fops1, 0, "bpf_link_fops1"); > + ASSERT_EQ(data->out__btf_size, btf_size, "btf_size"); > + ASSERT_EQ(data->out__per_cpu_start, per_cpu_start_addr, "__per_cpu_start"); > > cleanup: > test_ksyms__destroy(skel); > -- > 2.43.0 >
On 3/22/24 9:13 AM, Andrii Nakryiko wrote: > On Thu, Mar 21, 2024 at 1:01 PM Yonghong Song <yonghong.song@linux.dev> wrote: >> I am going to modify ksyms test later so take this opportunity >> to replace old CHECK macros with new ASSERT macros. >> No functionality change. >> >> Signed-off-by: Yonghong Song <yonghong.song@linux.dev> >> --- >> .../testing/selftests/bpf/prog_tests/ksyms.c | 30 ++++++------------- >> 1 file changed, 9 insertions(+), 21 deletions(-) >> >> diff --git a/tools/testing/selftests/bpf/prog_tests/ksyms.c b/tools/testing/selftests/bpf/prog_tests/ksyms.c >> index b295969b263b..6a86d1f07800 100644 >> --- a/tools/testing/selftests/bpf/prog_tests/ksyms.c >> +++ b/tools/testing/selftests/bpf/prog_tests/ksyms.c >> @@ -5,8 +5,6 @@ >> #include "test_ksyms.skel.h" >> #include <sys/stat.h> >> >> -static int duration; >> - >> void test_ksyms(void) >> { >> const char *btf_path = "/sys/kernel/btf/vmlinux"; >> @@ -18,43 +16,33 @@ void test_ksyms(void) >> int err; >> >> err = kallsyms_find("bpf_link_fops", &link_fops_addr); >> - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) >> - return; >> - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'bpf_link_fops' not found\n")) >> + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "bpf_link_fops")) >> return; > it's best to keep each individual equality test as ASSERT_EQ(), that > way we get more specific and detailed error (with expected vs actual > value), which here we'll just get "wanted true but got false", and > then we'd have to debug some more which of the conditions it is. So > please keep the original granularity of checks everywhere. Do you mean if (ASSERT_EQ(err, -EINVAL, "...")) return; if (ASSERT_EQ(err, -ENOENT, "...")) return; This does not really work, for example if err = 0, it will declare test failure. > >> err = kallsyms_find("__per_cpu_start", &per_cpu_start_addr); >> - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) >> - return; >> - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'per_cpu_start' not found\n")) >> + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "__per_cpu_start")) >> return; >> >> - if (CHECK(stat(btf_path, &st), "stat_btf", "err %d\n", errno)) >> + if (!ASSERT_OK(stat(btf_path, &st), "stat_btf")) >> return; >> btf_size = st.st_size; >> >> skel = test_ksyms__open_and_load(); >> - if (CHECK(!skel, "skel_open", "failed to open and load skeleton\n")) >> + if (!ASSERT_OK_PTR(skel, "test_ksyms__open_and_load")) >> return; >> >> err = test_ksyms__attach(skel); >> - if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err)) >> + if (!ASSERT_OK(err, "test_ksyms__attach")) >> goto cleanup; >> >> /* trigger tracepoint */ >> usleep(1); >> >> data = skel->data; >> - CHECK(data->out__bpf_link_fops != link_fops_addr, "bpf_link_fops", >> - "got 0x%llx, exp 0x%llx\n", >> - data->out__bpf_link_fops, link_fops_addr); >> - CHECK(data->out__bpf_link_fops1 != 0, "bpf_link_fops1", >> - "got %llu, exp %llu\n", data->out__bpf_link_fops1, (__u64)0); >> - CHECK(data->out__btf_size != btf_size, "btf_size", >> - "got %llu, exp %llu\n", data->out__btf_size, btf_size); >> - CHECK(data->out__per_cpu_start != per_cpu_start_addr, "__per_cpu_start", >> - "got %llu, exp %llu\n", data->out__per_cpu_start, >> - per_cpu_start_addr); >> + ASSERT_EQ(data->out__bpf_link_fops, link_fops_addr, "bpf_link_fops"); >> + ASSERT_EQ(data->out__bpf_link_fops1, 0, "bpf_link_fops1"); >> + ASSERT_EQ(data->out__btf_size, btf_size, "btf_size"); >> + ASSERT_EQ(data->out__per_cpu_start, per_cpu_start_addr, "__per_cpu_start"); >> >> cleanup: >> test_ksyms__destroy(skel); >> -- >> 2.43.0 >>
On Fri, Mar 22, 2024 at 9:41 AM Yonghong Song <yonghong.song@linux.dev> wrote: > > > On 3/22/24 9:13 AM, Andrii Nakryiko wrote: > > On Thu, Mar 21, 2024 at 1:01 PM Yonghong Song <yonghong.song@linux.dev> wrote: > >> I am going to modify ksyms test later so take this opportunity > >> to replace old CHECK macros with new ASSERT macros. > >> No functionality change. > >> > >> Signed-off-by: Yonghong Song <yonghong.song@linux.dev> > >> --- > >> .../testing/selftests/bpf/prog_tests/ksyms.c | 30 ++++++------------- > >> 1 file changed, 9 insertions(+), 21 deletions(-) > >> > >> diff --git a/tools/testing/selftests/bpf/prog_tests/ksyms.c b/tools/testing/selftests/bpf/prog_tests/ksyms.c > >> index b295969b263b..6a86d1f07800 100644 > >> --- a/tools/testing/selftests/bpf/prog_tests/ksyms.c > >> +++ b/tools/testing/selftests/bpf/prog_tests/ksyms.c > >> @@ -5,8 +5,6 @@ > >> #include "test_ksyms.skel.h" > >> #include <sys/stat.h> > >> > >> -static int duration; > >> - > >> void test_ksyms(void) > >> { > >> const char *btf_path = "/sys/kernel/btf/vmlinux"; > >> @@ -18,43 +16,33 @@ void test_ksyms(void) > >> int err; > >> > >> err = kallsyms_find("bpf_link_fops", &link_fops_addr); > >> - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) > >> - return; > >> - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'bpf_link_fops' not found\n")) > >> + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "bpf_link_fops")) > >> return; > > it's best to keep each individual equality test as ASSERT_EQ(), that > > way we get more specific and detailed error (with expected vs actual > > value), which here we'll just get "wanted true but got false", and > > then we'd have to debug some more which of the conditions it is. So > > please keep the original granularity of checks everywhere. > > Do you mean > > if (ASSERT_EQ(err, -EINVAL, "...")) > return; > if (ASSERT_EQ(err, -ENOENT, "...")) > return; > > This does not really work, for example if err = 0, it will declare test > failure. if (!ASSERT_NEQ(err, -EINVAL, "...")) return; if (!ASSERT_NEQ(err, -NOENT, "...")) return; It's mirroring original logic. We had two independent checks there? In this case the condition is "not equal" (ASSERT_NEQ). > > > > > >> err = kallsyms_find("__per_cpu_start", &per_cpu_start_addr); > >> - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) > >> - return; > >> - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'per_cpu_start' not found\n")) > >> + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "__per_cpu_start")) > >> return; > >> > >> - if (CHECK(stat(btf_path, &st), "stat_btf", "err %d\n", errno)) > >> + if (!ASSERT_OK(stat(btf_path, &st), "stat_btf")) > >> return; > >> btf_size = st.st_size; > >> > >> skel = test_ksyms__open_and_load(); > >> - if (CHECK(!skel, "skel_open", "failed to open and load skeleton\n")) > >> + if (!ASSERT_OK_PTR(skel, "test_ksyms__open_and_load")) > >> return; > >> > >> err = test_ksyms__attach(skel); > >> - if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err)) > >> + if (!ASSERT_OK(err, "test_ksyms__attach")) > >> goto cleanup; > >> > >> /* trigger tracepoint */ > >> usleep(1); > >> > >> data = skel->data; > >> - CHECK(data->out__bpf_link_fops != link_fops_addr, "bpf_link_fops", > >> - "got 0x%llx, exp 0x%llx\n", > >> - data->out__bpf_link_fops, link_fops_addr); > >> - CHECK(data->out__bpf_link_fops1 != 0, "bpf_link_fops1", > >> - "got %llu, exp %llu\n", data->out__bpf_link_fops1, (__u64)0); > >> - CHECK(data->out__btf_size != btf_size, "btf_size", > >> - "got %llu, exp %llu\n", data->out__btf_size, btf_size); > >> - CHECK(data->out__per_cpu_start != per_cpu_start_addr, "__per_cpu_start", > >> - "got %llu, exp %llu\n", data->out__per_cpu_start, > >> - per_cpu_start_addr); > >> + ASSERT_EQ(data->out__bpf_link_fops, link_fops_addr, "bpf_link_fops"); > >> + ASSERT_EQ(data->out__bpf_link_fops1, 0, "bpf_link_fops1"); > >> + ASSERT_EQ(data->out__btf_size, btf_size, "btf_size"); > >> + ASSERT_EQ(data->out__per_cpu_start, per_cpu_start_addr, "__per_cpu_start"); > >> > >> cleanup: > >> test_ksyms__destroy(skel); > >> -- > >> 2.43.0 > >>
On 3/22/24 9:48 AM, Andrii Nakryiko wrote: > On Fri, Mar 22, 2024 at 9:41 AM Yonghong Song <yonghong.song@linux.dev> wrote: >> >> On 3/22/24 9:13 AM, Andrii Nakryiko wrote: >>> On Thu, Mar 21, 2024 at 1:01 PM Yonghong Song <yonghong.song@linux.dev> wrote: >>>> I am going to modify ksyms test later so take this opportunity >>>> to replace old CHECK macros with new ASSERT macros. >>>> No functionality change. >>>> >>>> Signed-off-by: Yonghong Song <yonghong.song@linux.dev> >>>> --- >>>> .../testing/selftests/bpf/prog_tests/ksyms.c | 30 ++++++------------- >>>> 1 file changed, 9 insertions(+), 21 deletions(-) >>>> >>>> diff --git a/tools/testing/selftests/bpf/prog_tests/ksyms.c b/tools/testing/selftests/bpf/prog_tests/ksyms.c >>>> index b295969b263b..6a86d1f07800 100644 >>>> --- a/tools/testing/selftests/bpf/prog_tests/ksyms.c >>>> +++ b/tools/testing/selftests/bpf/prog_tests/ksyms.c >>>> @@ -5,8 +5,6 @@ >>>> #include "test_ksyms.skel.h" >>>> #include <sys/stat.h> >>>> >>>> -static int duration; >>>> - >>>> void test_ksyms(void) >>>> { >>>> const char *btf_path = "/sys/kernel/btf/vmlinux"; >>>> @@ -18,43 +16,33 @@ void test_ksyms(void) >>>> int err; >>>> >>>> err = kallsyms_find("bpf_link_fops", &link_fops_addr); >>>> - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) >>>> - return; >>>> - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'bpf_link_fops' not found\n")) >>>> + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "bpf_link_fops")) >>>> return; >>> it's best to keep each individual equality test as ASSERT_EQ(), that >>> way we get more specific and detailed error (with expected vs actual >>> value), which here we'll just get "wanted true but got false", and >>> then we'd have to debug some more which of the conditions it is. So >>> please keep the original granularity of checks everywhere. >> Do you mean >> >> if (ASSERT_EQ(err, -EINVAL, "...")) >> return; >> if (ASSERT_EQ(err, -ENOENT, "...")) >> return; >> >> This does not really work, for example if err = 0, it will declare test >> failure. > > if (!ASSERT_NEQ(err, -EINVAL, "...")) > return; > if (!ASSERT_NEQ(err, -NOENT, "...")) > return; > > It's mirroring original logic. We had two independent checks there? In > this case the condition is "not equal" (ASSERT_NEQ). I actually tried this as well when I am experimenting ASSERT_EQ and somehow I concluded that !ASSERT_NEQ not working either. Now, I actully tried with adding err = 0, -EINVAL and -ENOENT and verified it indeed works. I don't know how I concluded it was not working before... Sad. > >> >>>> err = kallsyms_find("__per_cpu_start", &per_cpu_start_addr); >>>> - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) >>>> - return; >>>> - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'per_cpu_start' not found\n")) >>>> + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "__per_cpu_start")) >>>> return; >>>> >>>> - if (CHECK(stat(btf_path, &st), "stat_btf", "err %d\n", errno)) >>>> + if (!ASSERT_OK(stat(btf_path, &st), "stat_btf")) >>>> return; >>>> btf_size = st.st_size; >>>> >>>> skel = test_ksyms__open_and_load(); >>>> - if (CHECK(!skel, "skel_open", "failed to open and load skeleton\n")) >>>> + if (!ASSERT_OK_PTR(skel, "test_ksyms__open_and_load")) >>>> return; >>>> >>>> err = test_ksyms__attach(skel); >>>> - if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err)) >>>> + if (!ASSERT_OK(err, "test_ksyms__attach")) >>>> goto cleanup; >>>> >>>> /* trigger tracepoint */ >>>> usleep(1); >>>> >>>> data = skel->data; >>>> - CHECK(data->out__bpf_link_fops != link_fops_addr, "bpf_link_fops", >>>> - "got 0x%llx, exp 0x%llx\n", >>>> - data->out__bpf_link_fops, link_fops_addr); >>>> - CHECK(data->out__bpf_link_fops1 != 0, "bpf_link_fops1", >>>> - "got %llu, exp %llu\n", data->out__bpf_link_fops1, (__u64)0); >>>> - CHECK(data->out__btf_size != btf_size, "btf_size", >>>> - "got %llu, exp %llu\n", data->out__btf_size, btf_size); >>>> - CHECK(data->out__per_cpu_start != per_cpu_start_addr, "__per_cpu_start", >>>> - "got %llu, exp %llu\n", data->out__per_cpu_start, >>>> - per_cpu_start_addr); >>>> + ASSERT_EQ(data->out__bpf_link_fops, link_fops_addr, "bpf_link_fops"); >>>> + ASSERT_EQ(data->out__bpf_link_fops1, 0, "bpf_link_fops1"); >>>> + ASSERT_EQ(data->out__btf_size, btf_size, "btf_size"); >>>> + ASSERT_EQ(data->out__per_cpu_start, per_cpu_start_addr, "__per_cpu_start"); >>>> >>>> cleanup: >>>> test_ksyms__destroy(skel); >>>> -- >>>> 2.43.0 >>>>
diff --git a/tools/testing/selftests/bpf/prog_tests/ksyms.c b/tools/testing/selftests/bpf/prog_tests/ksyms.c index b295969b263b..6a86d1f07800 100644 --- a/tools/testing/selftests/bpf/prog_tests/ksyms.c +++ b/tools/testing/selftests/bpf/prog_tests/ksyms.c @@ -5,8 +5,6 @@ #include "test_ksyms.skel.h" #include <sys/stat.h> -static int duration; - void test_ksyms(void) { const char *btf_path = "/sys/kernel/btf/vmlinux"; @@ -18,43 +16,33 @@ void test_ksyms(void) int err; err = kallsyms_find("bpf_link_fops", &link_fops_addr); - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) - return; - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'bpf_link_fops' not found\n")) + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "bpf_link_fops")) return; err = kallsyms_find("__per_cpu_start", &per_cpu_start_addr); - if (CHECK(err == -EINVAL, "kallsyms_fopen", "failed to open: %d\n", errno)) - return; - if (CHECK(err == -ENOENT, "ksym_find", "symbol 'per_cpu_start' not found\n")) + if (!ASSERT_TRUE(err != -EINVAL && err != -ENOENT, "__per_cpu_start")) return; - if (CHECK(stat(btf_path, &st), "stat_btf", "err %d\n", errno)) + if (!ASSERT_OK(stat(btf_path, &st), "stat_btf")) return; btf_size = st.st_size; skel = test_ksyms__open_and_load(); - if (CHECK(!skel, "skel_open", "failed to open and load skeleton\n")) + if (!ASSERT_OK_PTR(skel, "test_ksyms__open_and_load")) return; err = test_ksyms__attach(skel); - if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err)) + if (!ASSERT_OK(err, "test_ksyms__attach")) goto cleanup; /* trigger tracepoint */ usleep(1); data = skel->data; - CHECK(data->out__bpf_link_fops != link_fops_addr, "bpf_link_fops", - "got 0x%llx, exp 0x%llx\n", - data->out__bpf_link_fops, link_fops_addr); - CHECK(data->out__bpf_link_fops1 != 0, "bpf_link_fops1", - "got %llu, exp %llu\n", data->out__bpf_link_fops1, (__u64)0); - CHECK(data->out__btf_size != btf_size, "btf_size", - "got %llu, exp %llu\n", data->out__btf_size, btf_size); - CHECK(data->out__per_cpu_start != per_cpu_start_addr, "__per_cpu_start", - "got %llu, exp %llu\n", data->out__per_cpu_start, - per_cpu_start_addr); + ASSERT_EQ(data->out__bpf_link_fops, link_fops_addr, "bpf_link_fops"); + ASSERT_EQ(data->out__bpf_link_fops1, 0, "bpf_link_fops1"); + ASSERT_EQ(data->out__btf_size, btf_size, "btf_size"); + ASSERT_EQ(data->out__per_cpu_start, per_cpu_start_addr, "__per_cpu_start"); cleanup: test_ksyms__destroy(skel);
I am going to modify ksyms test later so take this opportunity to replace old CHECK macros with new ASSERT macros. No functionality change. Signed-off-by: Yonghong Song <yonghong.song@linux.dev> --- .../testing/selftests/bpf/prog_tests/ksyms.c | 30 ++++++------------- 1 file changed, 9 insertions(+), 21 deletions(-)