1#!/bin/sh 2# perf diff tests 3# SPDX-License-Identifier: GPL-2.0 4 5set -e 6 7err=0 8perfdata1=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 9perfdata2=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 10perfdata3=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 11testprog="perf test -w thloop" 12 13shelldir=$(dirname "$0") 14# shellcheck source=lib/perf_has_symbol.sh 15. "${shelldir}"/lib/perf_has_symbol.sh 16 17testsym="test_loop" 18 19skip_test_missing_symbol ${testsym} 20 21cleanup() { 22 rm -rf "${perfdata1}" 23 rm -rf "${perfdata1}".old 24 rm -rf "${perfdata2}" 25 rm -rf "${perfdata2}".old 26 rm -rf "${perfdata3}" 27 rm -rf "${perfdata3}".old 28 29 trap - EXIT TERM INT 30} 31 32trap_cleanup() { 33 cleanup 34 exit 1 35} 36trap trap_cleanup EXIT TERM INT 37 38make_data() { 39 file="$1" 40 if ! perf record -o "${file}" ${testprog} 2> /dev/null 41 then 42 echo "Workload record [Failed record]" 43 echo 1 44 return 45 fi 46 if ! perf report -i "${file}" -q | grep -q "${testsym}" 47 then 48 echo "Workload record [Failed missing output]" 49 echo 1 50 return 51 fi 52 echo 0 53} 54 55test_two_files() { 56 echo "Basic two file diff test" 57 err=$(make_data "${perfdata1}") 58 if [ $err != 0 ] 59 then 60 return 61 fi 62 err=$(make_data "${perfdata2}") 63 if [ $err != 0 ] 64 then 65 return 66 fi 67 68 if ! perf diff "${perfdata1}" "${perfdata2}" | grep -q "${testsym}" 69 then 70 echo "Basic two file diff test [Failed diff]" 71 err=1 72 return 73 fi 74 echo "Basic two file diff test [Success]" 75} 76 77test_three_files() { 78 echo "Basic three file diff test" 79 err=$(make_data "${perfdata1}") 80 if [ $err != 0 ] 81 then 82 return 83 fi 84 err=$(make_data "${perfdata2}") 85 if [ $err != 0 ] 86 then 87 return 88 fi 89 err=$(make_data "${perfdata3}") 90 if [ $err != 0 ] 91 then 92 return 93 fi 94 95 if ! perf diff "${perfdata1}" "${perfdata2}" "${perfdata3}" | grep -q "${testsym}" 96 then 97 echo "Basic three file diff test [Failed diff]" 98 err=1 99 return 100 fi 101 echo "Basic three file diff test [Success]" 102} 103 104test_two_files 105test_three_files 106 107cleanup 108exit $err 109