Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+28 −10
Original line number Original line Diff line number Diff line
@@ -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);

		if (err != TEST_OK)
	return err;
	return err;
}
}


	return TEST_OK;
#else
int test__bpf_subtest_get_nr(void)
{
	return 0;
}
}


#else
const char *test__bpf_subtest_get_desc(int i __maybe_unused)
int test__bpf(void)
{
	return NULL;
}

int test__bpf(int i __maybe_unused)
{
{
	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;
+5 −0
Original line number Original line Diff line number Diff line
@@ -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,
+2 −0
Original line number Original line Diff line number Diff line
@@ -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__)