109 lines · bash
1#!/bin/sh2# perf diff tests3# SPDX-License-Identifier: GPL-2.04 5set -e6 7err=08perfdata1=$(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.sh15. "${shelldir}"/lib/perf_has_symbol.sh16 17testsym="test_loop"18 19skip_test_missing_symbol ${testsym}20 21cleanup() {22 rm -rf "${perfdata1}"23 rm -rf "${perfdata1}".old24 rm -rf "${perfdata2}"25 rm -rf "${perfdata2}".old26 rm -rf "${perfdata3}"27 rm -rf "${perfdata3}".old28 29 trap - EXIT TERM INT30}31 32trap_cleanup() {33 cleanup34 exit 135}36trap trap_cleanup EXIT TERM INT37 38make_data() {39 file="$1"40 if ! perf record -o "${file}" ${testprog} 2> /dev/null41 then42 echo "Workload record [Failed record]"43 echo 144 return45 fi46 if ! perf report -i "${file}" -q | grep -q "${testsym}"47 then48 echo "Workload record [Failed missing output]"49 echo 150 return51 fi52 echo 053}54 55test_two_files() {56 echo "Basic two file diff test"57 err=$(make_data "${perfdata1}")58 if [ $err != 0 ]59 then60 return61 fi62 err=$(make_data "${perfdata2}")63 if [ $err != 0 ]64 then65 return66 fi67 68 if ! perf diff "${perfdata1}" "${perfdata2}" | grep -q "${testsym}"69 then70 echo "Basic two file diff test [Failed diff]"71 err=172 return73 fi74 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 then82 return83 fi84 err=$(make_data "${perfdata2}")85 if [ $err != 0 ]86 then87 return88 fi89 err=$(make_data "${perfdata3}")90 if [ $err != 0 ]91 then92 return93 fi94 95 if ! perf diff "${perfdata1}" "${perfdata2}" "${perfdata3}" | grep -q "${testsym}"96 then97 echo "Basic three file diff test [Failed diff]"98 err=199 return100 fi101 echo "Basic three file diff test [Success]"102}103 104test_two_files105test_three_files106 107cleanup108exit $err109