1144081efSIan Rogers#!/bin/sh 2144081efSIan Rogers# perf diff tests 3144081efSIan Rogers# SPDX-License-Identifier: GPL-2.0 4144081efSIan Rogers 5144081efSIan Rogersset -e 6144081efSIan Rogers 7144081efSIan Rogerserr=0 8144081efSIan Rogersperfdata1=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 9144081efSIan Rogersperfdata2=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 10144081efSIan Rogersperfdata3=$(mktemp /tmp/__perf_test.perf.data.XXXXX) 11144081efSIan Rogerstestprog="perf test -w thloop" 12407a3898SIan Rogers 13407a3898SIan Rogersshelldir=$(dirname "$0") 14407a3898SIan Rogers# shellcheck source=lib/perf_has_symbol.sh 15407a3898SIan Rogers. "${shelldir}"/lib/perf_has_symbol.sh 16407a3898SIan Rogers 17144081efSIan Rogerstestsym="test_loop" 18144081efSIan Rogers 19407a3898SIan Rogersskip_test_missing_symbol ${testsym} 20407a3898SIan Rogers 21144081efSIan Rogerscleanup() { 22144081efSIan Rogers rm -rf "${perfdata1}" 23144081efSIan Rogers rm -rf "${perfdata1}".old 24144081efSIan Rogers rm -rf "${perfdata2}" 25144081efSIan Rogers rm -rf "${perfdata2}".old 26144081efSIan Rogers rm -rf "${perfdata3}" 27144081efSIan Rogers rm -rf "${perfdata3}".old 28144081efSIan Rogers 29144081efSIan Rogers trap - EXIT TERM INT 30144081efSIan Rogers} 31144081efSIan Rogers 32144081efSIan Rogerstrap_cleanup() { 33144081efSIan Rogers cleanup 34144081efSIan Rogers exit 1 35144081efSIan Rogers} 36144081efSIan Rogerstrap trap_cleanup EXIT TERM INT 37144081efSIan Rogers 38144081efSIan Rogersmake_data() { 39144081efSIan Rogers file="$1" 40144081efSIan Rogers if ! perf record -o "${file}" ${testprog} 2> /dev/null 41144081efSIan Rogers then 42*3a86d63eSIan Rogers echo "Workload record [Failed record]" >&2 43144081efSIan Rogers echo 1 44144081efSIan Rogers return 45144081efSIan Rogers fi 46144081efSIan Rogers if ! perf report -i "${file}" -q | grep -q "${testsym}" 47144081efSIan Rogers then 48*3a86d63eSIan Rogers echo "Workload record [Failed missing output]" >&2 49144081efSIan Rogers echo 1 50144081efSIan Rogers return 51144081efSIan Rogers fi 52144081efSIan Rogers echo 0 53144081efSIan Rogers} 54144081efSIan Rogers 55144081efSIan Rogerstest_two_files() { 56144081efSIan Rogers echo "Basic two file diff test" 57144081efSIan Rogers err=$(make_data "${perfdata1}") 58*3a86d63eSIan Rogers if [ "$err" != 0 ] 59144081efSIan Rogers then 60144081efSIan Rogers return 61144081efSIan Rogers fi 62144081efSIan Rogers err=$(make_data "${perfdata2}") 63*3a86d63eSIan Rogers if [ "$err" != 0 ] 64144081efSIan Rogers then 65144081efSIan Rogers return 66144081efSIan Rogers fi 67144081efSIan Rogers 68144081efSIan Rogers if ! perf diff "${perfdata1}" "${perfdata2}" | grep -q "${testsym}" 69144081efSIan Rogers then 70144081efSIan Rogers echo "Basic two file diff test [Failed diff]" 71144081efSIan Rogers err=1 72144081efSIan Rogers return 73144081efSIan Rogers fi 74144081efSIan Rogers echo "Basic two file diff test [Success]" 75144081efSIan Rogers} 76144081efSIan Rogers 77144081efSIan Rogerstest_three_files() { 78144081efSIan Rogers echo "Basic three file diff test" 79144081efSIan Rogers err=$(make_data "${perfdata1}") 80*3a86d63eSIan Rogers if [ "$err" != 0 ] 81144081efSIan Rogers then 82144081efSIan Rogers return 83144081efSIan Rogers fi 84144081efSIan Rogers err=$(make_data "${perfdata2}") 85*3a86d63eSIan Rogers if [ "$err" != 0 ] 86144081efSIan Rogers then 87144081efSIan Rogers return 88144081efSIan Rogers fi 89144081efSIan Rogers err=$(make_data "${perfdata3}") 90144081efSIan Rogers if [ $err != 0 ] 91144081efSIan Rogers then 92144081efSIan Rogers return 93144081efSIan Rogers fi 94144081efSIan Rogers 95144081efSIan Rogers if ! perf diff "${perfdata1}" "${perfdata2}" "${perfdata3}" | grep -q "${testsym}" 96144081efSIan Rogers then 97144081efSIan Rogers echo "Basic three file diff test [Failed diff]" 98144081efSIan Rogers err=1 99144081efSIan Rogers return 100144081efSIan Rogers fi 101144081efSIan Rogers echo "Basic three file diff test [Success]" 102144081efSIan Rogers} 103144081efSIan Rogers 104144081efSIan Rogerstest_two_files 105144081efSIan Rogerstest_three_files 106144081efSIan Rogers 107144081efSIan Rogerscleanup 108144081efSIan Rogersexit $err 109