Re: [PATCH bpf-next v1 5/8] selftests/bpf: Add test for io_uring BPF iterators
From: Yonghong Song <hidden>
Date: 2021-11-18 19:22:20
Also in:
bpf, io-uring
On 11/18/21 10:33 AM, Kumar Kartikeya Dwivedi wrote:
On Thu, Nov 18, 2021 at 11:24:19PM IST, Yonghong Song wrote:quoted
On 11/15/21 9:42 PM, Kumar Kartikeya Dwivedi wrote:quoted
This exercises the io_uring_buf and io_uring_file iterators, and tests sparse file sets as well. Cc: Jens Axboe <axboe@kernel.dk> Cc: Pavel Begunkov <asml.silence@gmail.com> Cc: io-uring@vger.kernel.org Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com> --- .../selftests/bpf/prog_tests/bpf_iter.c | 226 ++++++++++++++++++ .../selftests/bpf/progs/bpf_iter_io_uring.c | 50 ++++ 2 files changed, 276 insertions(+) create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_io_uring.c
[...]
quoted
quoted
+ + ret = snprintf(str, sizeof(buf) - len, "E:%zu\n", ARRAY_SIZE(iovs)); + if (!ASSERT_GE(ret, 0, "snprintf") || !ASSERT_LT(ret, sizeof(buf) - len, "snprintf")) + goto end_close_fd; + + iter_fd = bpf_iter_create(bpf_link__fd(skel->links.dump_io_uring_buf)); + if (!ASSERT_GE(iter_fd, 0, "bpf_iter_create")) + goto end_close_fd; + + ret = read_fd_into_buffer(iter_fd, rbuf, sizeof(rbuf)); + if (!ASSERT_GT(ret, 0, "read_fd_into_buffer")) + goto end_close_iter; + + ASSERT_OK(strcmp(rbuf, buf), "compare iterator output"); + + puts("=== Expected Output ==="); + printf("%s", buf); + puts("==== Actual Output ===="); + printf("%s", rbuf); + puts("=======================");Maybe you can do an actual comparison and use ASSERT_* macros to check result?I already did that in the line above first "puts". The printing is just for better debugging, to show the incorrect output in case test fails. Also in epoll test in the next patch the order of entries is not fixed, since they are sorted using struct file pointer.
I see, maybe the following which prints out details only if failure?
if (!ASSERT_OK(strcmp(rbuf, buf), "compare iterator output")) {
puts("=== ...");
...
}
quoted
quoted
+ +end_close_iter: + close(iter_fd); +end_close_fd: + close(fd); +end: + while (i--) + munmap(iovs[i].iov_base, iovs[i].iov_len); + bpf_iter_io_uring__destroy(skel); +} +
[...]