Skip to contentSkip to conversation

perf test: Make 'list' use same filtering code as main 'perf test'

tip:perf/core tip-bot for Arnaldo Carvalho de Melo 1 participant 1 message Aug 14, 2017 perf events

lore
Share & tools
lore
#0 lore raw
Commit-ID:  6d02acc1918094de12f885b35db9477e579b6bd0
Gitweb:     http://git.kernel.org/tip/6d02acc1918094de12f885b35db9477e579b6bd0
Author:     Arnaldo Carvalho de Melo <[email protected]>
AuthorDate: Fri, 4 Aug 2017 11:16:40 -0300
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Fri, 11 Aug 2017 16:06:27 -0300

perf test: Make 'list' use same filtering code as main 'perf test'

Before:

  # perf test Synth
  39: Synthesize thread map  : Ok
  41: Synthesize cpu map     : Ok
  42: Synthesize stat config : Ok
  43: Synthesize stat        : Ok
  44: Synthesize stat round  : Ok
  45: Synthesize attr update : Ok
  # perf test list Synth
  #

After:

  # perf test Synth
  39: Synthesize thread map  : Ok
  41: Synthesize cpu map     : Ok
  42: Synthesize stat config : Ok
  43: Synthesize stat        : Ok
  44: Synthesize stat round  : Ok
  45: Synthesize attr update : Ok
  # perf test list Synth
  39: Synthesize thread map
  41: Synthesize cpu map
  42: Synthesize stat config
  43: Synthesize stat
  44: Synthesize stat round
  45: Synthesize attr update
  #
---
 tools/perf/tests/builtin-test.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)
tools/perf/tests/builtin-test.c +10 -8
index 2bd158e..9ecc44e 100644
@@ -609,15 +609,16 @@ static int perf_test__list_shell(int argc, const char **argv, int i)
 		return -1;
 
 	for_each_shell_test(dir, ent) {
+		int curr = i++;
 		char bf[256];
-		const char *desc = shell_test__description(bf, sizeof(bf), path, ent->d_name);
-
-		++i;
+		struct test t = {
+			.desc = shell_test__description(bf, sizeof(bf), path, ent->d_name),
+		};
 
-		if (argc > 1 && !strstr(desc, argv[1]))
+		if (!perf_test__matches(&t, curr, argc, argv))
 			continue;
 
-		pr_info("%2d: %s\n", i, desc);
+		pr_info("%2d: %s\n", i, t.desc);
 	}
 
 	closedir(dir);
@@ -631,9 +632,10 @@ static int perf_test__list(int argc, const char **argv)
 	int i = 0;
 
 	for_each_test(j, t) {
-		++i;
+		int curr = i++;
 
-		if (argc > 1 && !strstr(t->desc, argv[1]))
+		if (!perf_test__matches(t, curr, argc, argv) ||
+		    (t->is_supported && !t->is_supported()))
 			continue;
 
 		pr_info("%2d: %s\n", i, t->desc);
@@ -668,7 +670,7 @@ int cmd_test(int argc, const char **argv)
 
 	argc = parse_options_subcommand(argc, argv, test_options, test_subcommands, test_usage, 0);
 	if (argc >= 1 && !strcmp(argv[0], "list"))
-		return perf_test__list(argc, argv);
+		return perf_test__list(argc - 1, argv + 1);
 
 	symbol_conf.priv_size = sizeof(int);
 	symbol_conf.sort_by_name = true;