qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: "Alex Bennée" <alex.bennee@linaro.org>, qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, "Thomas Huth" <thuth@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>
Subject: Re: [PULL 04/35] tests/unit: drop hacky race avoidance in test-io-channel-command
Date: Mon, 6 Feb 2023 13:27:28 +0100	[thread overview]
Message-ID: <adf22fcb-51a6-3194-4496-6a6878e9d498@linaro.org> (raw)
In-Reply-To: <20230126112250.2584701-5-alex.bennee@linaro.org>

Hi Alex, Thomas.

On 26/1/23 12:22, Alex Bennée wrote:
> We don't need to play timing games to ensure one socat wins over the
> other, just create the fifo they both can use before spawning the
> processes. However in the process we need to disable two tests for
> Windows platforms as we don't have an abstraction for mkfifo().
> 
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1403
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Reviewed-by: Thomas Huth <thuth@redhat.com>
> Message-Id: <20230124180127.1881110-5-alex.bennee@linaro.org>
> 
> diff --git a/tests/unit/test-io-channel-command.c b/tests/unit/test-io-channel-command.c
> index 19f72eab96..425e2f5594 100644
> --- a/tests/unit/test-io-channel-command.c
> +++ b/tests/unit/test-io-channel-command.c
> @@ -20,6 +20,8 @@
>   
>   #include "qemu/osdep.h"
>   #include <glib/gstdio.h>
> +#include <sys/types.h>
> +#include <sys/stat.h>
>   #include "io/channel-command.h"
>   #include "io-channel-helpers.h"
>   #include "qapi/error.h"
> @@ -29,6 +31,7 @@
>   
>   static char *socat = NULL;
>   
> +#ifndef _WIN32
>   static void test_io_channel_command_fifo(bool async)
>   {
>       g_autofree gchar *tmpdir = g_dir_make_tmp("qemu-test-io-channel.XXXXXX", NULL);
> @@ -40,12 +43,13 @@ static void test_io_channel_command_fifo(bool async)
>       QIOChannel *src, *dst;
>       QIOChannelTest *test;
>   
> +    if (mkfifo(fifo, 0600)) {
> +        g_error("mkfifo: %s", strerror(errno));
> +    }
> +
>       src = QIO_CHANNEL(qio_channel_command_new_spawn((const char **) srcargv,
>                                                       O_WRONLY,
>                                                       &error_abort));
> -    /* try to avoid a race to create the socket */
> -    g_usleep(1000);
> -
>       dst = QIO_CHANNEL(qio_channel_command_new_spawn((const char **) dstargv,
>                                                       O_RDONLY,
>                                                       &error_abort));
> @@ -60,7 +64,6 @@ static void test_io_channel_command_fifo(bool async)

Testing on Darwin/Aarch64 I'm getting (reproducible):

78/93 qemu:unit / test-io-channel-command             ERROR 
2.38s   killed by signal 13 SIGPIPE
 >>> MALLOC_PERTURB_=10 G_TEST_BUILDDIR=./tests/unit 
G_TEST_SRCDIR=tests/unit ./tests/unit/test-io-channel-command --tap -k
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
stderr:
2023/02/03 08:26:49 socat[32507] E 
mkfifo(/var/folders/yj/r7khncsj4d77k04ybz9lw4tm0000gn/T/qemu-test-io-channel.GMARZ1/test-io-channel-command.fifo, 
438): File exists

(test program exited with status code -13)

TAP parsing error: Too few tests run (expected 4, got 0)
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

We call g_rmdir(), but I see various qtests calling unlink()
before rmdir(). Do we need it here?

+       g_unlink(fifo);

>       g_rmdir(tmpdir);
>   }
>   
> -
>   static void test_io_channel_command_fifo_async(void)
>   {
>       if (!socat) {
> @@ -80,6 +83,7 @@ static void test_io_channel_command_fifo_sync(void)
>   
>       test_io_channel_command_fifo(false);
>   }
> +#endif
>   
>   
>   static void test_io_channel_command_echo(bool async)
> @@ -124,10 +128,12 @@ int main(int argc, char **argv)
>   
>       socat = g_find_program_in_path("socat");
>   
> +#ifndef _WIN32
>       g_test_add_func("/io/channel/command/fifo/sync",
>                       test_io_channel_command_fifo_sync);
>       g_test_add_func("/io/channel/command/fifo/async",
>                       test_io_channel_command_fifo_async);
> +#endif
>       g_test_add_func("/io/channel/command/echo/sync",
>                       test_io_channel_command_echo_sync);
>       g_test_add_func("/io/channel/command/echo/async",



  reply	other threads:[~2023-02-06 12:28 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-26 11:22 [PULL 00/35] Testing, docs, semihosting and plugin updates Alex Bennée
2023-01-26 11:22 ` [PULL 01/35] scripts/ci: update gitlab-runner playbook to use latest runner Alex Bennée
2023-01-26 11:22 ` [PULL 02/35] gitlab: add FF_SCRIPT_SECTIONS for timings Alex Bennée
2023-01-26 11:22 ` [PULL 03/35] gitlab: just use plain --cc=clang for custom runner build Alex Bennée
2023-01-26 11:22 ` [PULL 04/35] tests/unit: drop hacky race avoidance in test-io-channel-command Alex Bennée
2023-02-06 12:27   ` Philippe Mathieu-Daudé [this message]
2023-02-06 13:11     ` Alex Bennée
2023-02-06 13:22       ` Philippe Mathieu-Daudé
2023-01-26 11:22 ` [PULL 05/35] build-sys: fix crlf-ending C code Alex Bennée
2023-01-26 11:22 ` [PULL 06/35] .gitlab-ci.d/windows: do not disable opengl Alex Bennée
2023-01-26 11:22 ` [PULL 07/35] meson: replace Perl usage with Python Alex Bennée
2023-01-26 11:22 ` [PULL 08/35] docs: drop texinfo options Alex Bennée
2023-01-26 11:22 ` [PULL 09/35] gitlab: add lsan suppression file to workaround tcmalloc issues Alex Bennée
2023-01-26 11:22 ` [PULL 10/35] Update lcitool and fedora to 37 Alex Bennée
2023-01-26 11:22 ` [PULL 11/35] lcitool: drop perl from QEMU project/dependencies Alex Bennée
2023-01-26 11:22 ` [PULL 12/35] lcitool: drop texinfo " Alex Bennée
2023-01-26 11:22 ` [PULL 13/35] tests/docker: Install flex in debian-tricore-cross Alex Bennée
2023-01-26 11:22 ` [PULL 14/35] tests/docker: drop debian-tricore-cross's partial status Alex Bennée
2023-01-26 11:22 ` [PULL 15/35] tests/tcg: skip the vma-pthread test on CI Alex Bennée
2023-01-26 11:22 ` [PULL 16/35] tests/tcg: Use SIGKILL for timeout Alex Bennée
2023-01-26 11:22 ` [PULL 17/35] gitlab: wrap up test results for custom runners Alex Bennée
2023-01-26 11:22 ` [PULL 18/35] MAINTAINERS: Fix the entry for tests/tcg/nios2 Alex Bennée
2023-01-26 11:22 ` [PULL 19/35] docs: add hotlinks to about preface text Alex Bennée
2023-01-26 11:22 ` [PULL 20/35] docs: add a new section to outline emulation support Alex Bennée
2023-01-26 11:22 ` [PULL 21/35] semihosting: add semihosting section to the docs Alex Bennée
2023-01-26 11:22 ` [PULL 22/35] docs: add an introduction to the system docs Alex Bennée
2023-01-26 11:22 ` [PULL 23/35] semihosting: Write back semihosting data before completion callback Alex Bennée
2023-01-26 11:22 ` [PULL 24/35] semihosting: add O_BINARY flag in host_open for NT compatibility Alex Bennée
2023-01-26 11:22 ` [PULL 25/35] tests/tcg: add memory-sve test for aarch64 Alex Bennée
2023-01-26 11:22 ` [PULL 26/35] cpu: free cpu->tb_jmp_cache with RCU Alex Bennée
2023-01-26 11:22 ` [PULL 27/35] util/qht: add missing atomic_set(hashes[i]) Alex Bennée
2023-01-26 11:22 ` [PULL 28/35] thread: de-const qemu_spin_destroy Alex Bennée
2023-01-26 11:22 ` [PULL 29/35] util/qht: use striped locks under TSAN Alex Bennée
2023-01-26 11:22 ` [PULL 30/35] plugins: make qemu_plugin_user_exit's locking order consistent with fork_start's Alex Bennée
2023-01-26 11:22 ` [PULL 31/35] plugins: fix optimization in plugin_gen_disable_mem_helpers Alex Bennée
2023-01-26 11:22 ` [PULL 32/35] translator: always pair plugin_gen_insn_{start, end} calls Alex Bennée
2023-01-26 11:22 ` [PULL 33/35] tcg: exclude non-memory effecting helpers from instrumentation Alex Bennée
2023-01-26 11:22 ` [PULL 34/35] cpu-exec: assert that plugin_mem_cbs is NULL after execution Alex Bennée
2023-01-26 11:22 ` [PULL 35/35] plugins: Iterate on cb_lists in qemu_plugin_user_exit Alex Bennée
2023-02-01 16:15 ` [PULL 00/35] Testing, docs, semihosting and plugin updates Peter Maydell
2023-02-01 18:06   ` Alex Bennée
2023-02-02 10:50     ` Peter Maydell
2023-02-02 17:12       ` Alex Bennée

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=adf22fcb-51a6-3194-4496-6a6878e9d498@linaro.org \
    --to=philmd@linaro.org \
    --cc=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=peter.maydell@linaro.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).