Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf test: Update sample filtering tests with multiple events

Add Multiple bpf-filter test for two or more events with filters.
It uses task-clock and page-faults events with different filter
expressions and check the perf script output

$ sudo ./perf test filtering -vv
96: perf record sample filtering (by BPF) tests:
--- start ---
test child forked, pid 2804025
Checking BPF-filter privilege
Basic bpf-filter test
Basic bpf-filter test [Success]
Failing bpf-filter test
Error: task-clock event does not have PERF_SAMPLE_CPU
Failing bpf-filter test [Success]
Group bpf-filter test
Error: task-clock event does not have PERF_SAMPLE_CPU
Error: task-clock event does not have PERF_SAMPLE_CODE_PAGE_SIZE
Group bpf-filter test [Success]
Multiple bpf-filter test
Multiple bpf-filter test [Success]
---- end(0) ----
96: perf record sample filtering (by BPF) tests : Ok

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: KP Singh <kpsingh@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20240820154504.128923-3-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Namhyung Kim and committed by
Arnaldo Carvalho de Melo
150ca9cc 1a5474a7

+34
+34
tools/perf/tests/shell/record_bpf_filter.sh
··· 116 116 echo "Group bpf-filter test [Success]" 117 117 } 118 118 119 + test_bpf_filter_multi() { 120 + echo "Multiple bpf-filter test" 121 + 122 + if ! perf record -e task-clock --filter 'period > 100000' \ 123 + -e page-faults --filter 'ip < 0xffffffff00000000' \ 124 + -o "${perfdata}" true 2> /dev/null 125 + then 126 + echo "Multiple bpf-filter test [Failed record]" 127 + err=1 128 + return 129 + fi 130 + 131 + if ! perf script -i "${perfdata}" -F period,event | grep task-clock | \ 132 + awk '{ if (int($1) <= 100000) { print $0; exit(1); } }' 133 + then 134 + echo "Multiple bpf-filter test [Failed task-clock period]" 135 + err=1 136 + return 137 + fi 138 + 139 + if perf script -i "${perfdata}" -F event,ip | grep page-fault | \ 140 + grep 'ffffffff[0-9a-f]*' 141 + then 142 + echo "Multiple bpf-filter test [Failed page-faults ip]" 143 + err=1 144 + return 145 + fi 146 + 147 + echo "Multiple bpf-filter test [Success]" 148 + } 119 149 120 150 test_bpf_filter_priv 121 151 ··· 159 129 160 130 if [ $err = 0 ]; then 161 131 test_bpf_filter_group 132 + fi 133 + 134 + if [ $err = 0 ]; then 135 + test_bpf_filter_multi 162 136 fi 163 137 164 138 cleanup