Re: [PATCH] selftests: futex: convert test to use ksft TAP13 framework
From: Darren Hart
Date: Wed Aug 16 2017 - 19:25:52 EST
On Fri, Aug 04, 2017 at 06:46:50PM -0600, Shuah Khan wrote:
> Convert test to use ksft TAP13 framework.
>
Please include some information in the commit about why we're doing this
and what it is.
>From what I can tell this is converting raw printk to a wrapped set of
logging functions to produce a more consistent output across the
kselftest suite.
I have no objection to that for the futex tests:
Acked-by: Darren Hart (VMware) <dvhart@xxxxxxxxxxxxx>
> Signed-off-by: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx>
> ---
> .../selftests/futex/functional/futex_requeue_pi.c | 8 +++++---
> .../functional/futex_requeue_pi_mismatched_ops.c | 3 ++-
> .../functional/futex_requeue_pi_signal_restart.c | 5 +++--
> .../functional/futex_wait_private_mapped_file.c | 6 ++++--
> .../selftests/futex/functional/futex_wait_timeout.c | 5 +++--
> .../futex/functional/futex_wait_uninitialized_heap.c | 3 ++-
> .../futex/functional/futex_wait_wouldblock.c | 3 ++-
> tools/testing/selftests/futex/include/logging.h | 20 +++++++++-----------
> 8 files changed, 30 insertions(+), 23 deletions(-)
>
> diff --git a/tools/testing/selftests/futex/functional/futex_requeue_pi.c b/tools/testing/selftests/futex/functional/futex_requeue_pi.c
> index d24ab7421e73..54cd5c414e82 100644
> --- a/tools/testing/selftests/futex/functional/futex_requeue_pi.c
> +++ b/tools/testing/selftests/futex/functional/futex_requeue_pi.c
> @@ -394,9 +394,11 @@ int main(int argc, char *argv[])
> }
> }
>
> - printf("%s: Test requeue functionality\n", basename(argv[0]));
> - printf("\tArguments: broadcast=%d locked=%d owner=%d timeout=%ldns\n",
> - broadcast, locked, owner, timeout_ns);
> + ksft_print_header();
> + ksft_print_msg("%s: Test requeue functionality\n", basename(argv[0]));
> + ksft_print_msg(
> + "\tArguments: broadcast=%d locked=%d owner=%d timeout=%ldns\n",
> + broadcast, locked, owner, timeout_ns);
>
> /*
> * FIXME: unit_test is obsolete now that we parse options and the
> diff --git a/tools/testing/selftests/futex/functional/futex_requeue_pi_mismatched_ops.c b/tools/testing/selftests/futex/functional/futex_requeue_pi_mismatched_ops.c
> index e0a798ad0d21..08187a16507f 100644
> --- a/tools/testing/selftests/futex/functional/futex_requeue_pi_mismatched_ops.c
> +++ b/tools/testing/selftests/futex/functional/futex_requeue_pi_mismatched_ops.c
> @@ -78,7 +78,8 @@ int main(int argc, char *argv[])
> }
> }
>
> - printf("%s: Detect mismatched requeue_pi operations\n",
> + ksft_print_header();
> + ksft_print_msg("%s: Detect mismatched requeue_pi operations\n",
> basename(argv[0]));
>
> if (pthread_create(&child, NULL, blocking_child, NULL)) {
> diff --git a/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c b/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c
> index 982f83577501..f0542a344d95 100644
> --- a/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c
> +++ b/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c
> @@ -143,9 +143,10 @@ int main(int argc, char *argv[])
> }
> }
>
> - printf("%s: Test signal handling during requeue_pi\n",
> + ksft_print_header();
> + ksft_print_msg("%s: Test signal handling during requeue_pi\n",
> basename(argv[0]));
> - printf("\tArguments: <none>\n");
> + ksft_print_msg("\tArguments: <none>\n");
>
> sa.sa_handler = handle_signal;
> sigemptyset(&sa.sa_mask);
> diff --git a/tools/testing/selftests/futex/functional/futex_wait_private_mapped_file.c b/tools/testing/selftests/futex/functional/futex_wait_private_mapped_file.c
> index bdc48dc047e5..6216de828093 100644
> --- a/tools/testing/selftests/futex/functional/futex_wait_private_mapped_file.c
> +++ b/tools/testing/selftests/futex/functional/futex_wait_private_mapped_file.c
> @@ -97,8 +97,10 @@ int main(int argc, char **argv)
> }
> }
>
> - printf("%s: Test the futex value of private file mappings in FUTEX_WAIT\n",
> - basename(argv[0]));
> + ksft_print_header();
> + ksft_print_msg(
> + "%s: Test the futex value of private file mappings in FUTEX_WAIT\n",
> + basename(argv[0]));
>
> ret = pthread_create(&thr, NULL, thr_futex_wait, NULL);
> if (ret < 0) {
> diff --git a/tools/testing/selftests/futex/functional/futex_wait_timeout.c b/tools/testing/selftests/futex/functional/futex_wait_timeout.c
> index 6aadd560366e..bab3dfe1787f 100644
> --- a/tools/testing/selftests/futex/functional/futex_wait_timeout.c
> +++ b/tools/testing/selftests/futex/functional/futex_wait_timeout.c
> @@ -68,9 +68,10 @@ int main(int argc, char *argv[])
> }
> }
>
> - printf("%s: Block on a futex and wait for timeout\n",
> + ksft_print_header();
> + ksft_print_msg("%s: Block on a futex and wait for timeout\n",
> basename(argv[0]));
> - printf("\tArguments: timeout=%ldns\n", timeout_ns);
> + ksft_print_msg("\tArguments: timeout=%ldns\n", timeout_ns);
>
> /* initialize timeout */
> to.tv_sec = 0;
> diff --git a/tools/testing/selftests/futex/functional/futex_wait_uninitialized_heap.c b/tools/testing/selftests/futex/functional/futex_wait_uninitialized_heap.c
> index d237a8b702f0..26975322545b 100644
> --- a/tools/testing/selftests/futex/functional/futex_wait_uninitialized_heap.c
> +++ b/tools/testing/selftests/futex/functional/futex_wait_uninitialized_heap.c
> @@ -99,7 +99,8 @@ int main(int argc, char **argv)
> exit(1);
> }
>
> - printf("%s: Test the uninitialized futex value in FUTEX_WAIT\n",
> + ksft_print_header();
> + ksft_print_msg("%s: Test the uninitialized futex value in FUTEX_WAIT\n",
> basename(argv[0]));
>
>
> diff --git a/tools/testing/selftests/futex/functional/futex_wait_wouldblock.c b/tools/testing/selftests/futex/functional/futex_wait_wouldblock.c
> index 9a2c56fa7305..da15a63269b4 100644
> --- a/tools/testing/selftests/futex/functional/futex_wait_wouldblock.c
> +++ b/tools/testing/selftests/futex/functional/futex_wait_wouldblock.c
> @@ -64,7 +64,8 @@ int main(int argc, char *argv[])
> }
> }
>
> - printf("%s: Test the unexpected futex value in FUTEX_WAIT\n",
> + ksft_print_header();
> + ksft_print_msg("%s: Test the unexpected futex value in FUTEX_WAIT\n",
> basename(argv[0]));
>
> info("Calling futex_wait on f1: %u @ %p with val=%u\n", f1, &f1, f1+1);
> diff --git a/tools/testing/selftests/futex/include/logging.h b/tools/testing/selftests/futex/include/logging.h
> index 4e7944984fbb..01989644e50a 100644
> --- a/tools/testing/selftests/futex/include/logging.h
> +++ b/tools/testing/selftests/futex/include/logging.h
> @@ -109,22 +109,20 @@ void log_verbosity(int level)
> */
> void print_result(const char *test_name, int ret)
> {
> - const char *result = "Unknown return code";
> -
> switch (ret) {
> case RET_PASS:
> - ksft_inc_pass_cnt();
> - result = PASS;
> - break;
> + ksft_test_result_pass("%s\n", test_name);
> + ksft_print_cnts();
> + return;
> case RET_ERROR:
> - result = ERROR;
> - break;
> + ksft_test_result_error("%s\n", test_name);
> + ksft_print_cnts();
> + return;
> case RET_FAIL:
> - ksft_inc_fail_cnt();
> - result = FAIL;
> - break;
> + ksft_test_result_fail("%s\n", test_name);
> + ksft_print_cnts();
> + return;
> }
> - printf("selftests: %s [%s]\n", test_name, result);
> }
>
> /* log level macros */
> --
> 2.11.0
>
>
--
Darren Hart
VMware Open Source Technology Center