| #!/bin/bash | |
| # perf diff tests | |
| # SPDX-License-Identifier: GPL-2.0 | |
| set -e | |
| err=0 | |
| perfdata1=$(mktemp /tmp/__perf_test.perf.data.XXXXX) | |
| perfdata2=$(mktemp /tmp/__perf_test.perf.data.XXXXX) | |
| perfdata3=$(mktemp /tmp/__perf_test.perf.data.XXXXX) | |
| testprog="perf test -w thloop" | |
| shelldir=$(dirname "$0") | |
| # shellcheck source=lib/perf_has_symbol.sh | |
| . "${shelldir}"/lib/perf_has_symbol.sh | |
| testsym="test_loop" | |
| skip_test_missing_symbol ${testsym} | |
| cleanup() { | |
| rm -rf "${perfdata1}" | |
| rm -rf "${perfdata1}".old | |
| rm -rf "${perfdata2}" | |
| rm -rf "${perfdata2}".old | |
| rm -rf "${perfdata3}" | |
| rm -rf "${perfdata3}".old | |
| trap - EXIT TERM INT | |
| } | |
| trap_cleanup() { | |
| cleanup | |
| exit 1 | |
| } | |
| trap trap_cleanup EXIT TERM INT | |
| make_data() { | |
| file="$1" | |
| if ! perf record -o "${file}" ${testprog} 2> /dev/null | |
| then | |
| echo "Workload record [Failed record]" >&2 | |
| echo 1 | |
| return | |
| fi | |
| if ! perf report -i "${file}" -q | grep -q "${testsym}" | |
| then | |
| echo "Workload record [Failed missing output]" >&2 | |
| echo 1 | |
| return | |
| fi | |
| echo 0 | |
| } | |
| test_two_files() { | |
| echo "Basic two file diff test" | |
| err=$(make_data "${perfdata1}") | |
| if [ "$err" != 0 ] | |
| then | |
| return | |
| fi | |
| err=$(make_data "${perfdata2}") | |
| if [ "$err" != 0 ] | |
| then | |
| return | |
| fi | |
| if ! perf diff "${perfdata1}" "${perfdata2}" | grep -q "${testsym}" | |
| then | |
| echo "Basic two file diff test [Failed diff]" | |
| err=1 | |
| return | |
| fi | |
| echo "Basic two file diff test [Success]" | |
| } | |
| test_three_files() { | |
| echo "Basic three file diff test" | |
| err=$(make_data "${perfdata1}") | |
| if [ "$err" != 0 ] | |
| then | |
| return | |
| fi | |
| err=$(make_data "${perfdata2}") | |
| if [ "$err" != 0 ] | |
| then | |
| return | |
| fi | |
| err=$(make_data "${perfdata3}") | |
| if [ $err != 0 ] | |
| then | |
| return | |
| fi | |
| if ! perf diff "${perfdata1}" "${perfdata2}" "${perfdata3}" | grep -q "${testsym}" | |
| then | |
| echo "Basic three file diff test [Failed diff]" | |
| err=1 | |
| return | |
| fi | |
| echo "Basic three file diff test [Success]" | |
| } | |
| test_two_files | |
| test_three_files | |
| cleanup | |
| exit $err |