Message ID | 155614416551.29379.12486744636513956469.stgit@john-XPS-13-9360 |
---|---|
State | Changes Requested |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf-next] bpf: sockmap, test tool support to skip cgroup arg | expand |
On Thu, Apr 25, 2019 at 12:19 AM John Fastabend <john.fastabend@gmail.com> wrote: > > Its handy to not have to setup a cgroup environment when running > test_sockmap with user specified options. This patch setups a cgroup > environment, similar to how it is done with the auto test suite, when > the user does not provide a cgroup arg. > > Signed-off-by: John Fastabend <john.fastabend@gmail.com> > --- > tools/testing/selftests/bpf/test_sockmap.c | 24 +++++++++++++++++++++--- > 1 file changed, 21 insertions(+), 3 deletions(-) > > diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c > index 3845144e2c91..11dfb1f10e15 100644 > --- a/tools/testing/selftests/bpf/test_sockmap.c > +++ b/tools/testing/selftests/bpf/test_sockmap.c > @@ -1734,6 +1734,7 @@ int main(int argc, char **argv) > int opt, longindex, err, cg_fd = 0; > char *bpf_file = BPF_SOCKMAP_FILENAME; > int test = PING_PONG; > + bool cleanup = true; > > if (argc < 2) > return test_suite(-1); > @@ -1773,6 +1774,7 @@ int main(int argc, char **argv) > cg_fd, optarg); > return cg_fd; > } > + cleanup = false; > break; > case 'r': > rate = atoi(optarg); > @@ -1818,9 +1820,23 @@ int main(int argc, char **argv) Code one line above this, assumes that tool in non-test mode always has argc > 3. With --cgroup being optional, that's not true anymore, right? Or am I missing how it's supposed to be used? > return test_suite(cg_fd); > > if (!cg_fd) { > - fprintf(stderr, "%s requires cgroup option: --cgroup <path>\n", > - argv[0]); Now that --cgroup is optional, would it make sense to update usage function at line 121 to remove "--cgroup <cgroup_path>"? > - return -1; > + if (setup_cgroup_environment()) { > + fprintf(stderr, "ERROR: cgroup env failed\n"); > + return -EINVAL; > + } > + > + cg_fd = create_and_get_cgroup(CG_PATH); > + if (cg_fd < 0) { > + fprintf(stderr, > + "ERROR: (%i) open cg path failed: %s\n", > + cg_fd, optarg); > + return cg_fd; > + } > + > + if (join_cgroup(CG_PATH)) { > + fprintf(stderr, "ERROR: failed to join cgroup\n"); > + return -EINVAL; > + } > } > > err = populate_progs(bpf_file); > @@ -1839,6 +1855,8 @@ int main(int argc, char **argv) > options.rate = rate; > > err = run_options(&options, cg_fd, test); > + if (cleanup) > + cleanup_cgroup_environment(); > close(cg_fd); > return err; > } >
diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c index 3845144e2c91..11dfb1f10e15 100644 --- a/tools/testing/selftests/bpf/test_sockmap.c +++ b/tools/testing/selftests/bpf/test_sockmap.c @@ -1734,6 +1734,7 @@ int main(int argc, char **argv) int opt, longindex, err, cg_fd = 0; char *bpf_file = BPF_SOCKMAP_FILENAME; int test = PING_PONG; + bool cleanup = true; if (argc < 2) return test_suite(-1); @@ -1773,6 +1774,7 @@ int main(int argc, char **argv) cg_fd, optarg); return cg_fd; } + cleanup = false; break; case 'r': rate = atoi(optarg); @@ -1818,9 +1820,23 @@ int main(int argc, char **argv) return test_suite(cg_fd); if (!cg_fd) { - fprintf(stderr, "%s requires cgroup option: --cgroup <path>\n", - argv[0]); - return -1; + if (setup_cgroup_environment()) { + fprintf(stderr, "ERROR: cgroup env failed\n"); + return -EINVAL; + } + + cg_fd = create_and_get_cgroup(CG_PATH); + if (cg_fd < 0) { + fprintf(stderr, + "ERROR: (%i) open cg path failed: %s\n", + cg_fd, optarg); + return cg_fd; + } + + if (join_cgroup(CG_PATH)) { + fprintf(stderr, "ERROR: failed to join cgroup\n"); + return -EINVAL; + } } err = populate_progs(bpf_file); @@ -1839,6 +1855,8 @@ int main(int argc, char **argv) options.rate = rate; err = run_options(&options, cg_fd, test); + if (cleanup) + cleanup_cgroup_environment(); close(cg_fd); return err; }
Its handy to not have to setup a cgroup environment when running test_sockmap with user specified options. This patch setups a cgroup environment, similar to how it is done with the auto test suite, when the user does not provide a cgroup arg. Signed-off-by: John Fastabend <john.fastabend@gmail.com> --- tools/testing/selftests/bpf/test_sockmap.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-)