All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bin Meng <bmeng.cn@gmail.com>
To: qemu-devel@nongnu.org
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Bin Meng" <bin.meng@windriver.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>
Subject: [PATCH 13/18] tests/qtest: libqtest: Correct the timeout unit of blocking receive calls for win32
Date: Thu,  6 Oct 2022 23:11:30 +0800	[thread overview]
Message-ID: <20221006151135.2078908-14-bmeng.cn@gmail.com> (raw)
In-Reply-To: <20221006151135.2078908-1-bmeng.cn@gmail.com>

From: Bin Meng <bin.meng@windriver.com>

Some qtest cases don't get response from the QEMU executable under
test in time on Windows. It turns out that the socket receive call
got timeout before it receive the complete response.

The timeout value is supposed to be set to 50 seconds via the
setsockopt() call, but there is a difference among platforms.
The timeout unit of blocking receive calls is measured in
seconds on non-Windows platforms but milliseconds on Windows.

Signed-off-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---

(no changes since v1)

 tests/qtest/libqtest.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c
index ecd22cdb11..d52883c361 100644
--- a/tests/qtest/libqtest.c
+++ b/tests/qtest/libqtest.c
@@ -36,13 +36,14 @@
 #include "qapi/qmp/qstring.h"
 
 #define MAX_IRQ 256
-#define SOCKET_TIMEOUT 50
 
 #ifndef _WIN32
+# define SOCKET_TIMEOUT 50
 # define CMD_EXEC   "exec "
 # define DEV_STDERR "/dev/fd/2"
 # define DEV_NULL   "/dev/null"
 #else
+# define SOCKET_TIMEOUT 50000
 # define CMD_EXEC   ""
 # define DEV_STDERR "2"
 # define DEV_NULL   "nul"
@@ -103,8 +104,16 @@ static int socket_accept(int sock)
     struct sockaddr_un addr;
     socklen_t addrlen;
     int ret;
+    /*
+     * timeout unit of blocking receive calls is different among platfoms.
+     * It's in seconds on non-Windows platforms but milliseconds on Windows.
+     */
+#ifndef _WIN32
     struct timeval timeout = { .tv_sec = SOCKET_TIMEOUT,
                                .tv_usec = 0 };
+#else
+    DWORD timeout = SOCKET_TIMEOUT;
+#endif
 
     if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO,
                    (void *)&timeout, sizeof(timeout))) {
-- 
2.34.1



  parent reply	other threads:[~2022-10-06 15:39 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-06 15:11 [PATCH 00/18] tests/qtest: Enable running qtest on Windows Bin Meng
2022-10-06 15:11 ` [PATCH 01/18] semihosting/arm-compat-semi: Avoid using hardcoded /tmp Bin Meng
2022-10-06 15:11 ` [PATCH 02/18] tcg: " Bin Meng
2022-10-06 15:11 ` [PATCH 03/18] util/qemu-sockets: Use g_get_tmp_dir() to get the directory for temporary files Bin Meng
2022-10-06 15:11 ` [PATCH 04/18] tests/qtest: migration-test: Avoid using hardcoded /tmp Bin Meng
2022-10-06 15:11 ` [PATCH 05/18] block/vvfat: Unify the mkdir() call Bin Meng
2022-10-06 15:11 ` [PATCH 06/18] fsdev/virtfs-proxy-helper: Use g_mkdir() Bin Meng
2022-10-06 15:11 ` [PATCH 07/18] hw/usb: dev-mtp: " Bin Meng
2022-10-06 15:11 ` [PATCH 08/18] accel/qtest: Support qtest accelerator for Windows Bin Meng
2022-10-06 15:11 ` [PATCH 09/18] tests/qtest: Use send/recv for socket communication Bin Meng
2022-10-06 15:11 ` [PATCH 10/18] tests/qtest: libqtest: Install signal handler via signal() Bin Meng
2022-10-06 15:11 ` [PATCH 11/18] tests/qtest: Support libqtest to build and run on Windows Bin Meng
2022-10-06 15:11 ` [PATCH 12/18] tests/qtest: migration-test: Make sure QEMU process "to" exited after migration is canceled Bin Meng
2022-10-06 15:11 ` Bin Meng [this message]
2022-10-06 15:11 ` [PATCH 14/18] io/channel-watch: Drop a superfluous '#ifdef WIN32' Bin Meng
2022-10-06 15:11 ` [PATCH 15/18] io/channel-watch: Drop the unnecessary cast Bin Meng
2022-10-06 15:11 ` [PATCH 16/18] io/channel-watch: Fix socket watch on Windows Bin Meng
2022-10-06 15:11 ` [PATCH 17/18] .gitlab-ci.d/windows.yml: Increase the timeout to 90 minutes Bin Meng
2022-10-06 15:11 ` [PATCH 18/18] tests/qtest: Enable qtest build on Windows Bin Meng
2022-10-06 15:17 ` [PATCH 00/18] tests/qtest: Enable running qtest " Bin Meng

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=20221006151135.2078908-14-bmeng.cn@gmail.com \
    --to=bmeng.cn@gmail.com \
    --cc=bin.meng@windriver.com \
    --cc=lvivier@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /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.