[LTP] [RFC] [PATCH] syscalls/timer_tests: Hardcode runtime

Petr Vorel pvorel@suse.cz
Thu Jul 28 13:21:17 CEST 2022


Hi Cyril, all,

[ sorry for duplicity in the reply ]

> This commit changes how default runtime is set for the timer testcases.

> The main motivation behind this is to make sure that runtime is
> propagated to the metadata. The downside is that we have to add the
> runtime explicitly into each tst_test structure, but I still think that
> it's better this way.

I'm not happy having to put .max_runtime = TST_TIMER_TEST_RUNTIME, into each
tst_test structure, but as C does not allow to have a default value and assign
it in runtime does not help to have it in docs, I agree. Others, WDYT?

Acked-by: Petr Vorel <pvorel@suse.cz>

Kind regards,
Petr

> Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
> ---
>  include/tst_timer_test.h                             |  5 +++++
>  lib/tst_timer_test.c                                 | 12 ++++++------
>  .../syscalls/clock_nanosleep/clock_nanosleep02.c     |  1 +
>  .../kernel/syscalls/epoll_pwait/epoll_pwait03.c      |  1 +
>  testcases/kernel/syscalls/epoll_wait/epoll_wait02.c  |  1 +
>  testcases/kernel/syscalls/epoll_wait/epoll_wait04.c  |  1 +
>  testcases/kernel/syscalls/futex/futex_wait05.c       |  1 +
>  testcases/kernel/syscalls/nanosleep/nanosleep01.c    |  1 +
>  testcases/kernel/syscalls/poll/poll02.c              |  1 +
>  testcases/kernel/syscalls/prctl/prctl09.c            |  1 +
>  testcases/kernel/syscalls/pselect/pselect01.c        |  1 +
>  testcases/kernel/syscalls/select/select02.c          |  1 +
>  12 files changed, 21 insertions(+), 6 deletions(-)

> diff --git a/include/tst_timer_test.h b/include/tst_timer_test.h
> index b825a4d1a..689e2eea7 100644
> --- a/include/tst_timer_test.h
> +++ b/include/tst_timer_test.h
> @@ -39,6 +39,11 @@

>  void tst_timer_sample(void);

> +/*
> + * By default the timer tests run for bit less than 9 seconds.
> + */
> +#define TST_TIMER_TEST_RUNTIME 10
> +
>  # ifdef TST_NO_DEFAULT_MAIN
>  struct tst_test *tst_timer_test_setup(struct tst_test *test);
>  # endif /* TST_NO_DEFAULT_MAIN */
> diff --git a/lib/tst_timer_test.c b/lib/tst_timer_test.c
> index ef9b24d11..593917f40 100644
> --- a/lib/tst_timer_test.c
> +++ b/lib/tst_timer_test.c
> @@ -387,6 +387,10 @@ static void timer_cleanup(void)
>  		cleanup();
>  }

> +/*
> + * If you change this table do not forget to update the TST_TIMER_TEST_RUNTIME
> + * in the corresponding header to be slightly larger than a sum of this table.
> + */
>  static struct tst_timer_tcase {
>  	long long usec;
>  	unsigned int samples;
> @@ -420,7 +424,6 @@ static struct tst_option options[] = {

>  static void parse_timer_opts(void)
>  {
> -	size_t i;
>  	long long runtime_us = 0;

>  	if (str_sleep_time) {
> @@ -449,12 +452,9 @@ static void parse_timer_opts(void)
>  		test->test_all = single_timer_test;
>  		test->test = NULL;
>  		test->tcnt = 0;
> -	} else {
> -		for (i = 0; i < ARRAY_SIZE(tcases); i++)
> -			runtime_us += tcases[i].usec * tcases[i].samples;
> -	}

> -	tst_set_max_runtime((runtime_us + runtime_us/10)/1000000);
> +		tst_set_max_runtime((runtime_us + runtime_us/10)/1000000);
> +	}
>  }

>  struct tst_test *tst_timer_test_setup(struct tst_test *timer_test)
> diff --git a/testcases/kernel/syscalls/clock_nanosleep/clock_nanosleep02.c b/testcases/kernel/syscalls/clock_nanosleep/clock_nanosleep02.c
> index feb3e4791..544884e9a 100644
> --- a/testcases/kernel/syscalls/clock_nanosleep/clock_nanosleep02.c
> +++ b/testcases/kernel/syscalls/clock_nanosleep/clock_nanosleep02.c
> @@ -32,5 +32,6 @@ int sample_fn(int clk_id, long long usec)

>  static struct tst_test test = {
>  	.scall = "clock_nanosleep()",
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  	.sample = sample_fn,
>  };
> diff --git a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait03.c b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait03.c
> index 2ad1a6abc..064231d9d 100644
> --- a/testcases/kernel/syscalls/epoll_pwait/epoll_pwait03.c
> +++ b/testcases/kernel/syscalls/epoll_pwait/epoll_pwait03.c
> @@ -70,5 +70,6 @@ static struct tst_test test = {
>  	.sample = sample_fn,
>  	.setup = setup,
>  	.cleanup = cleanup,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  	.test_variants = TEST_VARIANTS,
>  };
> diff --git a/testcases/kernel/syscalls/epoll_wait/epoll_wait02.c b/testcases/kernel/syscalls/epoll_wait/epoll_wait02.c
> index d2c0b6ef4..7bd45498e 100644
> --- a/testcases/kernel/syscalls/epoll_wait/epoll_wait02.c
> +++ b/testcases/kernel/syscalls/epoll_wait/epoll_wait02.c
> @@ -68,6 +68,7 @@ static void cleanup(void)
>  static struct tst_test test = {
>  	.scall = "epoll_wait()",
>  	.sample = sample_fn,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  	.setup = setup,
>  	.cleanup = cleanup,
>  };
> diff --git a/testcases/kernel/syscalls/epoll_wait/epoll_wait04.c b/testcases/kernel/syscalls/epoll_wait/epoll_wait04.c
> index dc62e9202..44b957ee0 100644
> --- a/testcases/kernel/syscalls/epoll_wait/epoll_wait04.c
> +++ b/testcases/kernel/syscalls/epoll_wait/epoll_wait04.c
> @@ -68,4 +68,5 @@ static struct tst_test test = {
>  	.test_all = run,
>  	.setup = setup,
>  	.cleanup = cleanup,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  };
> diff --git a/testcases/kernel/syscalls/futex/futex_wait05.c b/testcases/kernel/syscalls/futex/futex_wait05.c
> index 8fad5d858..b80832054 100644
> --- a/testcases/kernel/syscalls/futex/futex_wait05.c
> +++ b/testcases/kernel/syscalls/futex/futex_wait05.c
> @@ -41,4 +41,5 @@ int sample_fn(int clk_id, long long usec)
>  static struct tst_test test = {
>  	.scall = "futex_wait()",
>  	.sample = sample_fn,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  };
> diff --git a/testcases/kernel/syscalls/nanosleep/nanosleep01.c b/testcases/kernel/syscalls/nanosleep/nanosleep01.c
> index eaacb89fa..e0045662c 100644
> --- a/testcases/kernel/syscalls/nanosleep/nanosleep01.c
> +++ b/testcases/kernel/syscalls/nanosleep/nanosleep01.c
> @@ -35,4 +35,5 @@ int sample_fn(int clk_id, long long usec)
>  static struct tst_test test = {
>  	.scall = "nanosleep()",
>  	.sample = sample_fn,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  };
> diff --git a/testcases/kernel/syscalls/poll/poll02.c b/testcases/kernel/syscalls/poll/poll02.c
> index c0665927b..30026e7d0 100644
> --- a/testcases/kernel/syscalls/poll/poll02.c
> +++ b/testcases/kernel/syscalls/poll/poll02.c
> @@ -55,4 +55,5 @@ static struct tst_test test = {
>  	.sample = sample_fn,
>  	.setup = setup,
>  	.cleanup = cleanup,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  };
> diff --git a/testcases/kernel/syscalls/prctl/prctl09.c b/testcases/kernel/syscalls/prctl/prctl09.c
> index 07ce57063..8c22d95dd 100644
> --- a/testcases/kernel/syscalls/prctl/prctl09.c
> +++ b/testcases/kernel/syscalls/prctl/prctl09.c
> @@ -44,4 +44,5 @@ static struct tst_test test = {
>  	.setup = setup,
>  	.scall = "prctl()",
>  	.sample = sample_fn,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  };
> diff --git a/testcases/kernel/syscalls/pselect/pselect01.c b/testcases/kernel/syscalls/pselect/pselect01.c
> index 5b2b8b3ba..e2381bc61 100644
> --- a/testcases/kernel/syscalls/pselect/pselect01.c
> +++ b/testcases/kernel/syscalls/pselect/pselect01.c
> @@ -34,4 +34,5 @@ int sample_fn(int clk_id, long long usec)
>  static struct tst_test test = {
>  	.scall = "pselect()",
>  	.sample = sample_fn,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  };
> diff --git a/testcases/kernel/syscalls/select/select02.c b/testcases/kernel/syscalls/select/select02.c
> index 784ec9211..5e51951e6 100644
> --- a/testcases/kernel/syscalls/select/select02.c
> +++ b/testcases/kernel/syscalls/select/select02.c
> @@ -62,4 +62,5 @@ static struct tst_test test = {
>  	.setup = setup,
>  	.test_variants = TEST_VARIANTS,
>  	.cleanup = cleanup,
> +	.max_runtime = TST_TIMER_TEST_RUNTIME,
>  };



More information about the ltp mailing list