[LTP] [PATCH v1] Refactor mount01 test using new LTP API
Martin Doucha
mdoucha@suse.cz
Thu Feb 8 16:26:27 CET 2024
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
> + },
> +};
--
Martin Doucha mdoucha@suse.cz
SW Quality Engineer
SUSE LINUX, s.r.o.
CORSO IIa
Krizikova 148/34
186 00 Prague 8
Czech Republic
More information about the ltp
mailing list