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" 12testsym="test_loop" 13 14cleanup() { 15 rm -rf "${perfdata1}" 16 rm -rf "${perfdata1}".old 17 rm -rf "${perfdata2}" 18 rm -rf "${perfdata2}".old 19 rm -rf "${perfdata3}" 20 rm -rf "${perfdata3}".old 21 22 trap - EXIT TERM INT 23} 24 25trap_cleanup() { 26 cleanup 27 exit 1 28} 29trap trap_cleanup EXIT TERM INT 30 31make_data() { 32 file="$1" 33 if ! perf record -o "${file}" ${testprog} 2> /dev/null 34 then 35 echo "Workload record [Failed record]" 36 echo 1 37 return 38 fi 39 if ! perf report -i "${file}" -q | grep -q "${testsym}" 40 then 41 echo "Workload record [Failed missing output]" 42 echo 1 43 return 44 fi 45 echo 0 46} 47 48test_two_files() { 49 echo "Basic two file diff test" 50 err=$(make_data "${perfdata1}") 51 if [ $err != 0 ] 52 then 53 return 54 fi 55 err=$(make_data "${perfdata2}") 56 if [ $err != 0 ] 57 then 58 return 59 fi 60 61 if ! perf diff "${perfdata1}" "${perfdata2}" | grep -q "${testsym}" 62 then 63 echo "Basic two file diff test [Failed diff]" 64 err=1 65 return 66 fi 67 echo "Basic two file diff test [Success]" 68} 69 70test_three_files() { 71 echo "Basic three file diff test" 72 err=$(make_data "${perfdata1}") 73 if [ $err != 0 ] 74 then 75 return 76 fi 77 err=$(make_data "${perfdata2}") 78 if [ $err != 0 ] 79 then 80 return 81 fi 82 err=$(make_data "${perfdata3}") 83 if [ $err != 0 ] 84 then 85 return 86 fi 87 88 if ! perf diff "${perfdata1}" "${perfdata2}" "${perfdata3}" | grep -q "${testsym}" 89 then 90 echo "Basic three file diff test [Failed diff]" 91 err=1 92 return 93 fi 94 echo "Basic three file diff test [Success]" 95} 96 97test_two_files 98test_three_files 99 100cleanup 101exit $err 102