lkml.org 
[lkml]   [2015]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/5] perf test: Print result for each subtest for BPF
    Date
    This patch prints each sub-tests results for BPF testcases.

    Before:

    # ./perf test BPF
    37: Test BPF filter : Ok

    After:

    # ./perf test BPF
    37: Test BPF filter :
    37.1: Test basic BPF filtering : Ok
    37.2: Test BPF prologue generation : Ok

    When failure:

    # cat ~/.perfconfig
    [llvm]
    clang-path = "/bin/false"
    # ./perf test BPF
    37: Test BPF filter :
    37.1: Test basic BPF filtering : Skip
    37.2: Test BPF prologue generation : Skip

    Signed-off-by: Wang Nan <wangnan0@huawei.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/perf/tests/bpf.c | 38 ++++++++++++++++++++++++++++----------
    tools/perf/tests/builtin-test.c | 8 +++++++-
    tools/perf/tests/tests.h | 5 ++++-
    3 files changed, 39 insertions(+), 12 deletions(-)

    diff --git a/tools/perf/tests/bpf.c b/tools/perf/tests/bpf.c
    index dca3998..8c2262d 100644
    --- a/tools/perf/tests/bpf.c
    +++ b/tools/perf/tests/bpf.c
    @@ -215,28 +215,46 @@ out:
    return ret;
    }

    -int test__bpf(void)
    +int test__bpf_subtest_get_nr(void)
    +{
    + return (int)ARRAY_SIZE(bpf_testcase_table);
    +}
    +
    +const char *test__bpf_subtest_get_desc(int i)
    +{
    + if (i < 0 || i >= (int)ARRAY_SIZE(bpf_testcase_table))
    + return NULL;
    + return bpf_testcase_table[i].desc;
    +}
    +
    +int test__bpf_subtest(int i)
    {
    - unsigned int i;
    int err;

    + if (i < 0 || i >= (int)ARRAY_SIZE(bpf_testcase_table))
    + return TEST_FAIL;
    +
    if (geteuid() != 0) {
    pr_debug("Only root can run BPF test\n");
    return TEST_SKIP;
    }

    - for (i = 0; i < ARRAY_SIZE(bpf_testcase_table); i++) {
    - err = __test__bpf(i);
    + err = __test__bpf(i);
    + return err;
    +}

    - if (err != TEST_OK)
    - return err;
    - }
    +#else
    +int test__bpf_subtest_get_nr(void)
    +{
    + return 0;
    +}

    - return TEST_OK;
    +const char *test__bpf_subtest_get_desc(int i __maybe_unused)
    +{
    + return NULL;
    }

    -#else
    -int test__bpf(void)
    +int test__bpf_subtest(int i __maybe_unused)
    {
    pr_debug("Skip BPF test because BPF support is not compiled\n");
    return TEST_SKIP;
    diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
    index 29225142..9914412 100644
    --- a/tools/perf/tests/builtin-test.c
    +++ b/tools/perf/tests/builtin-test.c
    @@ -173,7 +173,13 @@ static struct test generic_tests[] = {
    },
    {
    .desc = "Test BPF filter",
    - .func = test__bpf,
    + .need_subtests = true,
    + .subtest = {
    + .skip_if_fail = true,
    + .get_nr = test__bpf_subtest_get_nr,
    + .get_desc = test__bpf_subtest_get_desc,
    + .func = test__bpf_subtest,
    + },
    },
    {
    .func = NULL,
    diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h
    index f8f9eb6..2ce66b2 100644
    --- a/tools/perf/tests/tests.h
    +++ b/tools/perf/tests/tests.h
    @@ -84,7 +84,10 @@ const char *test__llvm_subtest_get_desc(int i);
    int test__llvm_subtest_get_nr(void);
    int test__llvm_subtest(int i);

    -int test__bpf(void);
    +const char *test__bpf_subtest_get_desc(int i);
    +int test__bpf_subtest_get_nr(void);
    +int test__bpf_subtest(int i);
    +
    int test_session_topology(void);

    #if defined(__arm__) || defined(__aarch64__)
    --
    1.8.3.4


    \
     
     \ /
      Last update: 2015-11-17 10:01    [W:4.030 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site