| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #!/bin/bash
- # perf trace summary (exclusive)
- # SPDX-License-Identifier: GPL-2.0
- # Check that perf trace works with various summary mode
- # shellcheck source=lib/probe.sh
- . "$(dirname $0)"/lib/probe.sh
- skip_if_no_perf_trace || exit 2
- [ "$(id -u)" = 0 ] || exit 2
- OUTPUT=$(mktemp /tmp/perf_trace_test.XXXXX)
- test_perf_trace() {
- args=$1
- workload="true"
- search="^\s*(open|read|close).*[0-9]+%$"
- echo "testing: perf trace ${args} -- ${workload}"
- perf trace ${args} -- ${workload} >${OUTPUT} 2>&1
- if [ $? -ne 0 ]; then
- echo "Error: perf trace ${args} failed unexpectedly"
- cat ${OUTPUT}
- rm -f ${OUTPUT}
- exit 1
- fi
- count=$(grep -E -c -m 3 "${search}" ${OUTPUT})
- if [ "${count}" != "3" ]; then
- echo "Error: cannot find enough pattern ${search} in the output"
- cat ${OUTPUT}
- rm -f ${OUTPUT}
- exit 1
- fi
- }
- # summary only for a process
- test_perf_trace "-s"
- # normal output with summary at the end
- test_perf_trace "-S"
- # summary only with an explicit summary mode
- test_perf_trace "-s --summary-mode=thread"
- # summary with normal output - total summary mode
- test_perf_trace "-S --summary-mode=total"
- # summary only for system wide - per-thread summary
- test_perf_trace "-as --summary-mode=thread --no-bpf-summary"
- # summary only for system wide - total summary mode
- test_perf_trace "-as --summary-mode=total --no-bpf-summary"
- if ! perf check feature -q bpf; then
- echo "Skip --bpf-summary tests as perf built without libbpf"
- rm -f ${OUTPUT}
- exit 2
- fi
- # summary only for system wide - per-thread summary with BPF
- test_perf_trace "-as --summary-mode=thread --bpf-summary"
- # summary only for system wide - total summary mode with BPF
- test_perf_trace "-as --summary-mode=total --bpf-summary"
- # summary with normal output for system wide - total summary mode with BPF
- test_perf_trace "-aS --summary-mode=total --bpf-summary"
- # summary only for system wide - cgroup summary mode with BPF
- test_perf_trace "-as --summary-mode=cgroup --bpf-summary"
- # summary with normal output for system wide - cgroup summary mode with BPF
- test_perf_trace "-aS --summary-mode=cgroup --bpf-summary"
- rm -f ${OUTPUT}
|