Hi

On Wed, Aug 24, 2022 at 3:44 PM Bin Meng <bmeng...@gmail.com> wrote:

> From: Bin Meng <bin.m...@windriver.com>
>
> Some qtest cases don't get response from the the QEMU executable
>

"the the"


> 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.
>

Ahah, interesting :) Well, it's not the only difference, windows uses DWORD
instead of timeval


>
> Signed-off-by: Bin Meng <bin.m...@windriver.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.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
>
>
>

-- 
Marc-André Lureau

Reply via email to