aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAlex Bennée <alex.bennee@linaro.org>2023-01-24 18:00:56 +0000
committerAlex Bennée <alex.bennee@linaro.org>2023-02-02 10:44:23 +0000
commitc906e6fbaa50a3d9f9a5b24987e1a9d4ad70e9a7 (patch)
tree19d13a2966906bb950b0fd6b6bd7a858e8353908 /tests
parentc34bf19feb349360faa57147f9bbc16b1f27d6e0 (diff)
downloadqemu-c906e6fbaa50a3d9f9a5b24987e1a9d4ad70e9a7.zip
qemu-c906e6fbaa50a3d9f9a5b24987e1a9d4ad70e9a7.tar.gz
qemu-c906e6fbaa50a3d9f9a5b24987e1a9d4ad70e9a7.tar.bz2
tests/unit: drop hacky race avoidance in test-io-channel-command
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>
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/test-io-channel-command.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/tests/unit/test-io-channel-command.c b/tests/unit/test-io-channel-command.c
index 19f72ea..425e2f5 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",