From: Richard Palethorpe <rpalethorpe@suse.de>
To: Andrea Cervesato <andrea.cervesato@suse.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v1] Add epoll_wait05 test
Date: Thu, 20 Oct 2022 10:10:36 +0100 [thread overview]
Message-ID: <87sfjivoso.fsf@suse.de> (raw)
In-Reply-To: <20221010101857.14585-1-andrea.cervesato@suse.com>
Hello,
Andrea Cervesato via ltp <ltp@lists.linux.it> writes:
> This test verifies that epoll receives EPOLLHUP/EPOLLRDHUP event
> when we hang a reading half-socket we are polling on.
>
> Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
> ---
> .../kernel/syscalls/epoll_wait/.gitignore | 1 +
> .../kernel/syscalls/epoll_wait/epoll_wait05.c | 74 +++++++++++++++++++
> 2 files changed, 75 insertions(+)
> create mode 100644 testcases/kernel/syscalls/epoll_wait/epoll_wait05.c
>
> diff --git a/testcases/kernel/syscalls/epoll_wait/.gitignore b/testcases/kernel/syscalls/epoll_wait/.gitignore
> index 222955dd2..ab5a9c010 100644
> --- a/testcases/kernel/syscalls/epoll_wait/.gitignore
> +++ b/testcases/kernel/syscalls/epoll_wait/.gitignore
> @@ -2,3 +2,4 @@ epoll_wait01
> epoll_wait02
> epoll_wait03
> epoll_wait04
> +epoll_wait05
> diff --git a/testcases/kernel/syscalls/epoll_wait/epoll_wait05.c b/testcases/kernel/syscalls/epoll_wait/epoll_wait05.c
> new file mode 100644
> index 000000000..7909a6586
> --- /dev/null
> +++ b/testcases/kernel/syscalls/epoll_wait/epoll_wait05.c
> @@ -0,0 +1,74 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (C) 2022 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com>
> + */
> +
> +/*\
> + * [Description]
> + *
> + * Verify that epoll receives EPOLLHUP/EPOLLRDHUP event when we hang a reading
> + * half-socket we are polling on.
> + */
> +
> +#include <poll.h>
> +#include <sys/epoll.h>
> +#include "tst_test.h"
> +
> +static int sockfd;
> +static int epfd;
> +
> +static void cleanup(void)
> +{
> + if (epfd > 0)
> + SAFE_CLOSE(epfd);
> +
> + if (sockfd > 0)
> + SAFE_CLOSE(sockfd);
> +}
> +
> +static void run(void)
> +{
> + int res;
> + struct epoll_event evt_req;
> + struct epoll_event evt_rec;
> +
> + sockfd = SAFE_SOCKET(AF_INET, SOCK_STREAM, 0);
> +
> + epfd = epoll_create1(0);
I added safe epoll functions in an unmerged patch-set; see:
https://patchwork.ozlabs.org/project/ltp/patch/20220927161408.23743-2-rpalethorpe@suse.com/
I will merge that so you can use it here.
> + if (epfd == -1)
> + tst_brk(TBROK | TERRNO, "fail to create epoll instance");
> +
> + tst_res(TINFO, "Polling on socket");
> +
> + evt_req.events = EPOLLRDHUP;
> + res = epoll_ctl(epfd, EPOLL_CTL_ADD, sockfd, &evt_req);
> + if (res == -1)
> + tst_brk(TBROK | TERRNO, "epoll_ctl failure");
> +
> + tst_res(TINFO, "Hang reading half-socket");
> + shutdown(sockfd, SHUT_RD);
We should check the return value. It will help with debugging if the
test fails.
> +
> + res = epoll_wait(epfd, &evt_rec, 1, 2000);
> + if (res <= 0) {
> + tst_res(TFAIL | TERRNO, "epoll_wait() returned %i", res);
> + return;
> + }
> +
> + if (evt_rec.events & EPOLLHUP)
> + tst_res(TPASS, "Received EPOLLHUP");
> + else
> + tst_res(TFAIL, "EPOLLHUP has not been received");
> +
> + if (evt_rec.events & EPOLLRDHUP)
> + tst_res(TPASS, "Received EPOLLRDHUP");
> + else
> + tst_res(TFAIL, "EPOLLRDHUP has not been received");
> +
> + SAFE_CLOSE(epfd);
> +}
> +
> +static struct tst_test test = {
> + .cleanup = cleanup,
> + .test_all = run,
> + .forks_child = 1,
> +};
> --
> 2.35.3
--
Thank you,
Richard.
--
Mailing list info: https://lists.linux.it/listinfo/ltp
prev parent reply other threads:[~2022-10-20 9:15 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-10 10:18 [LTP] [PATCH v1] Add epoll_wait05 test Andrea Cervesato via ltp
2022-10-20 9:10 ` Richard Palethorpe [this message]
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=87sfjivoso.fsf@suse.de \
--to=rpalethorpe@suse.de \
--cc=andrea.cervesato@suse.com \
--cc=ltp@lists.linux.it \
/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.