LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Arseny Krasnov <arseny.krasnov@kaspersky.com>
To: Stefan Hajnoczi <stefanha@redhat.com>,
	Stefano Garzarella <sgarzare@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	"David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	Arseny Krasnov <arseny.krasnov@kaspersky.com>,
	Jorgen Hansen <jhansen@vmware.com>,
	Andra Paraschiv <andraprs@amazon.com>,
	Colin Ian King <colin.king@canonical.com>,
	Norbert Slusarek <nslusarek@gmx.net>
Cc: <kvm@vger.kernel.org>,
	<virtualization@lists.linux-foundation.org>,
	<netdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<oxffffaa@gmail.com>
Subject: [RFC PATCH v1 7/7] vsock_test: 'SO_RCVTIMEO' test for SEQPACKET
Date: Mon, 26 Jul 2021 19:34:36 +0300	[thread overview]
Message-ID: <20210726163439.2590222-1-arseny.krasnov@kaspersky.com> (raw)
In-Reply-To: <20210726163137.2589102-1-arseny.krasnov@kaspersky.com>

Test for receive timeout check: connection is established,
receiver sets timeout, but sender does nothing. Receiver's
'read()' call must return EAGAIN.

Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
---
 tools/testing/vsock/vsock_test.c | 49 ++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_test.c
index 2a3638c0a008..aa2de27d0f77 100644
--- a/tools/testing/vsock/vsock_test.c
+++ b/tools/testing/vsock/vsock_test.c
@@ -391,6 +391,50 @@ static void test_seqpacket_msg_trunc_server(const struct test_opts *opts)
 	close(fd);
 }
 
+static void test_seqpacket_timeout_client(const struct test_opts *opts)
+{
+	int fd;
+	struct timeval tv;
+	char dummy;
+
+	fd = vsock_seqpacket_connect(opts->peer_cid, 1234);
+	if (fd < 0) {
+		perror("connect");
+		exit(EXIT_FAILURE);
+	}
+
+	tv.tv_sec = 1;
+	tv.tv_usec = 0;
+
+	if (setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (void *)&tv, sizeof(tv)) == -1) {
+		perror("setsockopt 'SO_RCVTIMEO'");
+		exit(EXIT_FAILURE);
+	}
+
+	if ((read(fd, &dummy, sizeof(dummy)) != -1) ||
+	    (errno != EAGAIN)) {
+		perror("EAGAIN expected");
+		exit(EXIT_FAILURE);
+	}
+
+	control_writeln("WAITDONE");
+	close(fd);
+}
+
+static void test_seqpacket_timeout_server(const struct test_opts *opts)
+{
+	int fd;
+
+	fd = vsock_seqpacket_accept(VMADDR_CID_ANY, 1234, NULL);
+	if (fd < 0) {
+		perror("accept");
+		exit(EXIT_FAILURE);
+	}
+
+	control_expectln("WAITDONE");
+	close(fd);
+}
+
 static struct test_case test_cases[] = {
 	{
 		.name = "SOCK_STREAM connection reset",
@@ -431,6 +475,11 @@ static struct test_case test_cases[] = {
 		.run_client = test_seqpacket_msg_trunc_client,
 		.run_server = test_seqpacket_msg_trunc_server,
 	},
+	{
+		.name = "SOCK_SEQPACKET timeout",
+		.run_client = test_seqpacket_timeout_client,
+		.run_server = test_seqpacket_timeout_server,
+	},
 	{},
 };
 
-- 
2.25.1


  parent reply	other threads:[~2021-07-26 16:41 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-26 16:31 [RFC PATCH v1 0/7] virtio/vsock: introduce MSG_EOR flag " Arseny Krasnov
2021-07-26 16:33 ` [RFC PATCH v1 1/7] virtio/vsock: add 'VIRTIO_VSOCK_SEQ_EOM' bit Arseny Krasnov
2021-08-06  7:18   ` Stefano Garzarella
2021-07-26 16:33 ` [RFC PATCH v1 2/7] vsock: rename implementation from 'record' to 'message' Arseny Krasnov
2021-08-06  7:20   ` Stefano Garzarella
2021-07-26 16:33 ` [RFC PATCH v1 3/7] vhost/vsock: support MSG_EOR bit processing Arseny Krasnov
2021-08-06  7:28   ` Stefano Garzarella
2021-08-06  8:40     ` Arseny Krasnov
2021-08-06  8:47       ` Stefano Garzarella
2021-07-26 16:33 ` [RFC PATCH v1 4/7] virito/vsock: " Arseny Krasnov
2021-07-26 16:34 ` [RFC PATCH v1 5/7] af_vsock: rename variables in receive loop Arseny Krasnov
2021-07-26 16:34 ` [RFC PATCH v1 6/7] vsock_test: update message bounds test for MSG_EOR Arseny Krasnov
2021-07-26 16:34 ` Arseny Krasnov [this message]
2021-07-27  7:59 ` [RFC PATCH v1 0/7] virtio/vsock: introduce MSG_EOR flag for SEQPACKET Stefano Garzarella
2021-07-27  9:34   ` [MASSMAIL KLMS] " Arseny Krasnov
2021-07-27  9:58     ` Stefano Garzarella
2021-07-27 12:35       ` [MASSMAIL KLMS] " Arseny Krasnov
2021-08-04 12:57 ` Stefano Garzarella
2021-08-05  8:33   ` Arseny Krasnov
2021-08-05  9:06     ` Stefano Garzarella
2021-08-05  9:21       ` [!!Mass Mail KSE][MASSMAIL KLMS] " Arseny Krasnov
2021-08-06  7:16         ` Stefano Garzarella

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=20210726163439.2590222-1-arseny.krasnov@kaspersky.com \
    --to=arseny.krasnov@kaspersky.com \
    --cc=andraprs@amazon.com \
    --cc=colin.king@canonical.com \
    --cc=davem@davemloft.net \
    --cc=jasowang@redhat.com \
    --cc=jhansen@vmware.com \
    --cc=kuba@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=nslusarek@gmx.net \
    --cc=oxffffaa@gmail.com \
    --cc=sgarzare@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=virtualization@lists.linux-foundation.org \
    --subject='Re: [RFC PATCH v1 7/7] vsock_test: '\''SO_RCVTIMEO'\'' test for SEQPACKET' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).