[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 04/35] tests/unit: drop hacky race avoidance in test-io-channe
From: |
Alex Bennée |
Subject: |
[PATCH v2 04/35] tests/unit: drop hacky race avoidance in test-io-channel-command |
Date: |
Tue, 24 Jan 2023 18:00:56 +0000 |
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
- [PATCH v2 00/35] maintainer tree pre-PR (testing/docs/semihosting/plugins), Alex Bennée, 2023/01/24
- [PATCH v2 03/35] gitlab: just use plain --cc=clang for custom runner build, Alex Bennée, 2023/01/24
- [PATCH v2 06/35] .gitlab-ci.d/windows: do not disable opengl, Alex Bennée, 2023/01/24
- [PATCH v2 01/35] scripts/ci: update gitlab-runner playbook to use latest runner, Alex Bennée, 2023/01/24
- [PATCH v2 05/35] build-sys: fix crlf-ending C code, Alex Bennée, 2023/01/24
- [PATCH v2 04/35] tests/unit: drop hacky race avoidance in test-io-channel-command,
Alex Bennée <=
- [PATCH v2 08/35] docs: drop texinfo options, Alex Bennée, 2023/01/24
- [PATCH v2 02/35] gitlab: add FF_SCRIPT_SECTIONS for timings, Alex Bennée, 2023/01/24
- [PATCH v2 12/35] lcitool: drop texinfo from QEMU project/dependencies, Alex Bennée, 2023/01/24
- [PATCH v2 11/35] lcitool: drop perl from QEMU project/dependencies, Alex Bennée, 2023/01/24
- [PATCH v2 07/35] meson: replace Perl usage with Python, Alex Bennée, 2023/01/24
- [PATCH v2 09/35] gitlab: add lsan suppression file to workaround tcmalloc issues, Alex Bennée, 2023/01/24