Hi On Tue, Jan 10, 2023 at 9:39 PM Alex Bennée <alex.ben...@linaro.org> 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.ben...@linaro.org> > --- > 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 > sigh, I give up trying to keep it running on windows then... You can further cleanup #ifdef stuff it seems 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 > >