Commit 77a0cf68 authored by Wang Nan's avatar Wang Nan Committed by Arnaldo Carvalho de Melo

perf test: Print result for each BPF subtest

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 a failure happens:

  # 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
Suggested-and-Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: default avatarWang Nan <wangnan0@huawei.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1447749170-175898-5-git-send-email-wangnan0@huawei.com
[ Fixed up not to use .func in an anonymous union ]
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent e8c6d500
...@@ -215,28 +215,46 @@ static int __test__bpf(int idx) ...@@ -215,28 +215,46 @@ static int __test__bpf(int idx)
return ret; return ret;
} }
int test__bpf(int subtest __maybe_unused) 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(int i)
{ {
unsigned int i;
int err; int err;
if (i < 0 || i >= (int)ARRAY_SIZE(bpf_testcase_table))
return TEST_FAIL;
if (geteuid() != 0) { if (geteuid() != 0) {
pr_debug("Only root can run BPF test\n"); pr_debug("Only root can run BPF test\n");
return TEST_SKIP; 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) #else
return err; 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(int i __maybe_unused)
int test__bpf(void)
{ {
pr_debug("Skip BPF test because BPF support is not compiled\n"); pr_debug("Skip BPF test because BPF support is not compiled\n");
return TEST_SKIP; return TEST_SKIP;
......
...@@ -173,6 +173,11 @@ static struct test generic_tests[] = { ...@@ -173,6 +173,11 @@ static struct test generic_tests[] = {
{ {
.desc = "Test BPF filter", .desc = "Test BPF filter",
.func = test__bpf, .func = test__bpf,
.subtest = {
.skip_if_fail = true,
.get_nr = test__bpf_subtest_get_nr,
.get_desc = test__bpf_subtest_get_desc,
},
}, },
{ {
.func = NULL, .func = NULL,
......
...@@ -76,6 +76,8 @@ int test__llvm(int subtest); ...@@ -76,6 +76,8 @@ int test__llvm(int subtest);
const char *test__llvm_subtest_get_desc(int subtest); const char *test__llvm_subtest_get_desc(int subtest);
int test__llvm_subtest_get_nr(void); int test__llvm_subtest_get_nr(void);
int test__bpf(int subtest); int test__bpf(int subtest);
const char *test__bpf_subtest_get_desc(int subtest);
int test__bpf_subtest_get_nr(void);
int test_session_topology(int subtest); int test_session_topology(int subtest);
#if defined(__arm__) || defined(__aarch64__) #if defined(__arm__) || defined(__aarch64__)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment