Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1198874
| From | Nicolas Schichan <nschichan@freebox.fr> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 4/6] test_bpf: add module parameters to filter the tests to run. |
| Date | 2015-08-03 16:10 +0200 |
| Message-ID | <pToBb-5iK-23@gated-at.bofh.it> (permalink) |
| References | <pToBb-5iK-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
When developping on the interpreter or a particular JIT, it can be
insteresting to restrict the test list to a specific test or a
particular range of tests.
This patch adds the following module parameters to the test_bpf module:
* test_name=<string>: only the specified named test will be run.
* test_id=<number>: only the test with the specified id will be run
(see the output of test_pbf without parameters to get the test id).
* test_range=<number>,<number>: only the tests with IDs in the
specified id range are run (see the output of test_pbf without
parameters to get the test ids).
Any invalid range, test id or test name will result in -EINVAL being
returned and no tests being run.
Signed-off-by: Nicolas Schichan <nschichan@freebox.fr>
---
lib/test_bpf.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 73 insertions(+)
diff --git a/lib/test_bpf.c b/lib/test_bpf.c
index f5606fb..abd0507 100644
--- a/lib/test_bpf.c
+++ b/lib/test_bpf.c
@@ -4870,10 +4870,72 @@ static int run_one(const struct bpf_prog *fp, struct bpf_test *test)
return err_cnt;
}
+static char test_name[64];
+module_param_string(test_name, test_name, sizeof(test_name), 0);
+
+static int test_id = -1;
+module_param(test_id, int, 0);
+
+static int test_range[2] = { -1, -1 };
+module_param_array(test_range, int, NULL, 0);
+
+static __init int find_test_index(const char *test_name)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(tests); i++) {
+ if (!strcmp(tests[i].descr, test_name))
+ return i;
+ }
+ return -1;
+}
+
static __init int prepare_bpf_tests(void)
{
int i;
+ if (test_id >= 0) {
+ /*
+ * if a test_id was specified, use test_range to
+ * conver only that test.
+ */
+ if (test_id >= ARRAY_SIZE(tests)) {
+ pr_err("test_bpf: invalid test_id specified.\n");
+ return -EINVAL;
+ }
+
+ test_range[0] = test_id;
+ test_range[1] = test_id;
+ } else if (test_range[0] >= 0) {
+ /*
+ * check that the supplied test_range is valid.
+ */
+ if (test_range[0] >= ARRAY_SIZE(tests) ||
+ test_range[1] >= ARRAY_SIZE(tests)) {
+ pr_err("test_bpf: test_range is out of bound.\n");
+ return -EINVAL;
+ }
+
+ if (test_range[1] < test_range[0]) {
+ pr_err("test_bpf: test_range is ending before it starts.\n");
+ return -EINVAL;
+ }
+ } else if (*test_name) {
+ /*
+ * if a test_name was specified, find it and setup
+ * test_range to cover only that test.
+ */
+ int idx = find_test_index(test_name);
+
+ if (idx < 0) {
+ pr_err("test_bpf: no test named '%s' found.\n",
+ test_name);
+ return -EINVAL;
+ }
+ test_range[0] = idx;
+ test_range[1] = idx;
+ }
+
for (i = 0; i < ARRAY_SIZE(tests); i++) {
if (tests[i].fill_helper &&
tests[i].fill_helper(&tests[i]) < 0)
@@ -4893,6 +4955,14 @@ static __init void destroy_bpf_tests(void)
}
}
+static bool exclude_test(int test_id)
+{
+ if (test_range[0] >= 0 &&
+ (test_id < test_range[0] || test_id > test_range[1]))
+ return true;
+ return false;
+}
+
static __init int test_bpf(void)
{
int i, err_cnt = 0, pass_cnt = 0;
@@ -4902,6 +4972,9 @@ static __init int test_bpf(void)
struct bpf_prog *fp;
int err;
+ if (exclude_test(i))
+ continue;
+
pr_info("#%d %s ", i, tests[i].descr);
fp = generate_filter(i, &err);
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/6] test_bpf improvements Nicolas Schichan <nschichan@freebox.fr> - 2015-08-03 16:10 +0200
[PATCH 4/6] test_bpf: add module parameters to filter the tests to run. Nicolas Schichan <nschichan@freebox.fr> - 2015-08-03 16:10 +0200
Re: [PATCH 4/6] test_bpf: add module parameters to filter the tests to run. Daniel Borkmann <daniel@iogearbox.net> - 2015-08-03 18:00 +0200
Re: [PATCH 4/6] test_bpf: add module parameters to filter the tests to run. Daniel Borkmann <daniel@iogearbox.net> - 2015-08-03 18:40 +0200
Re: [PATCH 4/6] test_bpf: add module parameters to filter the tests to run. Nicolas Schichan <nschichan@freebox.fr> - 2015-08-03 18:40 +0200
[PATCH 3/6] test_bpf: test LD_ABS and LD_IND instructions on fragmented skbs. Nicolas Schichan <nschichan@freebox.fr> - 2015-08-03 16:10 +0200
Re: [PATCH 3/6] test_bpf: test LD_ABS and LD_IND instructions on fragmented skbs. Daniel Borkmann <daniel@iogearbox.net> - 2015-08-03 17:10 +0200
[PATCH 6/6] test_bpf: add tests checking that JIT/interpreter sets A and X to 0. Nicolas Schichan <nschichan@freebox.fr> - 2015-08-03 16:10 +0200
Re: [PATCH 6/6] test_bpf: add tests checking that JIT/interpreter sets A and X to 0. Daniel Borkmann <daniel@iogearbox.net> - 2015-08-03 17:10 +0200
[PATCH 5/6] test_bpf: add more tests for LD_ABS and LD_IND. Nicolas Schichan <nschichan@freebox.fr> - 2015-08-03 16:10 +0200
Re: [PATCH 5/6] test_bpf: add more tests for LD_ABS and LD_IND. Daniel Borkmann <daniel@iogearbox.net> - 2015-08-03 17:10 +0200
[PATCH 1/6] test_bpf: avoid oopsing the kernel when generate_test_data() fails. Nicolas Schichan <nschichan@freebox.fr> - 2015-08-03 16:10 +0200
Re: [PATCH 1/6] test_bpf: avoid oopsing the kernel when generate_test_data() fails. Daniel Borkmann <daniel@iogearbox.net> - 2015-08-03 16:50 +0200
csiph-web