Re: [RFC 00/14] perf tests: Check on subtest for user specified test

Jiri Olsa
2020-05-26T11:15:29Z

On Mon, May 25, 2020 at 11:23:00AM -0300, Arnaldo Carvalho de Melo wrote:
> Em Mon, May 25, 2020 at 12:42:05AM +0200, Jiri Olsa escreveu:
> > hi,
> > changes for using metric result in another metric seem
> > to change lot of core metric code, so it's better we
> > have some more tests before we do that.
> >
> > Sending as RFC as it's still alive and you guys might
> > have some other idea of how to do this.
> >
> > Also available in here:
> > git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
> > perf/fixes
>
> I applied the first three patches, will wait a bit for Ian and others to
> have some time to look at it, but one thing I thought was that instead
> of having parse_state->fake_pmu as a bool, you could have it as a
> pointer to the fake pmu, this way we would do away with that static
> thing in the middle of the parsing code.
>
> +static int check_id(const char *id)
> +{
> + struct parse_events_error error;
> + struct evlist *evlist;
> + int ret;
> +
> + /* Numbers are always valid. */
> + if (is_number(id))
> + return 0;
> +
> + evlist = evlist__new();
> + if (!evlist)
> + return -1;
> +
> + memset(&error, 0, sizeof(error));
> + ret = parse_events_fake(evlist, id, &error);
> + if (ret) {
> + pr_debug("str : %s\n", error.str);
> + pr_debug("help : %s\n", error.help);
> + pr_debug("first_str : %s\n", error.first_str);
> + pr_debug("first_help : %s\n", error.first_help);
> + }
> +
> + evlist__delete(evlist);
> + free(error.str);
> + free(error.help);
> + free(error.first_str);
> + free(error.first_help);
> + return ret;
> +}
>
>
> Would read:
>
> struct perf_pmu fake = { 0, };
> .
> .
> .
> ret = parse_events_fake_pmu(evlist, id, &fake, &error);

hi,

ok I'll check, but what I'd like to keep is to have the fake pmu
defined in just one place, I was initialy thinking to put it on
the list of pmus, but then it'd appear in other places we dont want,
like perf list ;-)

> .
> .
> .
>
>
> That also renames parse_events_fake() to parse_events_fake_pmu().

ok, thanks,
jirka