Re: [PATCH v2 11/11] perf test: add expr test for pmu metrics

From: John Garry
Date: Thu Apr 23 2020 - 11:11:49 EST


On 23/04/2020 15:22, Ian Rogers wrote:
On Thu, Apr 23, 2020 at 4:29 AM Jiri Olsa <jolsa@xxxxxxxxxx> wrote:

On Wed, Apr 22, 2020 at 03:04:30PM -0700, Ian Rogers wrote:

SNIP

+
+static int pmu_tests(void)
+{
+ struct pmu_events_map *map;
+ struct pmu_event *pe;
+ int i, j, k;
+ const char **ids;
+ int idnum;
+ int ret = 0;
+ struct expr_parse_ctx ctx;
+ double result;
+
+ i = 0;
+ for (;;) {
+ map = &pmu_events_map[i++];
+ if (!map->table) {
+ map = NULL;
+ break;
+ }
+ j = 0;
+ for (;;) {
+ pe = &map->table[j++];
+ if (!pe->name && !pe->metric_group && !pe->metric_name)
+ break;
+ if (!pe->metric_expr)
+ continue;

so we go throught all the metrics for the current cpu
and test the parsing on them.. great!

It's not just the current CPU (such as skylake) it is every map
(skylake, cascade lake, etc), but this only works for the architecture
that jevents built.
If jevents built all architectures then this could check them as well.
Perhaps there should be a jevents test suite, but I think even then
this test has value.

note: there is test__pmu_events(), which verifies that some test events generated in pmu-events.c are as expected, and also verifies that we create PMU events aliases as expected (for those test events). Nothing is done for metrics, ATM.

Thanks,
John