[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 46/54] tests/qtest: libqtest: Correct the timeout unit of bloc
From: |
Bin Meng |
Subject: |
[PATCH v4 46/54] tests/qtest: libqtest: Correct the timeout unit of blocking receive calls for win32 |
Date: |
Tue, 27 Sep 2022 19:06:24 +0800 |
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 1ae58624d9..e3360338de 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"
@@ -106,8 +107,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
- [PATCH v4 38/54] tests/qtest: bios-tables-test: Adapt the case for win32, (continued)
- [PATCH v4 38/54] tests/qtest: bios-tables-test: Adapt the case for win32, Bin Meng, 2022/09/27
- [PATCH v4 39/54] tests/qtest: boot-serial-test: Close the serial file before starting QEMU, Bin Meng, 2022/09/27
- [PATCH v4 32/54] tests/qtest: libqtest: Adapt global_qtest declaration for win32, Bin Meng, 2022/09/27
- [PATCH v4 34/54] tests/qtest: libqtest: Exclude the *_fds APIs for win32, Bin Meng, 2022/09/27
- [PATCH v4 37/54] tests/qtest: {ahci, ide}-test: Use relative path for temporary files for win32, Bin Meng, 2022/09/27
- [PATCH v4 43/54] tests/qtest: migration-test: Make sure QEMU process "to" exited after migration is canceled, Bin Meng, 2022/09/27
- [PATCH v4 46/54] tests/qtest: libqtest: Correct the timeout unit of blocking receive calls for win32,
Bin Meng <=
- [PATCH v4 40/54] tests/qtest: ide-test: Open file in binary mode, Bin Meng, 2022/09/27
- [PATCH v4 41/54] tests/qtest: microbit-test: Fix socket access for win32, Bin Meng, 2022/09/27
- [PATCH v4 42/54] tests/qtest: migration-test: Disable IO redirection for win32, Bin Meng, 2022/09/27
- [PATCH v4 45/54] tests/qtest: libqtest: Replace the call to close a socket with closesocket(), Bin Meng, 2022/09/27
- [PATCH v4 44/54] tests/qtest: virtio-net-failover: Disable migration tests for win32, Bin Meng, 2022/09/27
- [PATCH v4 47/54] io/channel-watch: Drop a superfluous '#ifdef WIN32', Bin Meng, 2022/09/27
- [PATCH v4 48/54] io/channel-watch: Drop the unnecessary cast, Bin Meng, 2022/09/27
- [PATCH v4 49/54] io/channel-watch: Fix socket watch on Windows, Bin Meng, 2022/09/27
- [PATCH v4 51/54] .gitlab-ci.d/windows.yml: Increase the timeout to 90 minutes, Bin Meng, 2022/09/27
- [PATCH v4 50/54] tests/qtest: migration-test: Skip running some TLS cases for win32, Bin Meng, 2022/09/27