Re: [PATCH] perf test: Fix metric parsing test

From: Jiri Olsa
Date: Thu Nov 19 2020 - 14:33:45 EST


On Thu, Nov 19, 2020 at 08:54:11PM +0530, Kajol Jain wrote:
> Commit e1c92a7fbbc5 ("perf tests: Add another metric parsing test")
> add another test for metric parsing. The test goes through all metrics
> compiled for arch within pmu events and try to parse them.
>
> Right now this test is failing in powerpc machine.
>
> Result in power9 platform:
>
> [command]# ./perf test 10
> 10: PMU events :
> 10.1: PMU event table sanity : Ok
> 10.2: PMU event map aliases : Ok
> 10.3: Parsing of PMU event table metrics : Skip (some metrics failed)
> 10.4: Parsing of PMU event table metrics with fake PMUs : FAILED!
>
> Issue is we are passing different runtime parameter value in "expr__find_other"
> and "expr__parse" function which is called from function `metric_parse_fake`.
> And because of this parsing of hv-24x7 metrics is failing.
>
> [command]# ./perf test 10 -vv
> .....
> hv_24x7/pm_mcs01_128b_rd_disp_port01,chip=1/ not found
> expr__parse failed
> test child finished with -1
> ---- end ----
> PMU events subtest 4: FAILED!
>
> This patch fix this issue and change runtime parameter value to '0' in
> expr__parse function.
>
> Result in power9 platform after this patch:
>
> [command]# ./perf test 10
> 10: PMU events :
> 10.1: PMU event table sanity : Ok
> 10.2: PMU event map aliases : Ok
> 10.3: Parsing of PMU event table metrics : Skip (some metrics failed)
> 10.4: Parsing of PMU event table metrics with fake PMUs : Ok
>
> Fixes: e1c92a7fbbc5 ("perf tests: Add another metric parsing test")
> Signed-off-by: Kajol Jain <kjain@xxxxxxxxxxxxx>

Acked-by: Jiri Olsa <jolsa@xxxxxxxxxx>

thanks,
jirka

> ---
> tools/perf/tests/pmu-events.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c
> index ad2b21591275..0ca6a5a53523 100644
> --- a/tools/perf/tests/pmu-events.c
> +++ b/tools/perf/tests/pmu-events.c
> @@ -575,7 +575,7 @@ static int metric_parse_fake(const char *str)
> }
> }
>
> - if (expr__parse(&result, &ctx, str, 1))
> + if (expr__parse(&result, &ctx, str, 0))
> pr_err("expr__parse failed\n");
> else
> ret = 0;
> --
> 2.27.0
>