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