| #!/bin/bash |
| # perf header tests |
| # SPDX-License-Identifier: GPL-2.0 |
| |
| set -e |
| |
| err=0 |
| perfdata=$(mktemp /tmp/__perf_test_header.perf.data.XXXXX) |
| script_output=$(mktemp /tmp/__perf_test_header.perf.data.XXXXX.script) |
| |
| cleanup() { |
| rm -f "${perfdata}" |
| rm -f "${perfdata}".old |
| rm -f "${script_output}" |
| |
| trap - EXIT TERM INT |
| } |
| |
| trap_cleanup() { |
| echo "Unexpected signal in ${FUNCNAME[1]}" |
| cleanup |
| exit 1 |
| } |
| trap trap_cleanup EXIT TERM INT |
| |
| check_header_output() { |
| declare -a fields=( |
| "captured" |
| "hostname" |
| "os release" |
| "arch" |
| "cpuid" |
| "nrcpus" |
| "event" |
| "cmdline" |
| "perf version" |
| "sibling (cores|dies|threads)" |
| "sibling threads" |
| "total memory" |
| ) |
| for i in "${fields[@]}" |
| do |
| if ! grep -q -E "$i" "${script_output}" |
| then |
| echo "Failed to find expected $i in output" |
| err=1 |
| fi |
| done |
| } |
| |
| test_file() { |
| echo "Test perf header file" |
| |
| perf record -o "${perfdata}" -- perf test -w noploop |
| perf report --header-only -I -i "${perfdata}" > "${script_output}" |
| check_header_output |
| |
| echo "Test perf header file [Done]" |
| } |
| |
| test_pipe() { |
| echo "Test perf header pipe" |
| |
| perf record -o - -- perf test -w noploop | perf report --header-only -I -i - > "${script_output}" |
| check_header_output |
| |
| echo "Test perf header pipe [Done]" |
| } |
| |
| test_file |
| test_pipe |
| |
| cleanup |
| exit $err |