[PATCH V2] tools/perf/tests: Skip perf BPF test if clang is not present

Disha Goel disgoel at linux.vnet.ibm.com
Fri May 13 16:16:35 AEST 2022



-----Original Message-----
From: Athira Rajeev <atrajeev at linux.vnet.ibm.com>
To: acme at kernel.org, jolsa at kernel.org
Cc: mpe at ellerman.id.au, linux-perf-users at vger.kernel.org, 
linuxppc-dev at lists.ozlabs.org, maddy at linux.vnet.ibm.com, 
rnsastry at linux.ibm.com, kjain at linux.ibm.com, disgoel at linux.vnet.ibm.com
, irogers at google.com
Subject: [PATCH V2] tools/perf/tests: Skip perf BPF test if clang is
not present
Date: Wed, 11 May 2022 17:24:38 +0530

Perf BPF filter test fails in environment where "clang"is not
installed.
Test failure logs:
<<>> 42: BPF filter                    : 42.1: Basic BPF
filtering         : Skip 42.2: BPF pinning                 : FAILED!
42.3: BPF prologue generation     : FAILED!<<>>
Enabling verbose option provided debug logs which saysclang/llvm needs
to be installed. Snippet of verbose logs:
<<>> 42.2: BPF pinning                  : --- start ---test child
forked, pid 61423ERROR:	unable to find clang.Hint:	Try to install
latest clang/llvm to support BPF.        Check your $PATH
<<logs_here>>
Failed to compile test case: 'Basic BPF llvm compile'Unable to get BPF
object, fix kbuild firsttest child finished with -1 ---- end ----BPF
filter subtest 2: FAILED!<<>>
Here subtests, "BPF pinning" and "BPF prologue generation"failed and
logs shows clang/llvm is needed. After installingclang, testcase
passes.
Reason on why subtest failure happens though logs has properdebug
information:Main function __test__bpf calls test_llvm__fetch_bpf_obj
bypassing 4th argument as true ( 4th arguments maps to parameter"force"
in test_llvm__fetch_bpf_obj ). But this will
causetest_llvm__fetch_bpf_obj to skip the check for clang/llvm.
Snippet of code part which checks for clang based onparameter "force"
in test_llvm__fetch_bpf_obj:
<<>>if (!force && (!llvm_param.user_set_param &&<<>>
Since force is set to "false", test won't get skipped andfails to
compile test case. The BPF code compilation needsclang, So pass the
fourth argument as "false" and also skipthe test if reason for return
is "TEST_SKIP"
After the patch:
<<>> 42: BPF filter                    : 42.1: Basic BPF
filtering         : Skip 42.2: BPF pinning                 : Skip 42.3:
BPF prologue generation     : Skip<<>>
Fixes: ba1fae431e74 ("perf test: Add 'perf test BPF'")Signed-off-by:
Athira Rajeev <atrajeev at linux.vnet.ibm.com>---Changelog: Addressed
review comments from Arnaldo by adding reason for skipping of testcase.
 tools/perf/tests/bpf.c | 10 ++++++---- 1 file changed, 6
insertions(+), 4 deletions(-)
Tested the patch on powerpc and powernv, perf BPF test works fine with
the patch.Tested-by: Disha Goel <disgoel at linux.vnet.ibm.com>
diff --git a/tools/perf/tests/bpf.c b/tools/perf/tests/bpf.cindex
57b9591f7cbb..17c023823713 100644--- a/tools/perf/tests/bpf.c+++
b/tools/perf/tests/bpf.c@@ -222,11 +222,11 @@ static int
__test__bpf(int idx)
 	ret = test_llvm__fetch_bpf_obj(&obj_buf, &obj_buf_sz, 		
		       bpf_testcase_table[idx].prog_id,-		
		       true, NULL);+				       
false, NULL); 	if (ret != TEST_OK || !obj_buf || !obj_buf_sz) { 	
	pr_debug("Unable to get BPF object, %s\n", 			
 bpf_testcase_table[idx].msg_compile_fail);-		if (idx == 0)+	
	if ((idx == 0) || (ret == TEST_SKIP)) 			return
TEST_SKIP; 		else 			return TEST_FAIL;@@
-364,9 +364,11 @@ static int test__bpf_prologue_test(struct test_suite
*test __maybe_unused, static struct test_case bpf_tests[] = { #ifdef
HAVE_LIBBPF_SUPPORT 	TEST_CASE("Basic BPF filtering",
basic_bpf_test),-	TEST_CASE("BPF pinning", bpf_pinning),+	TEST_CA
SE_REASON("BPF pinning", bpf_pinning,+			"clang isn't
installed or environment missing BPF support"), #ifdef
HAVE_BPF_PROLOGUE-	TEST_CASE("BPF prologue generation",
bpf_prologue_test),+	TEST_CASE_REASON("BPF prologue generation",
bpf_prologue_test,+			"clang isn't installed or
environment missing BPF support"), #else 	TEST_CASE_REASON("BPF
prologue generation", bpf_prologue_test, "not compiled in"), #endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20220513/0a671acd/attachment-0001.htm>


More information about the Linuxppc-dev mailing list