perf test bpf: Check for libtraceevent support
The "bpf" tests fails in environment with missing libtraceevent support as below: # ./perf test 36 36: BPF filter : 36.1: Basic BPF filtering : FAILED! 36.2: BPF pinning : FAILED! 36.3: BPF prologue generation : FAILED! The environment has clang but missing the libtraceevent devel. Hence perf is compiled without libtraceevent support. Detailed logs: ./perf test -v "Basic BPF filtering" Failed to add BPF event syscalls:sys_enter_epoll_pwait bpf: tracepoint call back failed, stop iterate Failed to add events selected by BPF The bpf tests tris to add probe event which fails at "parse_events_add_tracepoint" function due to missing libtraceevent. Add check for "HAVE_LIBTRACEEVENT" in the "tests/bpf.c" before proceeding with the test. With the change, # ./perf test 36 36: BPF filter : 36.1: Basic BPF filtering : Skip (not compiled in or missing libtraceevent support) 36.2: BPF pinning : Skip (not compiled in or missing libtraceevent support) 36.3: BPF prologue generation : Skip (not compiled in or missing libtraceevent support) Signed-off-by: Athira Jajeev <atrajeev@linux.vnet.ibm.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Tested-by: Disha Goel <disgoel@linux.ibm.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Ian Rogers <irogers@google.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Nageswara R Sastry <rnsastry@linux.ibm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: linuxppc-dev@lists.ozlabs.org Link: https://lore.kernel.org/r/20230131135001.54578-1-atrajeev@linux.vnet.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
ab809efaeb
commit
ee739f132f
|
@ -23,7 +23,7 @@
|
|||
#define NR_ITERS 111
|
||||
#define PERF_TEST_BPF_PATH "/sys/fs/bpf/perf_test"
|
||||
|
||||
#ifdef HAVE_LIBBPF_SUPPORT
|
||||
#if defined(HAVE_LIBBPF_SUPPORT) && defined(HAVE_LIBTRACEEVENT)
|
||||
#include <linux/bpf.h>
|
||||
#include <bpf/bpf.h>
|
||||
|
||||
|
@ -330,10 +330,10 @@ static int test__bpf(int i)
|
|||
static int test__basic_bpf_test(struct test_suite *test __maybe_unused,
|
||||
int subtest __maybe_unused)
|
||||
{
|
||||
#ifdef HAVE_LIBBPF_SUPPORT
|
||||
#if defined(HAVE_LIBBPF_SUPPORT) && defined(HAVE_LIBTRACEEVENT)
|
||||
return test__bpf(0);
|
||||
#else
|
||||
pr_debug("Skip BPF test because BPF support is not compiled\n");
|
||||
pr_debug("Skip BPF test because BPF or libtraceevent support is not compiled\n");
|
||||
return TEST_SKIP;
|
||||
#endif
|
||||
}
|
||||
|
@ -341,10 +341,10 @@ static int test__basic_bpf_test(struct test_suite *test __maybe_unused,
|
|||
static int test__bpf_pinning(struct test_suite *test __maybe_unused,
|
||||
int subtest __maybe_unused)
|
||||
{
|
||||
#ifdef HAVE_LIBBPF_SUPPORT
|
||||
#if defined(HAVE_LIBBPF_SUPPORT) && defined(HAVE_LIBTRACEEVENT)
|
||||
return test__bpf(1);
|
||||
#else
|
||||
pr_debug("Skip BPF test because BPF support is not compiled\n");
|
||||
pr_debug("Skip BPF test because BPF or libtraceevent support is not compiled\n");
|
||||
return TEST_SKIP;
|
||||
#endif
|
||||
}
|
||||
|
@ -352,17 +352,17 @@ static int test__bpf_pinning(struct test_suite *test __maybe_unused,
|
|||
static int test__bpf_prologue_test(struct test_suite *test __maybe_unused,
|
||||
int subtest __maybe_unused)
|
||||
{
|
||||
#if defined(HAVE_LIBBPF_SUPPORT) && defined(HAVE_BPF_PROLOGUE)
|
||||
#if defined(HAVE_LIBBPF_SUPPORT) && defined(HAVE_BPF_PROLOGUE) && defined(HAVE_LIBTRACEEVENT)
|
||||
return test__bpf(2);
|
||||
#else
|
||||
pr_debug("Skip BPF test because BPF support is not compiled\n");
|
||||
pr_debug("Skip BPF test because BPF or libtraceevent support is not compiled\n");
|
||||
return TEST_SKIP;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static struct test_case bpf_tests[] = {
|
||||
#ifdef HAVE_LIBBPF_SUPPORT
|
||||
#if defined(HAVE_LIBBPF_SUPPORT) && defined(HAVE_LIBTRACEEVENT)
|
||||
TEST_CASE("Basic BPF filtering", basic_bpf_test),
|
||||
TEST_CASE_REASON("BPF pinning", bpf_pinning,
|
||||
"clang isn't installed or environment missing BPF support"),
|
||||
|
@ -373,9 +373,9 @@ static struct test_case bpf_tests[] = {
|
|||
TEST_CASE_REASON("BPF prologue generation", bpf_prologue_test, "not compiled in"),
|
||||
#endif
|
||||
#else
|
||||
TEST_CASE_REASON("Basic BPF filtering", basic_bpf_test, "not compiled in"),
|
||||
TEST_CASE_REASON("BPF pinning", bpf_pinning, "not compiled in"),
|
||||
TEST_CASE_REASON("BPF prologue generation", bpf_prologue_test, "not compiled in"),
|
||||
TEST_CASE_REASON("Basic BPF filtering", basic_bpf_test, "not compiled in or missing libtraceevent support"),
|
||||
TEST_CASE_REASON("BPF pinning", bpf_pinning, "not compiled in or missing libtraceevent support"),
|
||||
TEST_CASE_REASON("BPF prologue generation", bpf_prologue_test, "not compiled in or missing libtraceevent support"),
|
||||
#endif
|
||||
{ .name = NULL, }
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue