qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Beraldo Leal" <bleal@redhat.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Bandan Das" <bsd@redhat.com>,
	"Qiuhao Li" <Qiuhao.Li@outlook.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	"Michael Roth" <michael.roth@amd.com>,
	"Cleber Rosa" <crosa@redhat.com>,
	"Alexander Bulekov" <alxndr@bu.edu>,
	"Darren Kenny" <darren.kenny@oracle.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>,
	"John Snow" <jsnow@redhat.com>, "Ed Maste" <emaste@freebsd.org>,
	"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Li-Wen Hsu" <lwhsu@freebsd.org>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>,
	"Alex Bennée" <alex.bennee@linaro.org>,
	"Thomas Huth" <thuth@redhat.com>
Subject: [PATCH 04/18] tests/unit: drop hacky race avoidance in test-io-channel-command
Date: Thu, 19 Jan 2023 18:04:05 +0000	[thread overview]
Message-ID: <20230119180419.30304-5-alex.bennee@linaro.org> (raw)
In-Reply-To: <20230119180419.30304-1-alex.bennee@linaro.org>

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>
---
 tests/unit/test-io-channel-command.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

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)
     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",
-- 
2.34.1



  parent reply	other threads:[~2023-01-19 18:06 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-19 18:04 [PATCH 00/18] testing/next updates (gitlab, docker, check-tcg) Alex Bennée
2023-01-19 18:04 ` [PATCH 01/18] scripts/ci: update gitlab-runner playbook to use latest runner Alex Bennée
2023-01-19 18:04 ` [PATCH 02/18] gitlab: add FF_SCRIPT_SECTIONS for timings Alex Bennée
2023-01-19 18:04 ` [PATCH 03/18] gitlab: just use plain --cc=clang for custom runner build Alex Bennée
2023-01-19 18:36   ` Philippe Mathieu-Daudé
2023-01-19 18:04 ` Alex Bennée [this message]
2023-01-19 18:04 ` [PATCH 05/18] build-sys: fix crlf-ending C code Alex Bennée
2023-01-19 18:04 ` [PATCH 06/18] .gitlab-ci.d/windows: do not disable opengl Alex Bennée
2023-01-19 19:32   ` Philippe Mathieu-Daudé
2023-01-19 18:04 ` [PATCH 07/18] meson: replace Perl usage with Python Alex Bennée
2023-01-19 18:04 ` [PATCH 08/18] docs: drop texinfo options Alex Bennée
2023-01-19 18:04 ` [PATCH 09/18] gitlab: add lsan suppression file to workaround tcmalloc issues Alex Bennée
2023-01-19 18:04 ` [PATCH 10/18] Update lcitool and fedora to 37 Alex Bennée
2023-01-19 19:35   ` Philippe Mathieu-Daudé
2023-01-19 23:33     ` Paolo Bonzini
2023-01-20 10:09       ` Alex Bennée
2023-01-19 18:04 ` [PATCH 11/18] lcitool: drop perl from QEMU project/dependencies Alex Bennée
2023-01-19 19:36   ` Philippe Mathieu-Daudé
2023-01-19 18:04 ` [PATCH 12/18] lcitool: drop texinfo " Alex Bennée
2023-01-19 18:04 ` [PATCH 13/18] tests/docker: Install flex in debian-tricore-cross Alex Bennée
2023-01-19 18:04 ` [PATCH 14/18] tests/docker: drop debian-tricore-cross's partial status Alex Bennée
2023-01-19 19:36   ` Philippe Mathieu-Daudé
2023-01-19 19:52   ` Richard Henderson
2023-01-20 10:06     ` Alex Bennée
2023-01-19 18:04 ` [PATCH 15/18] tests/tcg: skip the vma-pthread test on CI Alex Bennée
2023-01-19 19:33   ` Richard Henderson
2023-01-19 18:04 ` [PATCH 16/18] tests/tcg: Use SIGKILL for timeout Alex Bennée
2023-01-19 19:55   ` Richard Henderson
2023-01-19 18:04 ` [PATCH 17/18] gitlab: wrap up test results for custom runners Alex Bennée
2023-01-20  8:26   ` Thomas Huth
2023-01-20 10:14     ` Alex Bennée
2023-01-19 18:04 ` [PATCH 18/18] MAINTAINERS: Fix the entry for tests/tcg/nios2 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=20230119180419.30304-5-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=Qiuhao.Li@outlook.com \
    --cc=alxndr@bu.edu \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=bleal@redhat.com \
    --cc=bsd@redhat.com \
    --cc=crosa@redhat.com \
    --cc=darren.kenny@oracle.com \
    --cc=emaste@freebsd.org \
    --cc=jsnow@redhat.com \
    --cc=lwhsu@freebsd.org \
    --cc=marcandre.lureau@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=thuth@redhat.com \
    --cc=wainersm@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).