linux/tools/perf/tests
Thomas Richter 316a76a58c perf test: Fix libpfm4 support (63) test error for nested event groups
Compiling perf with make LIBPFM4=1 includes libpfm support and
enables test case 63 'Test libpfm4 support'. This test reports an error
on all platforms for subtest 63.2 'test groups of --pfm-events'.
The reported error message is 'nested event groups not supported'

 # ./perf test -F 63
 63: Test libpfm4 support                                            :
 63.1: test of individual --pfm-events                               :
 Error:
 failed to parse event stereolab : event not found
 Error:
 failed to parse event stereolab,instructions : event not found
 Error:
 failed to parse event instructions,stereolab : event not found
  Ok
 63.2: test groups of --pfm-events                                   :
 Error:
 nested event groups not supported    <------ Error message here
 Error:
 failed to parse event {stereolab} : event not found
 Error:
 failed to parse event {instructions,cycles},{instructions,stereolab} :\
	 event not found
 Ok
 #

This patch addresses the error message 'nested event groups not supported'.
The root cause is function parse_libpfm_events_option() which parses the
event string '{},{instructions}' and can not handle a leading empty
group notation '{},...'.

The code detects the first (empty) group indicator '{' but does not
terminate group processing on the following group closing character '}'.
So when the second group indicator '{' is detected, the code assumes
a nested group and returns an error.

With the error message fixed, also change the expected event number to
one for the test case to succeed.

While at it also fix a memory leak. In good case the function does not
free the duplicated string given as first parameter.

Output after:
 # ./perf test -F 63
 63: Test libpfm4 support                                            :
 63.1: test of individual --pfm-events                               :
 Error:
 failed to parse event stereolab : event not found
 Error:
 failed to parse event stereolab,instructions : event not found
 Error:
 failed to parse event instructions,stereolab : event not found
  Ok
 63.2: test groups of --pfm-events                                   :
 Error:
 failed to parse event {stereolab} : event not found
 Error:
 failed to parse event {instructions,cycles},{instructions,stereolab} : \
	 event not found
  Ok
 #
Error message 'nested event groups not supported' is gone.

Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
Acked-By: Ian Rogers <irogers@google.com>
Acked-by: Sumanth Korikkar <sumanthk@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Link: http://lore.kernel.org/lkml/20210517140931.2559364-1-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
2021-05-19 10:30:37 -03:00
..
attr tools headers UAPI: Sync perf_event.h with the kernel sources 2021-05-10 09:01:01 -03:00
shell perf tests: Skip 'perf stat metrics (shadow stat) test' for hybrid 2021-04-29 10:31:00 -03:00
.gitignore
Build
api-io.c
attr.c perf tests: Skip 'Setup struct perf_event_attr' test for hybrid 2021-04-29 10:31:00 -03:00
attr.py
backward-ring-buffer.c
bitmap.c
bp_account.c
bp_signal.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
bp_signal_overflow.c
bpf-script-example.c
bpf-script-test-kbuild.c
bpf-script-test-prologue.c
bpf-script-test-relocation.c
bpf.c perf test: Remove now useless failing sub test "BPF relocation checker" 2021-03-24 10:33:03 -03:00
builtin-test.c
clang.c
code-reading.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
cpumap.c perf test: Fix cpu map leaks in cpu_map_print test 2021-03-06 16:54:29 -03:00
demangle-java-test.c
demangle-ocaml-test.c perf tools: Preserve identifier id in OCaml demangler 2021-03-30 12:45:59 -03:00
dso-data.c
dwarf-unwind.c
event-times.c
event_update.c
evsel-roundtrip-name.c perf tests: Add hybrid cases for 'Roundtrip evsel->name' test 2021-04-29 10:31:00 -03:00
evsel-tp-sched.c
expand-cgroup.c
expr.c
fdarray.c
genelf.c
hists_common.c
hists_common.h
hists_cumulate.c perf tools: Fix various typos in comments 2021-03-23 17:13:43 -03:00
hists_filter.c perf hists: Split hists_stats from events_stats 2021-04-29 10:30:58 -03:00
hists_link.c
hists_output.c
is_printable_array.c
keep-tracking.c perf test: Fix cpu and thread map leaks in keep_tracking test 2021-03-06 16:54:28 -03:00
kmod-path.c
llvm.c
llvm.h
make perf tools: Add a build-test variant to use in builds from a tarball 2021-04-20 08:43:58 -03:00
maps.c
mem.c
mem2node.c
mmap-basic.c perf test: Fix cpu and thread map leaks in basic mmap test 2021-03-06 16:54:27 -03:00
mmap-thread-lookup.c
openat-syscall-all-cpus.c
openat-syscall-tp-fields.c
openat-syscall.c
parse-events.c perf tests: Add hybrid cases for 'Parse event definition strings' test 2021-04-29 10:31:00 -03:00
parse-metric.c perf tests: Support 'Parse and process metrics' test for hybrid 2021-04-29 10:31:00 -03:00
parse-no-sample-id-all.c
pe-file-parsing.c
pe-file.c
pe-file.exe
pe-file.exe.debug
perf-hooks.c
perf-record.c
perf-targz-src-pkg
perf-time-to-tsc.c perf tests: Support 'Convert perf time to TSC' test for hybrid 2021-04-29 10:31:00 -03:00
pfm.c perf test: Fix libpfm4 support (63) test error for nested event groups 2021-05-19 10:30:37 -03:00
pmu-events.c perf pmu: Add pmu_events_map__find() function to find the common PMU map for the system 2021-04-08 14:24:14 -03:00
pmu.c
python-use.c
sample-parsing.c perf test: Fix sample-parsing failure on non-x86 platforms 2021-03-06 16:54:31 -03:00
sdt.c
stat.c
sw-clock.c perf test: Fix cpu and thread map leaks in sw_clock_freq test 2021-03-06 16:54:28 -03:00
switch-tracking.c perf tests: Support 'Track with sched_switch' test for hybrid 2021-04-29 10:31:00 -03:00
task-exit.c perf test: Fix cpu and thread map leaks in task_exit test 2021-03-06 16:54:28 -03:00
tests.h
thread-map.c perf test: Fix a memory leak in thread_map_remove test 2021-03-06 16:54:29 -03:00
thread-maps-share.c
time-utils-test.c
topology.c perf tests: Support 'Session topology' test for hybrid 2021-04-29 10:31:00 -03:00
unit_number__scnprintf.c
vmlinux-kallsyms.c
wp.c