108 lines · 1.9 KB · Shell
RawDownload
#!/bin/sh# perf diff tests# SPDX-License-Identifier: GPL-2.0 set -e err=0perfdata1=$(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]"    echo 1    return  fi  if ! perf report -i "${file}" -q | grep -q "${testsym}"  then    echo "Workload record [Failed missing output]"    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_filestest_three_files cleanupexit $err