tools/perf/tests/shell/diff.sh | 101 +++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100755 tools/perf/tests/shell/diff.sh
There are some old bug reports on perf diff crashing:
https://rhaas.blogspot.com/2012/06/perf-good-bad-ugly.html
Happening across them I was prompted to add two very basic tests that
will give some perf diff coverage.
Signed-off-by: Ian Rogers <irogers@google.com>
---
tools/perf/tests/shell/diff.sh | 101 +++++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
create mode 100755 tools/perf/tests/shell/diff.sh
diff --git a/tools/perf/tests/shell/diff.sh b/tools/perf/tests/shell/diff.sh
new file mode 100755
index 000000000000..213185763688
--- /dev/null
+++ b/tools/perf/tests/shell/diff.sh
@@ -0,0 +1,101 @@
+#!/bin/sh
+# perf diff tests
+# SPDX-License-Identifier: GPL-2.0
+
+set -e
+
+err=0
+perfdata1=$(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"
+testsym="test_loop"
+
+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_files
+test_three_files
+
+cleanup
+exit $err
--
2.43.0.rc1.413.gea7ed67945-goog
On Mon, Nov 20, 2023 at 11:04 AM Ian Rogers <irogers@google.com> wrote:
>
> There are some old bug reports on perf diff crashing:
> https://rhaas.blogspot.com/2012/06/perf-good-bad-ugly.html
>
> Happening across them I was prompted to add two very basic tests that
> will give some perf diff coverage.
>
> Signed-off-by: Ian Rogers <irogers@google.com>
Ping.
Thanks,
Ian
> ---
> tools/perf/tests/shell/diff.sh | 101 +++++++++++++++++++++++++++++++++
> 1 file changed, 101 insertions(+)
> create mode 100755 tools/perf/tests/shell/diff.sh
>
> diff --git a/tools/perf/tests/shell/diff.sh b/tools/perf/tests/shell/diff.sh
> new file mode 100755
> index 000000000000..213185763688
> --- /dev/null
> +++ b/tools/perf/tests/shell/diff.sh
> @@ -0,0 +1,101 @@
> +#!/bin/sh
> +# perf diff tests
> +# SPDX-License-Identifier: GPL-2.0
> +
> +set -e
> +
> +err=0
> +perfdata1=$(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"
> +testsym="test_loop"
> +
> +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_files
> +test_three_files
> +
> +cleanup
> +exit $err
> --
> 2.43.0.rc1.413.gea7ed67945-goog
>
On 4/12/23 18:00, Ian Rogers wrote:
> On Mon, Nov 20, 2023 at 11:04 AM Ian Rogers <irogers@google.com> wrote:
>>
>> There are some old bug reports on perf diff crashing:
>> https://rhaas.blogspot.com/2012/06/perf-good-bad-ugly.html
>>
>> Happening across them I was prompted to add two very basic tests that
>> will give some perf diff coverage.
>>
>> Signed-off-by: Ian Rogers <irogers@google.com>
>
> Ping.
>
> Thanks,
> Ian
>
>> ---
>> tools/perf/tests/shell/diff.sh | 101 +++++++++++++++++++++++++++++++++
>> 1 file changed, 101 insertions(+)
>> create mode 100755 tools/perf/tests/shell/diff.sh
>>
>> diff --git a/tools/perf/tests/shell/diff.sh b/tools/perf/tests/shell/diff.sh
>> new file mode 100755
>> index 000000000000..213185763688
>> --- /dev/null
>> +++ b/tools/perf/tests/shell/diff.sh
>> @@ -0,0 +1,101 @@
>> +#!/bin/sh
>> +# perf diff tests
>> +# SPDX-License-Identifier: GPL-2.0
>> +
>> +set -e
>> +
>> +err=0
>> +perfdata1=$(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"
>> +testsym="test_loop"
Could it benefit from skip_test_missing_symbol
>> +
>> +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_files
>> +test_three_files
>> +
>> +cleanup
>> +exit $err
>> --
>> 2.43.0.rc1.413.gea7ed67945-goog
>>
On Mon, Dec 4, 2023 at 9:44 PM Adrian Hunter <adrian.hunter@intel.com> wrote: > > On 4/12/23 18:00, Ian Rogers wrote: > > On Mon, Nov 20, 2023 at 11:04 AM Ian Rogers <irogers@google.com> wrote: > >> > >> There are some old bug reports on perf diff crashing: > >> https://rhaas.blogspot.com/2012/06/perf-good-bad-ugly.html > >> > >> Happening across them I was prompted to add two very basic tests that > >> will give some perf diff coverage. > >> > >> Signed-off-by: Ian Rogers <irogers@google.com> > > > > Ping. > > > > Thanks, > > Ian > > > >> --- > >> tools/perf/tests/shell/diff.sh | 101 +++++++++++++++++++++++++++++++++ > >> 1 file changed, 101 insertions(+) > >> create mode 100755 tools/perf/tests/shell/diff.sh > >> > >> diff --git a/tools/perf/tests/shell/diff.sh b/tools/perf/tests/shell/diff.sh > >> new file mode 100755 > >> index 000000000000..213185763688 > >> --- /dev/null > >> +++ b/tools/perf/tests/shell/diff.sh > >> @@ -0,0 +1,101 @@ > >> +#!/bin/sh > >> +# perf diff tests > >> +# SPDX-License-Identifier: GPL-2.0 > >> + > >> +set -e > >> + > >> +err=0 > >> +perfdata1=$(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" > >> +testsym="test_loop" > > Could it benefit from skip_test_missing_symbol Good idea, sent: https://lore.kernel.org/lkml/20231205164924.835682-1-irogers@google.com/ Thanks, Ian
Em Tue, Dec 05, 2023 at 08:52:04AM -0800, Ian Rogers escreveu: > On Mon, Dec 4, 2023 at 9:44 PM Adrian Hunter <adrian.hunter@intel.com> wrote: > > > > On 4/12/23 18:00, Ian Rogers wrote: > > > On Mon, Nov 20, 2023 at 11:04 AM Ian Rogers <irogers@google.com> wrote: > > >> > > >> There are some old bug reports on perf diff crashing: > > >> https://rhaas.blogspot.com/2012/06/perf-good-bad-ugly.html > > >> > > >> Happening across them I was prompted to add two very basic tests that > > >> will give some perf diff coverage. > > >> > > >> Signed-off-by: Ian Rogers <irogers@google.com> > > > > > > Ping. > > > > > > Thanks, > > > Ian > > > > > >> --- > > >> tools/perf/tests/shell/diff.sh | 101 +++++++++++++++++++++++++++++++++ > > >> 1 file changed, 101 insertions(+) > > >> create mode 100755 tools/perf/tests/shell/diff.sh > > >> > > >> diff --git a/tools/perf/tests/shell/diff.sh b/tools/perf/tests/shell/diff.sh > > >> new file mode 100755 > > >> index 000000000000..213185763688 > > >> --- /dev/null > > >> +++ b/tools/perf/tests/shell/diff.sh > > >> @@ -0,0 +1,101 @@ > > >> +#!/bin/sh > > >> +# perf diff tests > > >> +# SPDX-License-Identifier: GPL-2.0 > > >> + > > >> +set -e > > >> + > > >> +err=0 > > >> +perfdata1=$(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" > > >> +testsym="test_loop" > > > > Could it benefit from skip_test_missing_symbol > > Good idea, sent: > https://lore.kernel.org/lkml/20231205164924.835682-1-irogers@google.com/ Applied, and added this: Suggested-by: Adrian Hunter <adrian.hunter@intel.com> Thanks, - Arnaldo
Em Mon, Dec 04, 2023 at 08:00:35AM -0800, Ian Rogers escreveu: > On Mon, Nov 20, 2023 at 11:04 AM Ian Rogers <irogers@google.com> wrote: > > > > There are some old bug reports on perf diff crashing: > > https://rhaas.blogspot.com/2012/06/perf-good-bad-ugly.html > > > > Happening across them I was prompted to add two very basic tests that > > will give some perf diff coverage. > > > > Signed-off-by: Ian Rogers <irogers@google.com> > > Ping. Thanks, applied to perf-tools-next. - Arnaldo
© 2016 - 2025 Red Hat, Inc.