From: Stanislav Fomichev <sdf@fomichev.me>
To: Andrii Nakryiko <andriin@fb.com>
Cc: bpf@vger.kernel.org, netdev@vger.kernel.org, ast@fb.com,
daniel@iogearbox.net, andrii.nakryiko@gmail.com,
kernel-team@fb.com
Subject: Re: [PATCH bpf-next 3/9] selftests/bpf: add test selectors by number and name to test_progs
Date: Fri, 26 Jul 2019 14:25:47 -0700 [thread overview]
Message-ID: <20190726212547.GB24397@mini-arch> (raw)
In-Reply-To: <20190726203747.1124677-4-andriin@fb.com>
On 07/26, Andrii Nakryiko wrote:
> Add ability to specify either test number or test name substring to
> narrow down a set of test to run.
>
> Usage:
> sudo ./test_progs -n 1
> sudo ./test_progs -t attach_probe
>
> Signed-off-by: Andrii Nakryiko <andriin@fb.com>
> ---
> tools/testing/selftests/bpf/test_progs.c | 43 +++++++++++++++++++++---
> 1 file changed, 39 insertions(+), 4 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c
> index eea88ba59225..6e04b9f83777 100644
> --- a/tools/testing/selftests/bpf/test_progs.c
> +++ b/tools/testing/selftests/bpf/test_progs.c
> @@ -4,6 +4,7 @@
> #include "test_progs.h"
> #include "bpf_rlimit.h"
> #include <argp.h>
> +#include <string.h>
>
> int error_cnt, pass_cnt;
> bool jit_enabled;
> @@ -164,6 +165,7 @@ void *spin_lock_thread(void *arg)
>
> struct prog_test_def {
> const char *test_name;
> + int test_num;
> void (*run_test)(void);
> };
>
> @@ -181,26 +183,49 @@ const char *argp_program_bug_address = "<bpf@vger.kernel.org>";
> const char argp_program_doc[] = "BPF selftests test runner";
>
> enum ARG_KEYS {
> + ARG_TEST_NUM = 'n',
> + ARG_TEST_NAME = 't',
> ARG_VERIFIER_STATS = 's',
> };
>
> static const struct argp_option opts[] = {
> + { "num", ARG_TEST_NUM, "NUM", 0,
> + "Run test number NUM only " },
> + { "name", ARG_TEST_NAME, "NAME", 0,
> + "Run tests with names containing NAME" },
> { "verifier-stats", ARG_VERIFIER_STATS, NULL, 0,
> "Output verifier statistics", },
> {},
> };
>
> struct test_env {
> + int test_num_selector;
> + const char *test_name_selector;
> bool verifier_stats;
> };
>
> -static struct test_env env = {};
> +static struct test_env env = {
> + .test_num_selector = -1,
> +};
>
> static error_t parse_arg(int key, char *arg, struct argp_state *state)
> {
> struct test_env *env = state->input;
>
> switch (key) {
[..]
> + case ARG_TEST_NUM: {
> + int test_num;
> +
> + errno = 0;
> + test_num = strtol(arg, NULL, 10);
> + if (errno)
> + return -errno;
> + env->test_num_selector = test_num;
> + break;
> + }
Do you think it's really useful? I agree about running by name (I
usually used grep -v in the Makefile :-), but I'm not sure about running
by number.
Or is the idea is that you can just copy-paste this number from the
test_progs output to rerun the tests? In this case, why not copy-paste
the name instead?
> + case ARG_TEST_NAME:
> + env->test_name_selector = arg;
> + break;
> case ARG_VERIFIER_STATS:
> env->verifier_stats = true;
> break;
> @@ -223,7 +248,7 @@ int main(int argc, char **argv)
> .parser = parse_arg,
> .doc = argp_program_doc,
> };
> - const struct prog_test_def *def;
> + struct prog_test_def *test;
> int err, i;
>
> err = argp_parse(&argp, argc, argv, 0, NULL, &env);
> @@ -237,8 +262,18 @@ int main(int argc, char **argv)
> verifier_stats = env.verifier_stats;
>
> for (i = 0; i < ARRAY_SIZE(prog_test_defs); i++) {
> - def = &prog_test_defs[i];
> - def->run_test();
> + test = &prog_test_defs[i];
> +
> + test->test_num = i + 1;
> +
> + if (env.test_num_selector >= 0 &&
> + test->test_num != env.test_num_selector)
> + continue;
> + if (env.test_name_selector &&
> + !strstr(test->test_name, env.test_name_selector))
> + continue;
> +
> + test->run_test();
> }
>
> printf("Summary: %d PASSED, %d FAILED\n", pass_cnt, error_cnt);
> --
> 2.17.1
>
next prev parent reply other threads:[~2019-07-26 21:25 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-26 20:37 [PATCH bpf-next 0/9] Revamp test_progs as a test running framework Andrii Nakryiko
2019-07-26 20:37 ` [PATCH bpf-next 1/9] selftests/bpf: prevent headers to be compiled as C code Andrii Nakryiko
2019-07-26 21:21 ` Stanislav Fomichev
2019-07-26 21:42 ` Andrii Nakryiko
2019-07-26 22:01 ` Stanislav Fomichev
2019-07-27 18:53 ` Andrii Nakryiko
2019-07-31 13:21 ` Ilya Leoshkevich
2019-07-31 17:04 ` Andrii Nakryiko
2019-07-26 20:37 ` [PATCH bpf-next 2/9] selftests/bpf: revamp test_progs to allow more control Andrii Nakryiko
2019-07-26 20:37 ` [PATCH bpf-next 3/9] selftests/bpf: add test selectors by number and name to test_progs Andrii Nakryiko
2019-07-26 21:25 ` Stanislav Fomichev [this message]
2019-07-26 21:45 ` Andrii Nakryiko
2019-07-26 22:03 ` Stanislav Fomichev
2019-07-26 20:37 ` [PATCH bpf-next 4/9] libbpf: add libbpf_swap_print to get previous print func Andrii Nakryiko
2019-07-26 21:28 ` Stanislav Fomichev
2019-07-26 21:47 ` Andrii Nakryiko
2019-07-27 0:30 ` Alexei Starovoitov
2019-07-27 18:49 ` Andrii Nakryiko
2019-07-26 20:37 ` [PATCH bpf-next 5/9] selftest/bpf: centralize libbpf logging management for test_progs Andrii Nakryiko
2019-07-26 20:37 ` [PATCH bpf-next 6/9] selftests/bpf: abstract away test log output Andrii Nakryiko
2019-07-26 21:31 ` Stanislav Fomichev
2019-07-26 21:51 ` Andrii Nakryiko
2019-07-26 22:26 ` Stanislav Fomichev
2019-07-27 0:34 ` Alexei Starovoitov
2019-07-27 18:56 ` Andrii Nakryiko
2019-07-26 20:37 ` [PATCH bpf-next 7/9] selftests/bpf: add sub-tests support for test_progs Andrii Nakryiko
2019-07-26 20:37 ` [PATCH bpf-next 8/9] selftests/bpf: convert bpf_verif_scale.c to sub-tests API Andrii Nakryiko
2019-07-26 20:37 ` [PATCH bpf-next 9/9] selftests/bpf: convert send_signal.c to use subtests Andrii Nakryiko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190726212547.GB24397@mini-arch \
--to=sdf@fomichev.me \
--cc=andrii.nakryiko@gmail.com \
--cc=andriin@fb.com \
--cc=ast@fb.com \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.