diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/perf/tests/parse-events.c | 62 | 
1 files changed, 62 insertions, 0 deletions
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c index 294ffddfbf4..e7eb708da32 100644 --- a/tools/perf/tests/parse-events.c +++ b/tools/perf/tests/parse-events.c @@ -3,6 +3,7 @@  #include "evsel.h"  #include "evlist.h"  #include "sysfs.h" +#include "debugfs.h"  #include "tests.h"  #include <linux/hw_breakpoint.h> @@ -782,6 +783,63 @@ static int test__group5(struct perf_evlist *evlist __maybe_unused)  	return 0;  } +static int count_tracepoints(void) +{ +	char events_path[PATH_MAX]; +	struct dirent *events_ent; +	DIR *events_dir; +	int cnt = 0; + +	scnprintf(events_path, PATH_MAX, "%s/tracing/events", +		  debugfs_find_mountpoint()); + +	events_dir = opendir(events_path); + +	TEST_ASSERT_VAL("Can't open events dir", events_dir); + +	while ((events_ent = readdir(events_dir))) { +		char sys_path[PATH_MAX]; +		struct dirent *sys_ent; +		DIR *sys_dir; + +		if (!strcmp(events_ent->d_name, ".") +		    || !strcmp(events_ent->d_name, "..") +		    || !strcmp(events_ent->d_name, "enable") +		    || !strcmp(events_ent->d_name, "header_event") +		    || !strcmp(events_ent->d_name, "header_page")) +			continue; + +		scnprintf(sys_path, PATH_MAX, "%s/%s", +			  events_path, events_ent->d_name); + +		sys_dir = opendir(sys_path); +		TEST_ASSERT_VAL("Can't open sys dir", sys_dir); + +		while ((sys_ent = readdir(sys_dir))) { +			if (!strcmp(sys_ent->d_name, ".") +			    || !strcmp(sys_ent->d_name, "..") +			    || !strcmp(sys_ent->d_name, "enable") +			    || !strcmp(sys_ent->d_name, "filter")) +				continue; + +			cnt++; +		} + +		closedir(sys_dir); +	} + +	closedir(events_dir); +	return cnt; +} + +static int test__all_tracepoints(struct perf_evlist *evlist) +{ +	TEST_ASSERT_VAL("wrong events count", +			count_tracepoints() == evlist->nr_entries); + +	return test__checkevent_tracepoint_multi(evlist); +} +  struct test__event_st {  	const char *name;  	__u32 type; @@ -921,6 +979,10 @@ static struct test__event_st test__events[] = {  		.name  = "{cycles,instructions}:G,{cycles:G,instructions:G},cycles",  		.check = test__group5,  	}, +	[33] = { +		.name  = "*:*", +		.check = test__all_tracepoints, +	},  };  static struct test__event_st test__events_pmu[] = {  |