[LTP] [PATCH] swapon02: Simplify code, add copyright, modify docparse

Xiao Yang yangx.jy@fujitsu.com
Tue Nov 28 07:27:51 CET 2023


On 2023/10/19 14:47, Yang Xu wrote:
> Simplify permission-related test code, making structures look simpler
> 
> Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
> ---
>   testcases/kernel/syscalls/swapon/swapon02.c | 57 +++++++--------------
>   1 file changed, 18 insertions(+), 39 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/swapon/swapon02.c b/testcases/kernel/syscalls/swapon/swapon02.c
> index d34c17a80..2c9e39986 100644
> --- a/testcases/kernel/syscalls/swapon/swapon02.c
> +++ b/testcases/kernel/syscalls/swapon/swapon02.c
> @@ -1,17 +1,17 @@
>   // SPDX-License-Identifier: GPL-2.0-or-later
> -
>   /*
>    * Copyright (c) Wipro Technologies Ltd, 2002.  All Rights Reserved.
> + * Copyright (c) Linux Test Project, 2003-2023
>    */
>   
>   /*\
>    * [Description]
>    *
>    * This test case checks whether swapon(2) system call returns
> - *  1. ENOENT when the path does not exist
> - *  2. EINVAL when the path exists but is invalid
> - *  3. EPERM when user is not a superuser
> - *  4. EBUSY when the specified path is already being used as a swap area
> + * - ENOENT when the path does not exist.
> + * - EINVAL when the path exists but is invalid.
> + * - EPERM when user is not a superuser.
> + * - EBUSY when the specified path is already being used as a swap area.
>    */
>   
>   #include <errno.h>
> @@ -21,36 +21,20 @@
>   #include "lapi/syscalls.h"
>   #include "libswap.h"
>   
> -static void setup01(void);
> -static void cleanup01(void);
> -
>   static uid_t nobody_uid;
>   static int do_swapoff;
>   
>   static struct tcase {
>   	char *err_desc;
>   	int exp_errno;
> -	char *exp_errval;
>   	char *path;
> -	void (*setup)(void);
> -	void (*cleanup)(void);
>   } tcases[] = {
> -	{"Path does not exist", ENOENT, "ENOENT", "./doesnotexist", NULL, NULL},
> -	{"Invalid path", EINVAL, "EINVAL", "./notswap", NULL, NULL},
> -	{"Permission denied", EPERM, "EPERM", "./swapfile01", setup01, cleanup01},
> -	{"File already used", EBUSY, "EBUSY", "./alreadyused", NULL, NULL},
> +	{"Path does not exist", ENOENT, "./doesnotexist"},
> +	{"Invalid path", EINVAL, "./notswap"},
> +	{"Permission denied", EPERM, "./swapfile01"},
> +	{"File already used", EBUSY, "./alreadyused"},
>   };
>   
> -static void setup01(void)
> -{
> -	SAFE_SETEUID(nobody_uid);
> -}
> -
> -static void cleanup01(void)
> -{
> -	SAFE_SETEUID(0);
> -}
> -
>   static void setup(void)
>   {
>   	struct passwd *nobody;
> @@ -79,24 +63,19 @@ void cleanup(void)

Hi Yang

It looks good to me. one minor hint:
static void cleanup() should be better.
Reviewed-by: Xiao Yang <yangx.jy@fujitsu.com>

Best Regards,
Xiao Yang

>   static void verify_swapon(unsigned int i)
>   {
>   	struct tcase *tc = tcases + i;
> -	if (tc->setup)
> -		tc->setup();
> +	if (tc->exp_errno == EPERM)
> +		SAFE_SETEUID(nobody_uid);
>   
> -	TEST(tst_syscall(__NR_swapon, tc->path, 0));
> +	TST_EXP_FAIL(tst_syscall(__NR_swapon, tc->path, 0), tc->exp_errno,
> +		     "swapon(2) fail with %s", tc->err_desc);
>   
> -	if (tc->cleanup)
> -		tc->cleanup();
> +	if (tc->exp_errno == EPERM)
> +		SAFE_SETEUID(0);
>   
> -	if (TST_RET == -1 && TST_ERR == tc->exp_errno) {
> -		tst_res(TPASS, "swapon(2) expected failure;"
> -			 " Got errno - %s : %s",
> -			 tc->exp_errval, tc->err_desc);
> -		return;
> +	if (TST_RET != -1) {
> +		tst_res(TFAIL, "swapon(2) failed unexpectedly, expected: %s",
> +			tst_strerrno(tc->exp_errno));
>   	}
> -
> -	tst_res(TFAIL, "swapon(2) failed to produce expected error:"
> -	         " %d, errno: %s and got %d.", tc->exp_errno,
> -	         tc->exp_errval, TST_ERR);
>   }
>   
>   static struct tst_test test = {


More information about the ltp mailing list