vsock_test: update message bounds test for MSG_EOR
authorArseny Krasnov <arseny.krasnov@kaspersky.com>
Fri, 3 Sep 2021 12:33:18 +0000 (15:33 +0300)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 6 Sep 2021 06:25:16 +0000 (02:25 -0400)
Set 'MSG_EOR' in one of message sent, check that 'MSG_EOR'
is visible in corresponding message at receiver.

Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Link: https://lore.kernel.org/r/20210903123321.3273866-1-arseny.krasnov@kaspersky.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
tools/testing/vsock/vsock_test.c

index 67766bf..2a3638c 100644 (file)
@@ -282,6 +282,7 @@ static void test_stream_msg_peek_server(const struct test_opts *opts)
 }
 
 #define MESSAGES_CNT 7
+#define MSG_EOR_IDX (MESSAGES_CNT / 2)
 static void test_seqpacket_msg_bounds_client(const struct test_opts *opts)
 {
        int fd;
@@ -294,7 +295,7 @@ static void test_seqpacket_msg_bounds_client(const struct test_opts *opts)
 
        /* Send several messages, one with MSG_EOR flag */
        for (int i = 0; i < MESSAGES_CNT; i++)
-               send_byte(fd, 1, 0);
+               send_byte(fd, 1, (i == MSG_EOR_IDX) ? MSG_EOR : 0);
 
        control_writeln("SENDDONE");
        close(fd);
@@ -324,6 +325,11 @@ static void test_seqpacket_msg_bounds_server(const struct test_opts *opts)
                        perror("message bound violated");
                        exit(EXIT_FAILURE);
                }
+
+               if ((i == MSG_EOR_IDX) ^ !!(msg.msg_flags & MSG_EOR)) {
+                       perror("MSG_EOR");
+                       exit(EXIT_FAILURE);
+               }
        }
 
        close(fd);