Message ID | 20231124123118.20441-1-andrea.cervesato@suse.de |
---|---|
State | Superseded |
Headers | show |
Series | [v1] Refactor mount01 test using new LTP API | expand |
Hi, some suggestions below. On 24. 11. 23 13:31, Andrea Cervesato wrote: > From: Andrea Cervesato <andrea.cervesato@suse.com> > > Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com> > --- > testcases/kernel/syscalls/mount/mount01.c | 115 ++++++---------------- > 1 file changed, 32 insertions(+), 83 deletions(-) > > diff --git a/testcases/kernel/syscalls/mount/mount01.c b/testcases/kernel/syscalls/mount/mount01.c > index 1d902ba89..b757d826a 100644 > --- a/testcases/kernel/syscalls/mount/mount01.c > +++ b/testcases/kernel/syscalls/mount/mount01.c > @@ -1,99 +1,48 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > /* > * Copyright (c) Wipro Technologies Ltd, 2002. All Rights Reserved. > + * Nirmala Devi Dhanasekar <nirmala.devi@wipro.com> > + * Copyright (C) 2023 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com> > + */ > + > +/*\ > + * [Description] > * > - * This program is free software; you can redistribute it and/or modify it > - * under the terms of version 2 of the GNU General Public License as > - * published by the Free Software Foundation. The correct SPDX header for this test is: // SPDX-License-Identifier: GPL-2.0-only We cannot change the test licence without permission from the original author. > - * > - * This program is distributed in the hope that it would be useful, but > - * WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > - * > - * You should have received a copy of the GNU General Public License along > - * with this program; if not, write the Free Software Foundation, Inc., > - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > - * > - * AUTHOR : Nirmala Devi Dhanasekar <nirmala.devi@wipro.com> > - * > - * DESCRIPTION > - * This is a Phase I test for the mount(2) system call. > - * It is intended to provide a limited exposure of the system call. > + * Basic test that checks `mount` syscall works on multiple filesystems. > */ > > -#include <errno.h> > +#include "tst_test.h" > #include <sys/mount.h> > -#include <sys/types.h> > -#include <sys/stat.h> > -#include "test.h" > -#include "safe_macros.h" > - > -static void setup(void); > -static void cleanup(void); > > -char *TCID = "mount01"; > -int TST_TOTAL = 1; > - > -#define DIR_MODE (S_IRWXU | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP) > #define MNTPOINT "mntpoint" > > -static const char *device; > -static const char *fs_type; > - > -int main(int ac, char **av) > +static void cleanup(void) > { > - int lc; > - > - tst_parse_opts(ac, av, NULL, NULL); > - > - setup(); > - > - for (lc = 0; TEST_LOOPING(lc); lc++) { > - > - tst_count = 0; > - > - TEST(mount(device, MNTPOINT, fs_type, 0, NULL)); > - > - if (TEST_RETURN != 0) { > - tst_resm(TFAIL | TTERRNO, "mount(2) failed"); > - } else { > - tst_resm(TPASS, "mount(2) passed "); > - TEST(tst_umount(MNTPOINT)); > - if (TEST_RETURN != 0) { > - tst_brkm(TBROK | TTERRNO, cleanup, > - "umount(2) failed"); > - } > - } > - } > - > - cleanup(); > - tst_exit(); > + if (tst_is_mounted(MNTPOINT)) > + SAFE_UMOUNT(MNTPOINT); > } > > -static void setup(void) > +static void run(void) > { > - tst_sig(NOFORK, DEF_HANDLER, cleanup); > - > - tst_require_root(); > - > - tst_tmpdir(); > - > - fs_type = tst_dev_fs_type(); > - device = tst_acquire_device(cleanup); > - > - if (!device) > - tst_brkm(TCONF, cleanup, "Failed to obtain block device"); > + TST_EXP_PASS(mount(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, NULL)); > > - tst_mkfs(cleanup, device, fs_type, NULL, NULL); > - > - SAFE_MKDIR(cleanup, MNTPOINT, DIR_MODE); > - > - TEST_PAUSE; > + if (tst_is_mounted(MNTPOINT)) > + SAFE_UMOUNT(MNTPOINT); Maybe you could also add tst_res(TFAIL) here if tst_is_mounted() returns false? Then we'd have coverage that the filesystem was mounted to the right directory. > } > > -static void cleanup(void) > -{ > - if (device) > - tst_release_device(device); > - > - tst_rmdir(); > -} > +static struct tst_test test = { > + .cleanup = cleanup, > + .test_all = run, > + .needs_root = 1, > + .needs_device = 1, .needs_device is automatically forced by .all_filesystems > + .needs_tmpdir = 1, > + .format_device = 1, > + .all_filesystems = 1, > + .mntpoint = MNTPOINT, > + .skip_filesystems = (const char *const []){ > + "exfat", > + "vfat", > + "ntfs", > + NULL > + }, > +};
diff --git a/testcases/kernel/syscalls/mount/mount01.c b/testcases/kernel/syscalls/mount/mount01.c index 1d902ba89..b757d826a 100644 --- a/testcases/kernel/syscalls/mount/mount01.c +++ b/testcases/kernel/syscalls/mount/mount01.c @@ -1,99 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) Wipro Technologies Ltd, 2002. All Rights Reserved. + * Nirmala Devi Dhanasekar <nirmala.devi@wipro.com> + * Copyright (C) 2023 SUSE LLC Andrea Cervesato <andrea.cervesato@suse.com> + */ + +/*\ + * [Description] * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it would be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * AUTHOR : Nirmala Devi Dhanasekar <nirmala.devi@wipro.com> - * - * DESCRIPTION - * This is a Phase I test for the mount(2) system call. - * It is intended to provide a limited exposure of the system call. + * Basic test that checks `mount` syscall works on multiple filesystems. */ -#include <errno.h> +#include "tst_test.h" #include <sys/mount.h> -#include <sys/types.h> -#include <sys/stat.h> -#include "test.h" -#include "safe_macros.h" - -static void setup(void); -static void cleanup(void); -char *TCID = "mount01"; -int TST_TOTAL = 1; - -#define DIR_MODE (S_IRWXU | S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP) #define MNTPOINT "mntpoint" -static const char *device; -static const char *fs_type; - -int main(int ac, char **av) +static void cleanup(void) { - int lc; - - tst_parse_opts(ac, av, NULL, NULL); - - setup(); - - for (lc = 0; TEST_LOOPING(lc); lc++) { - - tst_count = 0; - - TEST(mount(device, MNTPOINT, fs_type, 0, NULL)); - - if (TEST_RETURN != 0) { - tst_resm(TFAIL | TTERRNO, "mount(2) failed"); - } else { - tst_resm(TPASS, "mount(2) passed "); - TEST(tst_umount(MNTPOINT)); - if (TEST_RETURN != 0) { - tst_brkm(TBROK | TTERRNO, cleanup, - "umount(2) failed"); - } - } - } - - cleanup(); - tst_exit(); + if (tst_is_mounted(MNTPOINT)) + SAFE_UMOUNT(MNTPOINT); } -static void setup(void) +static void run(void) { - tst_sig(NOFORK, DEF_HANDLER, cleanup); - - tst_require_root(); - - tst_tmpdir(); - - fs_type = tst_dev_fs_type(); - device = tst_acquire_device(cleanup); - - if (!device) - tst_brkm(TCONF, cleanup, "Failed to obtain block device"); + TST_EXP_PASS(mount(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, NULL)); - tst_mkfs(cleanup, device, fs_type, NULL, NULL); - - SAFE_MKDIR(cleanup, MNTPOINT, DIR_MODE); - - TEST_PAUSE; + if (tst_is_mounted(MNTPOINT)) + SAFE_UMOUNT(MNTPOINT); } -static void cleanup(void) -{ - if (device) - tst_release_device(device); - - tst_rmdir(); -} +static struct tst_test test = { + .cleanup = cleanup, + .test_all = run, + .needs_root = 1, + .needs_device = 1, + .needs_tmpdir = 1, + .format_device = 1, + .all_filesystems = 1, + .mntpoint = MNTPOINT, + .skip_filesystems = (const char *const []){ + "exfat", + "vfat", + "ntfs", + NULL + }, +};