diff options
Diffstat (limited to 'tools/perf/tests/parse-events.c')
| -rw-r--r-- | tools/perf/tests/parse-events.c | 260 | 
1 files changed, 187 insertions, 73 deletions
diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c index f78be21a5999..fbdf710d5eea 100644 --- a/tools/perf/tests/parse-events.c +++ b/tools/perf/tests/parse-events.c @@ -162,6 +162,22 @@ static int test__checkevent_numeric(struct evlist *evlist)  	return TEST_OK;  } + +static int assert_hw(struct perf_evsel *evsel, enum perf_hw_id id, const char *name) +{ +	struct perf_pmu *pmu; + +	if (evsel->attr.type == PERF_TYPE_HARDWARE) { +		TEST_ASSERT_VAL("wrong config", test_perf_config(evsel, id)); +		return 0; +	} +	pmu = perf_pmus__find_by_type(evsel->attr.type); + +	TEST_ASSERT_VAL("unexpected PMU type", pmu); +	TEST_ASSERT_VAL("PMU missing event", perf_pmu__have_event(pmu, name)); +	return 0; +} +  static int test__checkevent_symbolic_name(struct evlist *evlist)  {  	struct perf_evsel *evsel; @@ -169,10 +185,12 @@ static int test__checkevent_symbolic_name(struct evlist *evlist)  	TEST_ASSERT_VAL("wrong number of entries", 0 != evlist->core.nr_entries);  	perf_evlist__for_each_evsel(&evlist->core, evsel) { -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); -		TEST_ASSERT_VAL("wrong config", -				test_perf_config(evsel, PERF_COUNT_HW_INSTRUCTIONS)); +		int ret = assert_hw(evsel, PERF_COUNT_HW_INSTRUCTIONS, "instructions"); + +		if (ret) +			return ret;  	} +  	return TEST_OK;  } @@ -183,8 +201,10 @@ static int test__checkevent_symbolic_name_config(struct evlist *evlist)  	TEST_ASSERT_VAL("wrong number of entries", 0 != evlist->core.nr_entries);  	perf_evlist__for_each_evsel(&evlist->core, evsel) { -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->attr.type); -		TEST_ASSERT_VAL("wrong config", test_perf_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		int ret = assert_hw(evsel, PERF_COUNT_HW_CPU_CYCLES, "cycles"); + +		if (ret) +			return ret;  		/*  		 * The period value gets configured within evlist__config,  		 * while this test executes only parse events method. @@ -861,10 +881,14 @@ static int test__group1(struct evlist *evlist)  			evlist__nr_groups(evlist) == num_core_entries());  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* instructions:k */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_INSTRUCTIONS, "instructions"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -878,8 +902,10 @@ static int test__group1(struct evlist *evlist)  		/* cycles:upp */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -907,6 +933,8 @@ static int test__group2(struct evlist *evlist)  	TEST_ASSERT_VAL("wrong number of groups", 1 == evlist__nr_groups(evlist));  	evlist__for_each_entry(evlist, evsel) { +		int ret; +  		if (evsel->core.attr.type == PERF_TYPE_SOFTWARE) {  			/* faults + :ku modifier */  			leader = evsel; @@ -939,8 +967,10 @@ static int test__group2(struct evlist *evlist)  			continue;  		}  		/* cycles:k */ -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -957,6 +987,7 @@ static int test__group2(struct evlist *evlist)  static int test__group3(struct evlist *evlist __maybe_unused)  {  	struct evsel *evsel, *group1_leader = NULL, *group2_leader = NULL; +	int ret;  	TEST_ASSERT_VAL("wrong number of entries",  			evlist->core.nr_entries == (3 * perf_pmus__num_core_pmus() + 2)); @@ -1045,8 +1076,10 @@ static int test__group3(struct evlist *evlist __maybe_unused)  			continue;  		}  		/* instructions:u */ -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_INSTRUCTIONS, "instructions"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1070,10 +1103,14 @@ static int test__group4(struct evlist *evlist __maybe_unused)  			num_core_entries() == evlist__nr_groups(evlist));  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* cycles:u + p */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1089,8 +1126,10 @@ static int test__group4(struct evlist *evlist __maybe_unused)  		/* instructions:kp + p */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_INSTRUCTIONS, "instructions"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1108,6 +1147,7 @@ static int test__group4(struct evlist *evlist __maybe_unused)  static int test__group5(struct evlist *evlist __maybe_unused)  {  	struct evsel *evsel = NULL, *leader; +	int ret;  	TEST_ASSERT_VAL("wrong number of entries",  			evlist->core.nr_entries == (5 * num_core_entries())); @@ -1117,8 +1157,10 @@ static int test__group5(struct evlist *evlist __maybe_unused)  	for (int i = 0; i < num_core_entries(); i++) {  		/* cycles + G */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1133,8 +1175,10 @@ static int test__group5(struct evlist *evlist __maybe_unused)  		/* instructions + G */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_INSTRUCTIONS, "instructions"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1148,8 +1192,10 @@ static int test__group5(struct evlist *evlist __maybe_unused)  	for (int i = 0; i < num_core_entries(); i++) {  		/* cycles:G */  		evsel = leader = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1164,8 +1210,10 @@ static int test__group5(struct evlist *evlist __maybe_unused)  		/* instructions:G */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_INSTRUCTIONS, "instructions"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1178,8 +1226,10 @@ static int test__group5(struct evlist *evlist __maybe_unused)  	for (int i = 0; i < num_core_entries(); i++) {  		/* cycles */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1201,10 +1251,14 @@ static int test__group_gh1(struct evlist *evlist)  			evlist__nr_groups(evlist) == num_core_entries());  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* cycles + :H group modifier */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1218,8 +1272,10 @@ static int test__group_gh1(struct evlist *evlist)  		/* cache-misses:G + :H group modifier */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CACHE_MISSES, "cache-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1242,10 +1298,14 @@ static int test__group_gh2(struct evlist *evlist)  			evlist__nr_groups(evlist) == num_core_entries());  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* cycles + :G group modifier */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1259,8 +1319,10 @@ static int test__group_gh2(struct evlist *evlist)  		/* cache-misses:H + :G group modifier */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CACHE_MISSES, "cache-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1283,10 +1345,14 @@ static int test__group_gh3(struct evlist *evlist)  			evlist__nr_groups(evlist) == num_core_entries());  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* cycles:G + :u group modifier */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1300,8 +1366,10 @@ static int test__group_gh3(struct evlist *evlist)  		/* cache-misses:H + :u group modifier */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CACHE_MISSES, "cache-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1324,10 +1392,14 @@ static int test__group_gh4(struct evlist *evlist)  			evlist__nr_groups(evlist) == num_core_entries());  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* cycles:G + :uG group modifier */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1341,8 +1413,10 @@ static int test__group_gh4(struct evlist *evlist)  		/* cache-misses:H + :uG group modifier */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CACHE_MISSES, "cache-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1363,10 +1437,14 @@ static int test__leader_sample1(struct evlist *evlist)  			evlist->core.nr_entries == (3 * num_core_entries()));  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* cycles - sampling group leader */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1379,8 +1457,10 @@ static int test__leader_sample1(struct evlist *evlist)  		/* cache-misses - not sampling */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CACHE_MISSES, "cache-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1392,8 +1472,10 @@ static int test__leader_sample1(struct evlist *evlist)  		/* branch-misses - not sampling */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_BRANCH_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_BRANCH_MISSES, "branch-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -1415,10 +1497,14 @@ static int test__leader_sample2(struct evlist *evlist __maybe_unused)  			evlist->core.nr_entries == (2 * num_core_entries()));  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* instructions - sampling group leader */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_INSTRUCTIONS)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_INSTRUCTIONS, "instructions"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1431,8 +1517,10 @@ static int test__leader_sample2(struct evlist *evlist __maybe_unused)  		/* branch-misses - not sampling */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_BRANCH_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_BRANCH_MISSES, "branch-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user);  		TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  		TEST_ASSERT_VAL("wrong exclude_hv", evsel->core.attr.exclude_hv); @@ -1472,10 +1560,14 @@ static int test__pinned_group(struct evlist *evlist)  			evlist->core.nr_entries == (3 * num_core_entries()));  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* cycles - group leader */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong group name", !evsel->group_name);  		TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));  		/* TODO: The group modifier is not copied to the split group leader. */ @@ -1484,13 +1576,18 @@ static int test__pinned_group(struct evlist *evlist)  		/* cache-misses - can not be pinned, but will go on with the leader */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CACHE_MISSES, "cache-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong pinned", !evsel->core.attr.pinned);  		/* branch-misses - ditto */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_BRANCH_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_BRANCH_MISSES, "branch-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong pinned", !evsel->core.attr.pinned);  	}  	return TEST_OK; @@ -1517,10 +1614,14 @@ static int test__exclusive_group(struct evlist *evlist)  			evlist->core.nr_entries == 3 * num_core_entries());  	for (int i = 0; i < num_core_entries(); i++) { +		int ret; +  		/* cycles - group leader */  		evsel = leader = (i == 0 ? evlist__first(evlist) : evsel__next(evsel)); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong group name", !evsel->group_name);  		TEST_ASSERT_VAL("wrong leader", evsel__has_leader(evsel, leader));  		/* TODO: The group modifier is not copied to the split group leader. */ @@ -1529,13 +1630,18 @@ static int test__exclusive_group(struct evlist *evlist)  		/* cache-misses - can not be pinned, but will go on with the leader */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong type", PERF_TYPE_HARDWARE == evsel->core.attr.type); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CACHE_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_CACHE_MISSES, "cache-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclusive", !evsel->core.attr.exclusive);  		/* branch-misses - ditto */  		evsel = evsel__next(evsel); -		TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_BRANCH_MISSES)); +		ret = assert_hw(&evsel->core, PERF_COUNT_HW_BRANCH_MISSES, "branch-misses"); +		if (ret) +			return ret; +  		TEST_ASSERT_VAL("wrong exclusive", !evsel->core.attr.exclusive);  	}  	return TEST_OK; @@ -1677,9 +1783,11 @@ static int test__checkevent_raw_pmu(struct evlist *evlist)  static int test__sym_event_slash(struct evlist *evlist)  {  	struct evsel *evsel = evlist__first(evlist); +	int ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); + +	if (ret) +		return ret; -	TEST_ASSERT_VAL("wrong type", evsel->core.attr.type == PERF_TYPE_HARDWARE); -	TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));  	TEST_ASSERT_VAL("wrong exclude_kernel", evsel->core.attr.exclude_kernel);  	return TEST_OK;  } @@ -1687,9 +1795,11 @@ static int test__sym_event_slash(struct evlist *evlist)  static int test__sym_event_dc(struct evlist *evlist)  {  	struct evsel *evsel = evlist__first(evlist); +	int ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); + +	if (ret) +		return ret; -	TEST_ASSERT_VAL("wrong type", evsel->core.attr.type == PERF_TYPE_HARDWARE); -	TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));  	TEST_ASSERT_VAL("wrong exclude_user", evsel->core.attr.exclude_user);  	return TEST_OK;  } @@ -1697,9 +1807,11 @@ static int test__sym_event_dc(struct evlist *evlist)  static int test__term_equal_term(struct evlist *evlist)  {  	struct evsel *evsel = evlist__first(evlist); +	int ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); + +	if (ret) +		return ret; -	TEST_ASSERT_VAL("wrong type", evsel->core.attr.type == PERF_TYPE_HARDWARE); -	TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));  	TEST_ASSERT_VAL("wrong name setting", strcmp(evsel->name, "name") == 0);  	return TEST_OK;  } @@ -1707,9 +1819,11 @@ static int test__term_equal_term(struct evlist *evlist)  static int test__term_equal_legacy(struct evlist *evlist)  {  	struct evsel *evsel = evlist__first(evlist); +	int ret = assert_hw(&evsel->core, PERF_COUNT_HW_CPU_CYCLES, "cycles"); + +	if (ret) +		return ret; -	TEST_ASSERT_VAL("wrong type", evsel->core.attr.type == PERF_TYPE_HARDWARE); -	TEST_ASSERT_VAL("wrong config", test_config(evsel, PERF_COUNT_HW_CPU_CYCLES));  	TEST_ASSERT_VAL("wrong name setting", strcmp(evsel->name, "l1d") == 0);  	return TEST_OK;  } @@ -2549,7 +2663,7 @@ static int test__pmu_events(struct test_suite *test __maybe_unused, int subtest  			if (strchr(ent->d_name, '.'))  				continue; -			/* exclude parametrized ones (name contains '?') */ +			/* exclude parameterized ones (name contains '?') */  			n = snprintf(pmu_event, sizeof(pmu_event), "%s%s", path, ent->d_name);  			if (n >= PATH_MAX) {  				pr_err("pmu event name crossed PATH_MAX(%d) size\n", PATH_MAX); @@ -2578,7 +2692,7 @@ static int test__pmu_events(struct test_suite *test __maybe_unused, int subtest  			fclose(file);  			if (is_event_parameterized == 1) { -				pr_debug("skipping parametrized PMU event: %s which contains ?\n", pmu_event); +				pr_debug("skipping parameterized PMU event: %s which contains ?\n", pmu_event);  				continue;  			}  |