xref: /linux-6.15/tools/perf/tests/shell/diff.sh (revision 144081ef)
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