It is handy during testing and/or debugging to be able to run a single test from test_memcontrol. Allow passing in a test name through a command line argument (e.g. ./test_memcontrol -t test_memcg_recharge).
Change-Id: I0e0d74d81fdd9d997987389085a816715160467f Signed-off-by: Yosry Ahmed yosryahmed@google.com --- .../selftests/cgroup/test_memcontrol.c | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+)
diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c index a2a90f4bfe9f..d8f8a13bc6c4 100644 --- a/tools/testing/selftests/cgroup/test_memcontrol.c +++ b/tools/testing/selftests/cgroup/test_memcontrol.c @@ -1308,9 +1308,36 @@ struct memcg_test {
int main(int argc, char **argv) { + int opt; char root[PATH_MAX]; + int selected_test = -1; int i, proc_status, ret = EXIT_SUCCESS;
+ while ((opt = getopt(argc, argv, "ht:")) != -1) { + switch (opt) { + case 't': + for (i = 0; i < ARRAY_SIZE(tests); i++) { + if (!strcmp(tests[i].name, optarg)) { + selected_test = i; + break; + } + } + if (selected_test >= 0) + break; + fprintf(stderr, "test %s not found\n", optarg); + return EXIT_FAILURE; + case 'h': + fprintf(stderr, + "Usage: %s [-h] [-t name]\n" + "\t-h print help\n" + "\t-t name run specific test\n" + , argv[0]); + return ret; + default: + break; + } + } + if (cg_find_unified_root(root, sizeof(root))) ksft_exit_skip("cgroup v2 isn't mounted\n");
@@ -1336,6 +1363,9 @@ int main(int argc, char **argv) has_localevents = proc_status;
for (i = 0; i < ARRAY_SIZE(tests); i++) { + if (selected_test >= 0 && selected_test != i) + continue; + switch (tests[i].fn(root)) { case KSFT_PASS: ksft_test_result_pass("%s\n", tests[i].name);
On Sun, Jun 18, 2023 at 10:17 PM Yosry Ahmed yosryahmed@google.com wrote:
It is handy during testing and/or debugging to be able to run a single test from test_memcontrol. Allow passing in a test name through a command line argument (e.g. ./test_memcontrol -t test_memcg_recharge).
Change-Id: I0e0d74d81fdd9d997987389085a816715160467f
I missed removing this gerrit tag, sorry. Will fix it if/when I respin.
Signed-off-by: Yosry Ahmed yosryahmed@google.com
.../selftests/cgroup/test_memcontrol.c | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+)
diff --git a/tools/testing/selftests/cgroup/test_memcontrol.c b/tools/testing/selftests/cgroup/test_memcontrol.c index a2a90f4bfe9f..d8f8a13bc6c4 100644 --- a/tools/testing/selftests/cgroup/test_memcontrol.c +++ b/tools/testing/selftests/cgroup/test_memcontrol.c @@ -1308,9 +1308,36 @@ struct memcg_test {
int main(int argc, char **argv) {
int opt; char root[PATH_MAX];int selected_test = -1; int i, proc_status, ret = EXIT_SUCCESS;while ((opt = getopt(argc, argv, "ht:")) != -1) {switch (opt) {case 't':for (i = 0; i < ARRAY_SIZE(tests); i++) {if (!strcmp(tests[i].name, optarg)) {selected_test = i;break;}}if (selected_test >= 0)break;fprintf(stderr, "test %s not found\n", optarg);return EXIT_FAILURE;case 'h':fprintf(stderr,"Usage: %s [-h] [-t name]\n""\t-h print help\n""\t-t name run specific test\n", argv[0]);return ret;default:break;}}if (cg_find_unified_root(root, sizeof(root))) ksft_exit_skip("cgroup v2 isn't mounted\n");@@ -1336,6 +1363,9 @@ int main(int argc, char **argv) has_localevents = proc_status;
for (i = 0; i < ARRAY_SIZE(tests); i++) {
if (selected_test >= 0 && selected_test != i)continue;switch (tests[i].fn(root)) { case KSFT_PASS: ksft_test_result_pass("%s\n", tests[i].name);-- 2.41.0.162.gfafddb0af9-goog
linux-kselftest-mirror@lists.linaro.org