All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonghong Song <yonghong.song@linux.dev>
To: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
	Andrii Nakryiko <andrii@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	kernel-team@fb.com, Martin KaFai Lau <martin.lau@kernel.org>
Subject: Re: [PATCH bpf-next v2 1/5] selftests/bpf: Replace CHECK with ASSERT macros for ksyms test
Date: Fri, 22 Mar 2024 10:28:40 -0700	[thread overview]
Message-ID: <101611b6-2c7a-47c0-85dd-9cfe17c4a7e8@linux.dev> (raw)
In-Reply-To: <CAEf4Bza_geEAGWC1huvT37OcWs18K_pDf+mKDjY=gkrdNuFqHw@mail.gmail.com>


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
>>>>

  reply	other threads:[~2024-03-22 17:28 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-21 20:00 [PATCH bpf-next v2 0/5] bpf: Fix a couple of test failures with LTO kernel Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 1/5] selftests/bpf: Replace CHECK with ASSERT macros for ksyms test Yonghong Song
2024-03-22 12:38   ` Jiri Olsa
2024-03-22 16:13   ` Andrii Nakryiko
2024-03-22 16:41     ` Yonghong Song
2024-03-22 16:48       ` Andrii Nakryiko
2024-03-22 17:28         ` Yonghong Song [this message]
2024-03-21 20:01 ` [PATCH bpf-next v2 2/5] libbpf: Mark libbpf_kallsyms_parse static function Yonghong Song
2024-03-22 12:37   ` Jiri Olsa
2024-03-22 15:37     ` Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 3/5] libbpf: Handle <orig_name>.llvm.<hash> symbol properly Yonghong Song
2024-03-21 21:54   ` Alexei Starovoitov
2024-03-21 23:55     ` Yonghong Song
2024-03-22  0:02       ` Alexei Starovoitov
2024-03-22  0:17         ` Andrii Nakryiko
2024-03-22  0:32           ` Yonghong Song
2024-03-22  0:18   ` Andrii Nakryiko
2024-03-22  0:34     ` Yonghong Song
2024-03-22 21:50   ` Andrii Nakryiko
2024-03-22 22:09     ` Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 4/5] selftests/bpf: Fix kprobe_multi_bench_attach test failure with LTO kernel Yonghong Song
2024-03-22 12:37   ` Jiri Olsa
2024-03-22 16:01     ` Yonghong Song
2024-03-22 21:53       ` Andrii Nakryiko
2024-03-22 22:20         ` Yonghong Song
2024-03-21 20:01 ` [PATCH bpf-next v2 5/5] selftests/bpf: Add a selftest with available_filter_functions_addrs Yonghong Song
2024-03-22 12:26   ` Jiri Olsa
2024-03-22 16:07     ` Yonghong Song
2024-03-22 21:58       ` Andrii Nakryiko
2024-03-22 22:23         ` Yonghong Song

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=101611b6-2c7a-47c0-85dd-9cfe17c4a7e8@linux.dev \
    --to=yonghong.song@linux.dev \
    --cc=andrii.nakryiko@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=kernel-team@fb.com \
    --cc=martin.lau@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.