Message ID | 20241218-test-vsock-leaks-v3-2-f1a4dcef9228@rbox.co (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | vsock/test: Tests for memory leaks | expand |
On Wed, Dec 18, 2024 at 03:32:35PM +0100, Michal Luczaj wrote: >Allow for selecting specific test IDs to be executed. > >Signed-off-by: Michal Luczaj <mhal@rbox.co> >--- > tools/testing/vsock/util.c | 29 +++++++++++++++++++++++++++-- > tools/testing/vsock/util.h | 2 ++ > tools/testing/vsock/vsock_test.c | 11 +++++++++++ > 3 files changed, 40 insertions(+), 2 deletions(-) Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> > >diff --git a/tools/testing/vsock/util.c b/tools/testing/vsock/util.c >index 34e9dac0a105f8aeb8c9af379b080d5ce8cb2782..81b9a31059d8173a47ea87324da50e7aedd7308a 100644 >--- a/tools/testing/vsock/util.c >+++ b/tools/testing/vsock/util.c >@@ -486,8 +486,7 @@ void list_tests(const struct test_case *test_cases) > exit(EXIT_FAILURE); > } > >-void skip_test(struct test_case *test_cases, size_t test_cases_len, >- const char *test_id_str) >+static unsigned long parse_test_id(const char *test_id_str, size_t test_cases_len) > { > unsigned long test_id; > char *endptr = NULL; >@@ -505,9 +504,35 @@ void skip_test(struct test_case *test_cases, size_t test_cases_len, > exit(EXIT_FAILURE); > } > >+ return test_id; >+} >+ >+void skip_test(struct test_case *test_cases, size_t test_cases_len, >+ const char *test_id_str) >+{ >+ unsigned long test_id = parse_test_id(test_id_str, test_cases_len); > test_cases[test_id].skip = true; > } > >+void pick_test(struct test_case *test_cases, size_t test_cases_len, >+ const char *test_id_str) >+{ >+ static bool skip_all = true; >+ unsigned long test_id; >+ >+ if (skip_all) { >+ unsigned long i; >+ >+ for (i = 0; i < test_cases_len; ++i) >+ test_cases[i].skip = true; >+ >+ skip_all = false; >+ } >+ >+ test_id = parse_test_id(test_id_str, test_cases_len); >+ test_cases[test_id].skip = false; >+} >+ > unsigned long hash_djb2(const void *data, size_t len) > { > unsigned long hash = 5381; >diff --git a/tools/testing/vsock/util.h b/tools/testing/vsock/util.h >index ba84d296d8b71e1bcba2abdad337e07aac45e75e..e62f46b2b92a7916e83e1e623b43c811b077db3e 100644 >--- a/tools/testing/vsock/util.h >+++ b/tools/testing/vsock/util.h >@@ -62,6 +62,8 @@ void run_tests(const struct test_case *test_cases, > void list_tests(const struct test_case *test_cases); > void skip_test(struct test_case *test_cases, size_t test_cases_len, > const char *test_id_str); >+void pick_test(struct test_case *test_cases, size_t test_cases_len, >+ const char *test_id_str); > unsigned long hash_djb2(const void *data, size_t len); > size_t iovec_bytes(const struct iovec *iov, size_t iovnum); > unsigned long iovec_hash_djb2(const struct iovec *iov, size_t iovnum); >diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_test.c >index 38fd8d96eb83ef1bd45728cfaac6adb3c1e07cfe..8bb2ab41c55f5c4d76e89903f80411915296c44e 100644 >--- a/tools/testing/vsock/vsock_test.c >+++ b/tools/testing/vsock/vsock_test.c >@@ -1644,6 +1644,11 @@ static const struct option longopts[] = { > .has_arg = required_argument, > .val = 's', > }, >+ { >+ .name = "pick", >+ .has_arg = required_argument, >+ .val = 't', >+ }, > { > .name = "help", > .has_arg = no_argument, >@@ -1681,6 +1686,8 @@ static void usage(void) > " --peer-cid <cid> CID of the other side\n" > " --peer-port <port> AF_VSOCK port used for the test [default: %d]\n" > " --list List of tests that will be executed\n" >+ " --pick <test_id> Test ID to execute selectively;\n" >+ " use multiple --pick options to select more tests\n" > " --skip <test_id> Test ID to skip;\n" > " use multiple --skip options to skip more tests\n", > DEFAULT_PEER_PORT >@@ -1737,6 +1744,10 @@ int main(int argc, char **argv) > skip_test(test_cases, ARRAY_SIZE(test_cases) - 1, > optarg); > break; >+ case 't': >+ pick_test(test_cases, ARRAY_SIZE(test_cases) - 1, >+ optarg); >+ break; > case '?': > default: > usage(); > >-- >2.47.1 >
diff --git a/tools/testing/vsock/util.c b/tools/testing/vsock/util.c index 34e9dac0a105f8aeb8c9af379b080d5ce8cb2782..81b9a31059d8173a47ea87324da50e7aedd7308a 100644 --- a/tools/testing/vsock/util.c +++ b/tools/testing/vsock/util.c @@ -486,8 +486,7 @@ void list_tests(const struct test_case *test_cases) exit(EXIT_FAILURE); } -void skip_test(struct test_case *test_cases, size_t test_cases_len, - const char *test_id_str) +static unsigned long parse_test_id(const char *test_id_str, size_t test_cases_len) { unsigned long test_id; char *endptr = NULL; @@ -505,9 +504,35 @@ void skip_test(struct test_case *test_cases, size_t test_cases_len, exit(EXIT_FAILURE); } + return test_id; +} + +void skip_test(struct test_case *test_cases, size_t test_cases_len, + const char *test_id_str) +{ + unsigned long test_id = parse_test_id(test_id_str, test_cases_len); test_cases[test_id].skip = true; } +void pick_test(struct test_case *test_cases, size_t test_cases_len, + const char *test_id_str) +{ + static bool skip_all = true; + unsigned long test_id; + + if (skip_all) { + unsigned long i; + + for (i = 0; i < test_cases_len; ++i) + test_cases[i].skip = true; + + skip_all = false; + } + + test_id = parse_test_id(test_id_str, test_cases_len); + test_cases[test_id].skip = false; +} + unsigned long hash_djb2(const void *data, size_t len) { unsigned long hash = 5381; diff --git a/tools/testing/vsock/util.h b/tools/testing/vsock/util.h index ba84d296d8b71e1bcba2abdad337e07aac45e75e..e62f46b2b92a7916e83e1e623b43c811b077db3e 100644 --- a/tools/testing/vsock/util.h +++ b/tools/testing/vsock/util.h @@ -62,6 +62,8 @@ void run_tests(const struct test_case *test_cases, void list_tests(const struct test_case *test_cases); void skip_test(struct test_case *test_cases, size_t test_cases_len, const char *test_id_str); +void pick_test(struct test_case *test_cases, size_t test_cases_len, + const char *test_id_str); unsigned long hash_djb2(const void *data, size_t len); size_t iovec_bytes(const struct iovec *iov, size_t iovnum); unsigned long iovec_hash_djb2(const struct iovec *iov, size_t iovnum); diff --git a/tools/testing/vsock/vsock_test.c b/tools/testing/vsock/vsock_test.c index 38fd8d96eb83ef1bd45728cfaac6adb3c1e07cfe..8bb2ab41c55f5c4d76e89903f80411915296c44e 100644 --- a/tools/testing/vsock/vsock_test.c +++ b/tools/testing/vsock/vsock_test.c @@ -1644,6 +1644,11 @@ static const struct option longopts[] = { .has_arg = required_argument, .val = 's', }, + { + .name = "pick", + .has_arg = required_argument, + .val = 't', + }, { .name = "help", .has_arg = no_argument, @@ -1681,6 +1686,8 @@ static void usage(void) " --peer-cid <cid> CID of the other side\n" " --peer-port <port> AF_VSOCK port used for the test [default: %d]\n" " --list List of tests that will be executed\n" + " --pick <test_id> Test ID to execute selectively;\n" + " use multiple --pick options to select more tests\n" " --skip <test_id> Test ID to skip;\n" " use multiple --skip options to skip more tests\n", DEFAULT_PEER_PORT @@ -1737,6 +1744,10 @@ int main(int argc, char **argv) skip_test(test_cases, ARRAY_SIZE(test_cases) - 1, optarg); break; + case 't': + pick_test(test_cases, ARRAY_SIZE(test_cases) - 1, + optarg); + break; case '?': default: usage();
Allow for selecting specific test IDs to be executed. Signed-off-by: Michal Luczaj <mhal@rbox.co> --- tools/testing/vsock/util.c | 29 +++++++++++++++++++++++++++-- tools/testing/vsock/util.h | 2 ++ tools/testing/vsock/vsock_test.c | 11 +++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-)