* [LTP] [PATCH] [v1, 1/2] syscalls/sched_get_priority_max01: Convert to new API
@ 2021-12-13 3:42 sujiaxun
2021-12-13 16:32 ` Cyril Hrubis
0 siblings, 1 reply; 3+ messages in thread
From: sujiaxun @ 2021-12-13 3:42 UTC (permalink / raw)
To: ltp; +Cc: sujiauxn
From: sujiauxn <sujiaxun@uniontech.com>
Signed-off-by: sujiauxn <sujiaxun@uniontech.com>
---
.../sched_get_priority_max01.c | 139 +++---------------
1 file changed, 24 insertions(+), 115 deletions(-)
diff --git a/testcases/kernel/syscalls/sched_get_priority_max/sched_get_priority_max01.c b/testcases/kernel/syscalls/sched_get_priority_max/sched_get_priority_max01.c
index 7d36dbbdb..dc7318554 100644
--- a/testcases/kernel/syscalls/sched_get_priority_max/sched_get_priority_max01.c
+++ b/testcases/kernel/syscalls/sched_get_priority_max/sched_get_priority_max01.c
@@ -1,142 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) Wipro Technologies Ltd, 2002. All Rights Reserved.
- *
- * 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.
- *
*/
-/**********************************************************
- *
- * TEST IDENTIFIER : sched_get_priority_max01
- *
- * EXECUTED BY : anyone
- *
- * TEST TITLE : Basic test for sched_get_priority_max(2)
- *
- * TEST CASE TOTAL : 3
- *
- * AUTHOR : Saji Kumar.V.R <saji.kumar@wipro.com>
- *
- * SIGNALS
- * Uses SIGUSR1 to pause before test if option set.
- * (See the parse_opts(3) man page).
- *
- * DESCRIPTION
+
+/*\
+ * [Description]
+ *
* This is a Phase I test for the sched_get_priority_max(2) system call.
* It is intended to provide a limited exposure of the system call.
- *
- * 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
- *
- * USAGE: <for command-line>
- * sched_get_priority_max01 [-c n] [-e] [-i n] [-I x] [-P x] [-t] [-h] [-f]
- * [-p]
- * where, -c n : Run n copies concurrently.
- * -e : Turn on errno logging.
- * -h : Show help screen
- * -f : Turn off functional testing
- * -i n : Execute test n times.
- * -I x : Execute test for x seconds.
- * -p : Pause for SIGUSR1 before starting
- * -P x : Pause for x seconds between iterations.
- * -t : Turn on syscall timing.
- *
- ****************************************************************/
+ */
#include <errno.h>
#include <sched.h>
-#include "test.h"
-
-static void setup();
-static void cleanup();
+#include "lapi/syscalls.h"
+#include "tst_test.h"
-char *TCID = "sched_get_priority_max01";
-
-static struct test_case_t {
+static struct test_case {
char *desc;
int policy;
int retval;
-} test_cases[] = {
+} tcases[] = {
{
"Test for SCHED_OTHER", SCHED_OTHER, 0}, {
"Test for SCHED_FIFO", SCHED_FIFO, 99}, {
"Test for SCHED_RR", SCHED_RR, 99}
};
-int TST_TOTAL = sizeof(test_cases) / sizeof(test_cases[0]);
-int main(int ac, char **av)
+static void run_test(unsigned int nr)
{
- int lc, ind;
-
- tst_parse_opts(ac, av, NULL, NULL);
-
- setup();
+ struct test_case *tc = &tcases[nr];
- for (lc = 0; TEST_LOOPING(lc); lc++) {
+ TEST(tst_syscall(__NR_sched_get_priority_max, tc->policy));
- tst_count = 0;
-
- for (ind = 0; ind < TST_TOTAL; ind++) {
- /*
- * Call sched_get_priority_max(2)
- */
- TEST(sched_get_priority_max(test_cases[ind].policy));
-
- if (TEST_RETURN == test_cases[ind].retval) {
- tst_resm(TPASS, "%s Passed",
- test_cases[ind].desc);
- } else {
- tst_resm(TFAIL | TTERRNO, "%s Failed, "
- "sched_get_priority_max() returned %ld",
- test_cases[ind].desc, TEST_RETURN);
- }
- }
+ if (TST_RET == tc->retval) {
+ tst_res(TPASS, "%s Passed",
+ tc->desc);
+ } else {
+ tst_res(TFAIL | TTERRNO, "%s Failed, "
+ "sched_get_priority_max() returned %ld",
+ tc->desc, TST_RET);
}
- /* cleanup and exit */
- cleanup();
-
- tst_exit();
-
-}
-
-/* setup() - performs all ONE TIME setup for this test */
-void setup(void)
-{
-
- tst_sig(NOFORK, DEF_HANDLER, cleanup);
-
- TEST_PAUSE;
-
}
-/*
- *cleanup() - performs all ONE TIME cleanup for this test at
- * completion or premature exit.
- */
-void cleanup(void)
-{
-
-}
+static struct tst_test test = {
+ .tcnt = ARRAY_SIZE(tcases),
+ .test = run_test,
+};
--
2.20.1
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [LTP] [PATCH] [v1, 1/2] syscalls/sched_get_priority_max01: Convert to new API
2021-12-13 3:42 [LTP] [PATCH] [v1, 1/2] syscalls/sched_get_priority_max01: Convert to new API sujiaxun
@ 2021-12-13 16:32 ` Cyril Hrubis
2021-12-14 2:59 ` sujiaxun
0 siblings, 1 reply; 3+ messages in thread
From: Cyril Hrubis @ 2021-12-13 16:32 UTC (permalink / raw)
To: sujiaxun; +Cc: ltp
Hi!
> +/*\
> + * [Description]
> + *
> * This is a Phase I test for the sched_get_priority_max(2) system call.
> * It is intended to provide a limited exposure of the system call.
Can we please get a better description than this?
Something along the lines that it gets max prio for different
schedulling policies and compares that with expected value?
> #include <errno.h>
> #include <sched.h>
> -#include "test.h"
> -
> -static void setup();
> -static void cleanup();
> +#include "lapi/syscalls.h"
> +#include "tst_test.h"
>
> -char *TCID = "sched_get_priority_max01";
> -
> -static struct test_case_t {
> +static struct test_case {
> char *desc;
> int policy;
> int retval;
> -} test_cases[] = {
> +} tcases[] = {
> {
> "Test for SCHED_OTHER", SCHED_OTHER, 0}, {
> "Test for SCHED_FIFO", SCHED_FIFO, 99}, {
> "Test for SCHED_RR", SCHED_RR, 99}
This formatting looks really strange, the opening and closing braces
should be on the same line as:
{"foo", foo, 0},
...
Also there is no point to repeat the "Test for" in each string, all that
needs to be stored in the desc is the name of the macro as a string.
> };
>
> -int TST_TOTAL = sizeof(test_cases) / sizeof(test_cases[0]);
>
> -int main(int ac, char **av)
> +static void run_test(unsigned int nr)
> {
>
> - int lc, ind;
> -
> - tst_parse_opts(ac, av, NULL, NULL);
> -
> - setup();
> + struct test_case *tc = &tcases[nr];
>
> - for (lc = 0; TEST_LOOPING(lc); lc++) {
> + TEST(tst_syscall(__NR_sched_get_priority_max, tc->policy));
Can we please switch to TST_EXP_POSITIVE() here?
This part should look like:
TST_EXP_POSITIVE(...);
if (!TST_PASS)
return;
if (TST_RET == tc->retval)
tst_res(TPASS, ...);
else
tst_res(FAIL, ...);
> - tst_count = 0;
> -
> - for (ind = 0; ind < TST_TOTAL; ind++) {
> - /*
> - * Call sched_get_priority_max(2)
> - */
> - TEST(sched_get_priority_max(test_cases[ind].policy));
> -
> - if (TEST_RETURN == test_cases[ind].retval) {
> - tst_resm(TPASS, "%s Passed",
> - test_cases[ind].desc);
> - } else {
> - tst_resm(TFAIL | TTERRNO, "%s Failed, "
> - "sched_get_priority_max() returned %ld",
> - test_cases[ind].desc, TEST_RETURN);
> - }
> - }
> + if (TST_RET == tc->retval) {
> + tst_res(TPASS, "%s Passed",
> + tc->desc);
> + } else {
> + tst_res(TFAIL | TTERRNO, "%s Failed, "
> + "sched_get_priority_max() returned %ld",
> + tc->desc, TST_RET);
> }
>
> - /* cleanup and exit */
> - cleanup();
> -
> - tst_exit();
> -
> -}
> -
> -/* setup() - performs all ONE TIME setup for this test */
> -void setup(void)
> -{
> -
> - tst_sig(NOFORK, DEF_HANDLER, cleanup);
> -
> - TEST_PAUSE;
> -
> }
>
> -/*
> - *cleanup() - performs all ONE TIME cleanup for this test at
> - * completion or premature exit.
> - */
> -void cleanup(void)
> -{
> -
> -}
> +static struct tst_test test = {
> + .tcnt = ARRAY_SIZE(tcases),
> + .test = run_test,
> +};
> --
> 2.20.1
>
>
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
--
Cyril Hrubis
chrubis@suse.cz
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [LTP] [PATCH] [v1, 1/2] syscalls/sched_get_priority_max01: Convert to new API
2021-12-13 16:32 ` Cyril Hrubis
@ 2021-12-14 2:59 ` sujiaxun
0 siblings, 0 replies; 3+ messages in thread
From: sujiaxun @ 2021-12-14 2:59 UTC (permalink / raw)
To: Cyril Hrubis; +Cc: ltp
在 2021/12/14 上午12:32, Cyril Hrubis 写道:
> Hi!
>> +/*\
>> + * [Description]
>> + *
>> * This is a Phase I test for the sched_get_priority_max(2) system call.
>> * It is intended to provide a limited exposure of the system call.
>
> Can we please get a better description than this?
>
> Something along the lines that it gets max prio for different
> schedulling policies and compares that with expected value?
>
>> #include <errno.h>
>> #include <sched.h>
>> -#include "test.h"
>> -
>> -static void setup();
>> -static void cleanup();
>> +#include "lapi/syscalls.h"
>> +#include "tst_test.h"
>>
>> -char *TCID = "sched_get_priority_max01";
>> -
>> -static struct test_case_t {
>> +static struct test_case {
>> char *desc;
>> int policy;
>> int retval;
>> -} test_cases[] = {
>> +} tcases[] = {
>> {
>> "Test for SCHED_OTHER", SCHED_OTHER, 0}, {
>> "Test for SCHED_FIFO", SCHED_FIFO, 99}, {
>> "Test for SCHED_RR", SCHED_RR, 99}
>
> This formatting looks really strange, the opening and closing braces
> should be on the same line as:
>
> {"foo", foo, 0},
> ...
>
> Also there is no point to repeat the "Test for" in each string, all that
> needs to be stored in the desc is the name of the macro as a string.
>
>> };
>>
>> -int TST_TOTAL = sizeof(test_cases) / sizeof(test_cases[0]);
>>
>> -int main(int ac, char **av)
>> +static void run_test(unsigned int nr)
>> {
>>
>> - int lc, ind;
>> -
>> - tst_parse_opts(ac, av, NULL, NULL);
>> -
>> - setup();
>> + struct test_case *tc = &tcases[nr];
>>
>> - for (lc = 0; TEST_LOOPING(lc); lc++) {
>> + TEST(tst_syscall(__NR_sched_get_priority_max, tc->policy));
>
> Can we please switch to TST_EXP_POSITIVE() here?
>
> This part should look like:
>
> TST_EXP_POSITIVE(...);
>
> if (!TST_PASS)
> return;
>
> if (TST_RET == tc->retval)
> tst_res(TPASS, ...);
> else
> tst_res(FAIL, ...);
>
>> - tst_count = 0;
>> -
>> - for (ind = 0; ind < TST_TOTAL; ind++) {
>> - /*
>> - * Call sched_get_priority_max(2)
>> - */
>> - TEST(sched_get_priority_max(test_cases[ind].policy));
>> -
>> - if (TEST_RETURN == test_cases[ind].retval) {
>> - tst_resm(TPASS, "%s Passed",
>> - test_cases[ind].desc);
>> - } else {
>> - tst_resm(TFAIL | TTERRNO, "%s Failed, "
>> - "sched_get_priority_max() returned %ld",
>> - test_cases[ind].desc, TEST_RETURN);
>> - }
>> - }
>> + if (TST_RET == tc->retval) {
>> + tst_res(TPASS, "%s Passed",
>> + tc->desc);
>> + } else {
>> + tst_res(TFAIL | TTERRNO, "%s Failed, "
>> + "sched_get_priority_max() returned %ld",
>> + tc->desc, TST_RET);
>> }
>>
>> - /* cleanup and exit */
>> - cleanup();
>> -
>> - tst_exit();
>> -
>> -}
>> -
>> -/* setup() - performs all ONE TIME setup for this test */
>> -void setup(void)
>> -{
>> -
>> - tst_sig(NOFORK, DEF_HANDLER, cleanup);
>> -
>> - TEST_PAUSE;
>> -
>> }
>>
>> -/*
>> - *cleanup() - performs all ONE TIME cleanup for this test at
>> - * completion or premature exit.
>> - */
>> -void cleanup(void)
>> -{
>> -
>> -}
>> +static struct tst_test test = {
>> + .tcnt = ARRAY_SIZE(tcases),
>> + .test = run_test,
>> +};
>> --
>> 2.20.1
>>
>>
>>
>>
>> --
>> Mailing list info: https://lists.linux.it/listinfo/ltp
>
Thank you, I will resubmit after making changes.
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-12-14 2:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-13 3:42 [LTP] [PATCH] [v1, 1/2] syscalls/sched_get_priority_max01: Convert to new API sujiaxun
2021-12-13 16:32 ` Cyril Hrubis
2021-12-14 2:59 ` sujiaxun
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).