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