[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 47/51] tests/qtest: libqtest: Correct the timeout unit of blockin
From: |
Bin Meng |
Subject: |
[PATCH 47/51] tests/qtest: libqtest: Correct the timeout unit of blocking receive calls for win32 |
Date: |
Wed, 24 Aug 2022 17:40:25 +0800 |
From: Bin Meng <bin.meng@windriver.com>
Some qtest cases don't get response from the 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>
---
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 918f4657ed..7b41971347 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"
@@ -108,8 +109,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 41/51] tests/qtest: migration-test: Kill "to" after migration is canceled, (continued)
- [PATCH 41/51] tests/qtest: migration-test: Kill "to" after migration is canceled, Bin Meng, 2022/08/24
- [PATCH 45/51] tests/qtest: prom-env-test: Use double quotes to pass the prom-env option, Bin Meng, 2022/08/24
- [PATCH 46/51] tests/qtest: libqtest: Replace the call to close a socket with closesocket(), Bin Meng, 2022/08/24
- [PATCH 36/51] tests/qtest: machine-none-test: Use double quotes to pass the cpu option, Bin Meng, 2022/08/24
- [PATCH 40/51] chardev/char-file: Add FILE_SHARE_WRITE when openning the file for win32, Bin Meng, 2022/08/24
- [PATCH 44/51] tests/qtest: microbit-test: Fix socket access for win32, Bin Meng, 2022/08/24
- [PATCH 47/51] tests/qtest: libqtest: Correct the timeout unit of blocking receive calls for win32,
Bin Meng <=
- [PATCH 48/51] io/channel-watch: Drop a superfluous '#ifdef WIN32', Bin Meng, 2022/08/24
- [PATCH 49/51] io/channel-watch: Fix socket watch on Windows, Bin Meng, 2022/08/24
- [PATCH 50/51] .gitlab-ci.d/windows.yml: Increase the timeout to the runner limit, Bin Meng, 2022/08/24
- [PATCH 51/51] docs/devel: testing: Document writing portable test cases, Bin Meng, 2022/08/24