[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] tests/9pfs: fix test dir for parallel tests
From: |
Greg Kurz |
Subject: |
Re: [PATCH 1/2] tests/9pfs: fix test dir for parallel tests |
Date: |
Fri, 30 Oct 2020 12:32:14 +0100 |
On Fri, 30 Oct 2020 09:19:46 +0100
Christian Schoenebeck <qemu_oss@crudebyte.com> wrote:
> Use mkdtemp() to generate a unique directory for the 9p 'local' tests.
>
> This fixes occasional 9p test failures when running 'make check -jN' if
> QEMU was compiled for multiple target architectures, because the individual
> architecture's test suites would run in parallel and interfere with each
> other's data as the test directory was previously hard coded and hence the
> same directory was used by all of them simultaniously.
>
> This also requires a change how the test directory is created and deleted:
> As the test path is now randomized and virtio_9p_register_nodes() being
> called in a somewhat undeterministic way, that's no longer an appropriate
> place to create and remove the test directory. Use a constructor and
> destructor function for creating and removing the test directory instead.
> Unfortunately libqos currently does not support setup/teardown callbacks
> to handle this more cleanly.
>
> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
> ---
LGTM
I've been running 'make check-qtest -j' with 4 archs for 2 hours without
hitting the issue.
Tested-by: Greg Kurz <groug@kaod.org>
> tests/qtest/libqos/virtio-9p.c | 25 +++++++++++++++++++------
> 1 file changed, 19 insertions(+), 6 deletions(-)
>
> diff --git a/tests/qtest/libqos/virtio-9p.c b/tests/qtest/libqos/virtio-9p.c
> index d43647b3b7..6b22fa0e9a 100644
> --- a/tests/qtest/libqos/virtio-9p.c
> +++ b/tests/qtest/libqos/virtio-9p.c
> @@ -35,7 +35,12 @@ static char *concat_path(const char* a, const char* b)
> static void init_local_test_path(void)
> {
> char *pwd = g_get_current_dir();
> - local_test_path = concat_path(pwd, "qtest-9p-local");
> + char *template = concat_path(pwd, "qtest-9p-local-XXXXXX");
> + local_test_path = mkdtemp(template);
> + if (!local_test_path) {
> + g_test_message("mkdtemp('%s') failed: %s", template,
> strerror(errno));
Just per curiosity, is there a preferred way to output error messages ?
Cc'ing Thomas and Laurent.
[...]