[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-9.0 v2 3/7] qtest/virtio-9p-test.c: consolidate create dir te
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH for-9.0 v2 3/7] qtest/virtio-9p-test.c: consolidate create dir tests |
Date: |
Wed, 27 Mar 2024 06:31:40 -0300 |
The local 9p driver in virtio-9p-test.c its temporary dir right at the
start of qos-test (via virtio_9p_create_local_test_dir()) and only
deletes it after qos-test is finished (via
virtio_9p_remove_local_test_dir()).
This means that any qos-test machine that ends up running virtio-9p-test
local tests more than once will end up re-using the same temp dir. This
is what's happening in [1] after we introduced the riscv machine nodes:
if we enable slow tests with the '-m slow' flag using
qemu-system-riscv64, this is what happens:
- a temp dir is created;
- virtio-9p-device tests will run virtio-9p-test successfully;
- virtio-9p-pci tests will run virtio-9p-test, and fail right at the
first slow test at fs_create_dir() because the "01" file was already
created by fs_create_dir() test when running with the virtio-9p-device.
We can fix it by making every test clean up their changes in the
filesystem after they're done. But we don't need every test either: what
fs_create_file() does is already exercised in fs_unlinkat_dir(), i.e. a
dir is created, verified to be created, and then removed. Fixing
fs_create_file() would turn it into fs_unlinkat_dir(), so we don't need
both.
The same idea applies to every test in virtio-9p-test.c, where the
'unlinkat' variant does the same thing the 'create' does but with some
cleaning in the end. But we'll start with fs_create_dir() and
fs_unlinkat_dir() only:
- fs_create_dir() is removed. s_unlinkat_dir() is renamed to
fs_create_unlinkat_dir();
- update the dir names for every other test since we have 1 less test.
[1] https://mail.gnu.org/archive/html/qemu-devel/2024-03/msg05807.html
Reported-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
---
tests/qtest/virtio-9p-test.c | 39 +++++++++---------------------------
1 file changed, 10 insertions(+), 29 deletions(-)
diff --git a/tests/qtest/virtio-9p-test.c b/tests/qtest/virtio-9p-test.c
index be031abc17..2cea1b4189 100644
--- a/tests/qtest/virtio-9p-test.c
+++ b/tests/qtest/virtio-9p-test.c
@@ -506,7 +506,8 @@ static void fs_readdir_split_512(void *obj, void *data,
/* tests using the 9pfs 'local' fs driver */
-static void fs_create_dir(void *obj, void *data, QGuestAllocator *t_alloc)
+static void fs_create_unlinkat_dir(void *obj, void *data,
+ QGuestAllocator *t_alloc)
{
QVirtio9P *v9p = obj;
v9fs_set_allocator(t_alloc);
@@ -524,26 +525,6 @@ static void fs_create_dir(void *obj, void *data,
QGuestAllocator *t_alloc)
g_assert(stat(new_dir_path, &st) == 0);
/* ... and is actually a directory */
g_assert((st.st_mode & S_IFMT) == S_IFDIR);
-}
-
-static void fs_unlinkat_dir(void *obj, void *data, QGuestAllocator *t_alloc)
-{
- QVirtio9P *v9p = obj;
- v9fs_set_allocator(t_alloc);
- struct stat st;
- const char *new_dir = "02";
- g_autofree char *root_path = virtio_9p_test_path("");
- g_autofree char *new_dir_path = virtio_9p_test_path(new_dir);
-
- g_assert(root_path != NULL);
-
- tattach({ .client = v9p });
- tmkdir({ .client = v9p, .atPath = "/", .name = new_dir });
-
- /* check if created directory really exists now ... */
- g_assert(stat(new_dir_path, &st) == 0);
- /* ... and is actually a directory */
- g_assert((st.st_mode & S_IFMT) == S_IFDIR);
tunlinkat({
.client = v9p, .atPath = "/", .name = new_dir,
@@ -558,7 +539,7 @@ static void fs_create_file(void *obj, void *data,
QGuestAllocator *t_alloc)
QVirtio9P *v9p = obj;
v9fs_set_allocator(t_alloc);
struct stat st;
- const char *new_dir = "03";
+ const char *new_dir = "02";
g_autofree char *new_file = g_strdup_printf("%s/%s", new_dir, "1st_file");
g_autofree char *new_file_path = virtio_9p_test_path(new_file);
@@ -577,7 +558,7 @@ static void fs_unlinkat_file(void *obj, void *data,
QGuestAllocator *t_alloc)
QVirtio9P *v9p = obj;
v9fs_set_allocator(t_alloc);
struct stat st;
- const char *new_dir = "04";
+ const char *new_dir = "03";
g_autofree char *new_file = g_strdup_printf("%s/%s", new_dir, "doa_file");
g_autofree char *new_file_path = virtio_9p_test_path(new_file);
@@ -600,7 +581,7 @@ static void fs_symlink_file(void *obj, void *data,
QGuestAllocator *t_alloc)
QVirtio9P *v9p = obj;
v9fs_set_allocator(t_alloc);
struct stat st;
- const char *new_dir = "05";
+ const char *new_dir = "04";
g_autofree char *real_file = NULL;
g_autofree char *real_file_path = NULL;
g_autofree char *symlink_file = NULL;
@@ -633,7 +614,7 @@ static void fs_unlinkat_symlink(void *obj, void *data,
QVirtio9P *v9p = obj;
v9fs_set_allocator(t_alloc);
struct stat st;
- const char *new_dir = "06";
+ const char *new_dir = "05";
g_autofree char *real_file = NULL;
g_autofree char *real_file_path = NULL;
g_autofree char *symlink_file = NULL;
@@ -667,7 +648,7 @@ static void fs_hardlink_file(void *obj, void *data,
QGuestAllocator *t_alloc)
QVirtio9P *v9p = obj;
v9fs_set_allocator(t_alloc);
struct stat st_real, st_link;
- const char *new_dir = "07";
+ const char *new_dir = "06";
g_autofree char *real_file = NULL;
g_autofree char *real_file_path = NULL;
g_autofree char *hardlink_file = NULL;
@@ -704,7 +685,7 @@ static void fs_unlinkat_hardlink(void *obj, void *data,
QVirtio9P *v9p = obj;
v9fs_set_allocator(t_alloc);
struct stat st_real, st_link;
- const char *new_dir = "08";
+ const char *new_dir = "07";
g_autofree char *real_file = NULL;
g_autofree char *real_file_path = NULL;
g_autofree char *hardlink_file = NULL;
@@ -788,8 +769,8 @@ static void register_virtio_9p_test(void)
opts.before = assign_9p_local_driver;
qos_add_test("local/config", "virtio-9p", pci_config, &opts);
- qos_add_test("local/create_dir", "virtio-9p", fs_create_dir, &opts);
- qos_add_test("local/unlinkat_dir", "virtio-9p", fs_unlinkat_dir, &opts);
+ qos_add_test("local/create_unlinkat_dir", "virtio-9p",
+ fs_create_unlinkat_dir, &opts);
qos_add_test("local/create_file", "virtio-9p", fs_create_file, &opts);
qos_add_test("local/unlinkat_file", "virtio-9p", fs_unlinkat_file, &opts);
qos_add_test("local/symlink_file", "virtio-9p", fs_symlink_file, &opts);
--
2.44.0
- [PATCH for-9.0 v2 0/7] qtest/virtio-9p-test.c: fix slow tests, Daniel Henrique Barboza, 2024/03/27
- [PATCH for-9.0 v2 2/7] qtest/virtio-9p-test.c: parametrize 'dir' name in local tests, Daniel Henrique Barboza, 2024/03/27
- [PATCH for-9.0 v2 5/7] qtest/virtio-9p-test.c: consolidate create symlink tests, Daniel Henrique Barboza, 2024/03/27
- [PATCH for-9.0 v2 1/7] qtest/virtio-9p-test.c: add '_path' in path vars, Daniel Henrique Barboza, 2024/03/27
- [PATCH for-9.0 v2 3/7] qtest/virtio-9p-test.c: consolidate create dir tests,
Daniel Henrique Barboza <=
- [PATCH for-9.0 v2 4/7] qtest/virtio-9p-test.c: consolidate create file tests, Daniel Henrique Barboza, 2024/03/27
- [PATCH for-9.0 v2 6/7] qtest/virtio-9p-test.c: consolidate hardlink tests, Daniel Henrique Barboza, 2024/03/27
- [PATCH for-9.0 v2 7/7] qtest/virtio-9p-test.c: remove g_test_slow() gate, Daniel Henrique Barboza, 2024/03/27