| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #!/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
|