diff mbox series

[v2,1/3] syscalls/setgroups01: Convert to new API

Message ID 1690888046-18662-1-git-send-email-xuyang2018.jy@fujitsu.com
State Changes Requested
Headers show
Series [v2,1/3] syscalls/setgroups01: Convert to new API | expand

Commit Message

Yang Xu \(Fujitsu\) Aug. 1, 2023, 11:07 a.m. UTC
Signed-off-by: Yang Xu <xuyang2018.jy@fujitsu.com>
---
 testcases/kernel/syscalls/setgroups/setgroups01.c | 212 +++-------------------
 1 file changed, 26 insertions(+), 186 deletions(-)

Comments

Cyril Hrubis Aug. 7, 2023, 12:30 p.m. UTC | #1
Hi!
> -#include <errno.h>
> -#include <string.h>
> -#include <signal.h>
> -#include <sys/param.h>
> -#include <unistd.h>
> -#include <grp.h>
> -
> -#include "test.h"
> -
> -#include "compat_16.h"
> +/*\
> + * [Description]
> + *
> + * Check the basic functionality of the setgroups() system call.
> + */
>  
> -void setup();
> -void cleanup();
> +#include "tst_test.h"
> +#include "compat_tst_16.h"
>  
> -TCID_DEFINE(setgroups01);
> -int TST_TOTAL = 1;
> +static int len = NGROUPS, ngrps;
>  
> -int len = NGROUPS, ngrps = 0;
> -GID_T list[NGROUPS];
> +static GID_T list[NGROUPS];
>  
> -int main(int ac, char **av)
> +static void verify_setgroups(void)
>  {
> -	int lc;
> -
> -    /***************************************************************
> -     * parse standard options
> -     ***************************************************************/
> -	tst_parse_opts(ac, av, NULL, NULL);
> -
> -    /***************************************************************
> -     * perform global setup for test
> -     ***************************************************************/
> -	setup();
> -
> -    /***************************************************************
> -     * check looping state if -c option given
> -     ***************************************************************/
> -	for (lc = 0; TEST_LOOPING(lc); lc++) {
> -
> -		tst_count = 0;
> -
> -		/*
> -		 * Call setgroups(2)
> -		 */
> -		TEST(SETGROUPS(cleanup, ngrps, list));
> -
> -		/* check return code */
> -		if (TEST_RETURN == -1) {
> -			tst_resm(TFAIL,
> -				 "setgroups(%d, list) Failed, errno=%d : %s",
> -				 len, TEST_ERRNO, strerror(TEST_ERRNO));
> -		} else {
> -			tst_resm(TPASS,
> -				 "setgroups(%d, list) returned %ld",
> -				 len, TEST_RETURN);
> -		}
> -
> -	}
> -
> -	cleanup();
> -	tst_exit();
> +	TST_EXP_POSITIVE(SETGROUPS(ngrps, list),
> +			 "setgroups(%d, list)", len);
>  }
>  
> -/***************************************************************
> - * setup() - performs all ONE TIME setup for this test.
> - ***************************************************************/
> -void setup(void)
> +static void setup(void)
>  {
> -
> -	tst_require_root();
> -
> -	tst_sig(NOFORK, DEF_HANDLER, cleanup);
> -
> -	TEST_PAUSE;
> -
> -	ngrps = GETGROUPS(cleanup, len, list);
> -	if (ngrps == -1) {
> -		tst_brkm(TBROK, cleanup,
> -			 "getgroups(%d, list) Failure. errno=%d : %s",
> -			 len, errno, strerror(errno));
> +	if (GETGROUPS(len, list) < 0) {
> +		tst_brk(TBROK,
> +			"getgroups(%d, list) Failure. errno=%d : %s",
> +			len, errno, strerror(errno));
                             ^
			     use TERRNO instead of printing the values
			     by hand


>  	}

Also after this change the ngrps is no loger set and we pass 0 as the
number of groups to the setgroups call.


The rest of the changes looks good.
Yang Xu \(Fujitsu\) Aug. 14, 2023, 11:22 a.m. UTC | #2
Hi,Cyril
> Hi!
>> -#include <errno.h>
>> -#include <string.h>
>> -#include <signal.h>
>> -#include <sys/param.h>
>> -#include <unistd.h>
>> -#include <grp.h>
>> -
>> -#include "test.h"
>> -
>> -#include "compat_16.h"
>> +/*\
>> + * [Description]
>> + *
>> + * Check the basic functionality of the setgroups() system call.
>> + */
>>   
>> -void setup();
>> -void cleanup();
>> +#include "tst_test.h"
>> +#include "compat_tst_16.h"
>>   
>> -TCID_DEFINE(setgroups01);
>> -int TST_TOTAL = 1;
>> +static int len = NGROUPS, ngrps;
>>   
>> -int len = NGROUPS, ngrps = 0;
>> -GID_T list[NGROUPS];
>> +static GID_T list[NGROUPS];
>>   
>> -int main(int ac, char **av)
>> +static void verify_setgroups(void)
>>   {
>> -	int lc;
>> -
>> -    /***************************************************************
>> -     * parse standard options
>> -     ***************************************************************/
>> -	tst_parse_opts(ac, av, NULL, NULL);
>> -
>> -    /***************************************************************
>> -     * perform global setup for test
>> -     ***************************************************************/
>> -	setup();
>> -
>> -    /***************************************************************
>> -     * check looping state if -c option given
>> -     ***************************************************************/
>> -	for (lc = 0; TEST_LOOPING(lc); lc++) {
>> -
>> -		tst_count = 0;
>> -
>> -		/*
>> -		 * Call setgroups(2)
>> -		 */
>> -		TEST(SETGROUPS(cleanup, ngrps, list));
>> -
>> -		/* check return code */
>> -		if (TEST_RETURN == -1) {
>> -			tst_resm(TFAIL,
>> -				 "setgroups(%d, list) Failed, errno=%d : %s",
>> -				 len, TEST_ERRNO, strerror(TEST_ERRNO));
>> -		} else {
>> -			tst_resm(TPASS,
>> -				 "setgroups(%d, list) returned %ld",
>> -				 len, TEST_RETURN);
>> -		}
>> -
>> -	}
>> -
>> -	cleanup();
>> -	tst_exit();
>> +	TST_EXP_POSITIVE(SETGROUPS(ngrps, list),
>> +			 "setgroups(%d, list)", len);
>>   }
>>   
>> -/***************************************************************
>> - * setup() - performs all ONE TIME setup for this test.
>> - ***************************************************************/
>> -void setup(void)
>> +static void setup(void)
>>   {
>> -
>> -	tst_require_root();
>> -
>> -	tst_sig(NOFORK, DEF_HANDLER, cleanup);
>> -
>> -	TEST_PAUSE;
>> -
>> -	ngrps = GETGROUPS(cleanup, len, list);
>> -	if (ngrps == -1) {
>> -		tst_brkm(TBROK, cleanup,
>> -			 "getgroups(%d, list) Failure. errno=%d : %s",
>> -			 len, errno, strerror(errno));
>> +	if (GETGROUPS(len, list) < 0) {
>> +		tst_brk(TBROK,
>> +			"getgroups(%d, list) Failure. errno=%d : %s",
>> +			len, errno, strerror(errno));
>                               ^
> 			     use TERRNO instead of printing the values
> 			     by hand
>
>
>>   	}
> Also after this change the ngrps is no loger set and we pass 0 as the
> number of groups to the setgroups call.
>
>
> The rest of the changes looks good.
I agree with your suggestion and I will update it.
diff mbox series

Patch

diff --git a/testcases/kernel/syscalls/setgroups/setgroups01.c b/testcases/kernel/syscalls/setgroups/setgroups01.c
index fed7f8e..0cb04b0 100644
--- a/testcases/kernel/syscalls/setgroups/setgroups01.c
+++ b/testcases/kernel/syscalls/setgroups/setgroups01.c
@@ -1,202 +1,42 @@ 
+// SPDX-License-Identifier: GPL-2.0-only
 /*
  * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
+ * Copyright (c) Linux Test Project, 2003-2023
  *
- * 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.
- *
- * Further, this software is distributed without any warranty that it is
- * free of the rightful claim of any third person regarding infringement
- * or the like.  Any license provided herein, whether implied or
- * otherwise, applies only to this software file.  Patent licenses, if
- * any, provided herein do not apply to combinations of this program with
- * other software, or any other product whatsoever.
- *
- * 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.
- *
- * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
- * Mountain View, CA  94043, or:
- *
- * http://www.sgi.com
- *
- * For further information regarding this notice, see:
- *
- * http://oss.sgi.com/projects/GenInfo/NoticeExplan/
- *
+ * Author: William Roske
+ * CO-PILOT: Dave Fenner
  */
-/* $Id: setgroups01.c,v 1.7 2009/11/02 13:57:18 subrata_modak Exp $ */
-/**********************************************************
- *
- *    OS Test - Silicon Graphics, Inc.
- *
- *    TEST IDENTIFIER	: setgroups01
- *
- *    EXECUTED BY	: root
- *
- *    TEST TITLE	: Basic test for setgroups(2)
- *
- *    PARENT DOCUMENT	: usctpl01
- *
- *    TEST CASE TOTAL	: 1
- *
- *    WALL CLOCK TIME	: 1
- *
- *    CPU TYPES		: ALL
- *
- *    AUTHOR		: William Roske
- *
- *    CO-PILOT		: Dave Fenner
- *
- *    DATE STARTED	: 03/30/92
- *
- *    INITIAL RELEASE	: UNICOS 7.0
- *
- *    TEST CASES
- *
- * 	1.) setgroups(2) returns...(See Description)
- *
- *    INPUT SPECIFICATIONS
- * 	The standard options for system call tests are accepted.
- *	(See the parse_opts(3) man page).
- *
- *    OUTPUT SPECIFICATIONS
- *$
- *    DURATION
- * 	Terminates - with frequency and infinite modes.
- *
- *    SIGNALS
- * 	Uses SIGUSR1 to pause before test if option set.
- * 	(See the parse_opts(3) man page).
- *
- *    RESOURCES
- * 	None
- *
- *    ENVIRONMENTAL NEEDS
- *      No run-time environmental needs.
- *
- *    SPECIAL PROCEDURAL REQUIREMENTS
- * 	None
- *
- *    INTERCASE DEPENDENCIES
- * 	None
- *
- *    DETAILED DESCRIPTION
- *	This is a Phase I test for the setgroups(2) system call.  It is intended
- *	to provide a limited exposure of the system call, for now.  It
- *	should/will be extended when full functional tests are written for
- *	setgroups(2).
- *
- * 	Setup:
- * 	  Setup signal handling.
- *	  Pause for SIGUSR1 if option specified.
- *
- * 	Test:
- *	 Loop if the proper options are given.
- * 	  Execute system call
- *	  Check return code, if system call failed (return=-1)
- *		Log the errno and Issue a FAIL message.
- *	  Otherwise, Issue a PASS message.
- *
- * 	Cleanup:
- * 	  Print errno log and/or timing stats if options given
- *
- *
- *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#**/
 
-#include <errno.h>
-#include <string.h>
-#include <signal.h>
-#include <sys/param.h>
-#include <unistd.h>
-#include <grp.h>
-
-#include "test.h"
-
-#include "compat_16.h"
+/*\
+ * [Description]
+ *
+ * Check the basic functionality of the setgroups() system call.
+ */
 
-void setup();
-void cleanup();
+#include "tst_test.h"
+#include "compat_tst_16.h"
 
-TCID_DEFINE(setgroups01);
-int TST_TOTAL = 1;
+static int len = NGROUPS, ngrps;
 
-int len = NGROUPS, ngrps = 0;
-GID_T list[NGROUPS];
+static GID_T list[NGROUPS];
 
-int main(int ac, char **av)
+static void verify_setgroups(void)
 {
-	int lc;
-
-    /***************************************************************
-     * parse standard options
-     ***************************************************************/
-	tst_parse_opts(ac, av, NULL, NULL);
-
-    /***************************************************************
-     * perform global setup for test
-     ***************************************************************/
-	setup();
-
-    /***************************************************************
-     * check looping state if -c option given
-     ***************************************************************/
-	for (lc = 0; TEST_LOOPING(lc); lc++) {
-
-		tst_count = 0;
-
-		/*
-		 * Call setgroups(2)
-		 */
-		TEST(SETGROUPS(cleanup, ngrps, list));
-
-		/* check return code */
-		if (TEST_RETURN == -1) {
-			tst_resm(TFAIL,
-				 "setgroups(%d, list) Failed, errno=%d : %s",
-				 len, TEST_ERRNO, strerror(TEST_ERRNO));
-		} else {
-			tst_resm(TPASS,
-				 "setgroups(%d, list) returned %ld",
-				 len, TEST_RETURN);
-		}
-
-	}
-
-	cleanup();
-	tst_exit();
+	TST_EXP_POSITIVE(SETGROUPS(ngrps, list),
+			 "setgroups(%d, list)", len);
 }
 
-/***************************************************************
- * setup() - performs all ONE TIME setup for this test.
- ***************************************************************/
-void setup(void)
+static void setup(void)
 {
-
-	tst_require_root();
-
-	tst_sig(NOFORK, DEF_HANDLER, cleanup);
-
-	TEST_PAUSE;
-
-	ngrps = GETGROUPS(cleanup, len, list);
-	if (ngrps == -1) {
-		tst_brkm(TBROK, cleanup,
-			 "getgroups(%d, list) Failure. errno=%d : %s",
-			 len, errno, strerror(errno));
+	if (GETGROUPS(len, list) < 0) {
+		tst_brk(TBROK,
+			"getgroups(%d, list) Failure. errno=%d : %s",
+			len, errno, strerror(errno));
 	}
 }
 
-/***************************************************************
- * cleanup() - performs all ONE TIME cleanup for this test at
- *		completion or premature exit.
- ***************************************************************/
-void cleanup(void)
-{
-
-}
+static struct tst_test test = {
+	.test_all = verify_setgroups,
+	.setup = setup,
+	.needs_root = 1,
+};