lkml.org 
[lkml]   [2021]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v6 19/26] perf tests: Add hybrid cases for 'Roundtrip evsel->name' test
    Date
    Since for one hw event, two hybrid events are created.

    For example,

    evsel->idx evsel__name(evsel)
    0 cycles
    1 cycles
    2 instructions
    3 instructions
    ...

    So for comparing the evsel name on hybrid, the evsel->idx
    needs to be divided by 2.

    # ./perf test 14
    14: Roundtrip evsel->name : Ok

    Signed-off-by: Jin Yao <yao.jin@linux.intel.com>
    ---
    v6:
    - No change.

    tools/perf/tests/evsel-roundtrip-name.c | 19 ++++++++++++-------
    1 file changed, 12 insertions(+), 7 deletions(-)

    diff --git a/tools/perf/tests/evsel-roundtrip-name.c b/tools/perf/tests/evsel-roundtrip-name.c
    index f7f3e5b4c180..b74cf80d1f10 100644
    --- a/tools/perf/tests/evsel-roundtrip-name.c
    +++ b/tools/perf/tests/evsel-roundtrip-name.c
    @@ -4,6 +4,7 @@
    #include "parse-events.h"
    #include "tests.h"
    #include "debug.h"
    +#include "pmu.h"
    #include <errno.h>
    #include <linux/kernel.h>

    @@ -62,7 +63,8 @@ static int perf_evsel__roundtrip_cache_name_test(void)
    return ret;
    }

    -static int __perf_evsel__name_array_test(const char *names[], int nr_names)
    +static int __perf_evsel__name_array_test(const char *names[], int nr_names,
    + int distance)
    {
    int i, err;
    struct evsel *evsel;
    @@ -82,9 +84,9 @@ static int __perf_evsel__name_array_test(const char *names[], int nr_names)

    err = 0;
    evlist__for_each_entry(evlist, evsel) {
    - if (strcmp(evsel__name(evsel), names[evsel->idx])) {
    + if (strcmp(evsel__name(evsel), names[evsel->idx / distance])) {
    --err;
    - pr_debug("%s != %s\n", evsel__name(evsel), names[evsel->idx]);
    + pr_debug("%s != %s\n", evsel__name(evsel), names[evsel->idx / distance]);
    }
    }

    @@ -93,18 +95,21 @@ static int __perf_evsel__name_array_test(const char *names[], int nr_names)
    return err;
    }

    -#define perf_evsel__name_array_test(names) \
    - __perf_evsel__name_array_test(names, ARRAY_SIZE(names))
    +#define perf_evsel__name_array_test(names, distance) \
    + __perf_evsel__name_array_test(names, ARRAY_SIZE(names), distance)

    int test__perf_evsel__roundtrip_name_test(struct test *test __maybe_unused, int subtest __maybe_unused)
    {
    int err = 0, ret = 0;

    - err = perf_evsel__name_array_test(evsel__hw_names);
    + if (perf_pmu__has_hybrid())
    + return perf_evsel__name_array_test(evsel__hw_names, 2);
    +
    + err = perf_evsel__name_array_test(evsel__hw_names, 1);
    if (err)
    ret = err;

    - err = __perf_evsel__name_array_test(evsel__sw_names, PERF_COUNT_SW_DUMMY + 1);
    + err = __perf_evsel__name_array_test(evsel__sw_names, PERF_COUNT_SW_DUMMY + 1, 1);
    if (err)
    ret = err;

    --
    2.17.1
    \
     
     \ /
      Last update: 2021-04-27 09:09    [W:4.135 / U:0.240 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site