Re: [PATCH 1/7] perf test: Skip reason for suites with 1 test

From: Ian Rogers
Date: Fri May 13 2022 - 11:42:47 EST


On Fri, May 13, 2022 at 8:29 AM John Garry <john.garry@xxxxxxxxxx> wrote:
>
> On 13/05/2022 05:05, Ian Rogers wrote:
> > When a suite has just 1 subtest, the subtest number is given as -1 to
> > avoid indented printing. When this subtest number is seen for the skip
> > reason, use the reason of the first test.
> >
> > Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
> > ---
> > tools/perf/tests/builtin-test.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
> > index fac3717d9ba1..33fcafa0fa79 100644
> > --- a/tools/perf/tests/builtin-test.c
> > +++ b/tools/perf/tests/builtin-test.c
> > @@ -137,10 +137,10 @@ static bool has_subtests(const struct test_suite *t)
> >
> > static const char *skip_reason(const struct test_suite *t, int subtest)
> > {
> > - if (t->test_cases && subtest >= 0)
> > - return t->test_cases[subtest].skip_reason;
> > + if (!t->test_cases)
> > + return NULL;
> >
> > - return NULL;
> > + return t->test_cases[subtest >= 0 ? subtest : 0].skip_reason;
> > }
>
> I was not sure which suite has a single tastcase, so I experimented for
> libpfm4 by deleting a testcase so it has only 1x remaining, I get:
>
> before your change:
> john@localhost:~/acme/tools/perf> sudo ./perf test 63
> 63: Test libpfm4 support : Skip
>
> after:
>
> john@localhost:~/acme/tools/perf> sudo ./perf test 63
> 63: Test libpfm4 support : Skip (not compiled in)
>
> Although it is odd to have a single sub-test, is there a reason for
> which we don't print its name? We print the name when there are multiple
> sub-tests.

The reason was to replicate the existing "perf test" behavior before
the kunit style transition. The main place we get tests with a single
sub-test is from the DEFINE_SUITE macro:
https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git/tree/tools/perf/tests/tests.h?h=perf/core#n67
I agree it looks kind of weird and was inheriting the data structures
from kunit and the format of the output from perf test.

Thanks,
Ian

> Thanks,
> John