[PATCH 2/3] perf test: Introduce '-w --list' to list the available workloads

From: Arnaldo Carvalho de Melo
Date: Fri Oct 11 2024 - 10:40:24 EST


From: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>

Using it:

$ perf test -w noplop
No workload found: noplop
$
$ perf test -w
Error: switch `w' requires a value
Usage: perf test [<options>] [{list <test-name-fragment>|[<test-name-fragments>|<test-numbers>]}]

-w, --workload <work>
workload to run for testing, use '-w --list' to list the available ones.
$
$ perf test -w --list
noploop
thloop
leafloop
sqrtloop
brstack
datasym
landlock
$

Would be good at some point to have a description in 'struct test_workload'.

Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx>
Cc: Ian Rogers <irogers@xxxxxxxxxx>
Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
Cc: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
---
tools/perf/tests/builtin-test.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
index 2201f7ed432ce9f2..f0d10d2dd0d40019 100644
--- a/tools/perf/tests/builtin-test.c
+++ b/tools/perf/tests/builtin-test.c
@@ -505,10 +505,26 @@ static int perf_test__list(int argc, const char **argv)
return 0;
}

+static int workloads__fprintf_list(FILE *fp)
+{
+ struct test_workload *twl;
+ int printed = 0;
+
+ workloads__for_each(twl)
+ printed += fprintf(fp, "%s\n", twl->name);
+
+ return printed;
+}
+
static int run_workload(const char *work, int argc, const char **argv)
{
struct test_workload *twl;

+ if (!strcmp(work, "--list")) {
+ workloads__fprintf_list(stdout);
+ return 0;
+ }
+
workloads__for_each(twl) {
if (!strcmp(twl->name, work))
return twl->func(argc, argv);
@@ -544,7 +560,7 @@ int cmd_test(int argc, const char **argv)
OPT_BOOLEAN('p', "parallel", &parallel, "Run the tests in parallel"),
OPT_BOOLEAN('S', "sequential", &sequential,
"Run the tests one after another rather than in parallel"),
- OPT_STRING('w', "workload", &workload, "work", "workload to run for testing"),
+ OPT_STRING('w', "workload", &workload, "work", "workload to run for testing, use '-w --list' to list the available ones."),
OPT_STRING(0, "dso", &dso_to_test, "dso", "dso to test"),
OPT_STRING(0, "objdump", &test_objdump_path, "path",
"objdump binary to use for disassembly and annotations"),
--
2.47.0