diff.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #!/bin/bash
  2. # perf diff tests
  3. # SPDX-License-Identifier: GPL-2.0
  4. set -e
  5. err=0
  6. perfdata1=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
  7. perfdata2=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
  8. perfdata3=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
  9. testprog="perf test -w thloop"
  10. shelldir=$(dirname "$0")
  11. # shellcheck source=lib/perf_has_symbol.sh
  12. . "${shelldir}"/lib/perf_has_symbol.sh
  13. testsym="test_loop"
  14. skip_test_missing_symbol ${testsym}
  15. cleanup() {
  16. rm -rf "${perfdata1}"
  17. rm -rf "${perfdata1}".old
  18. rm -rf "${perfdata2}"
  19. rm -rf "${perfdata2}".old
  20. rm -rf "${perfdata3}"
  21. rm -rf "${perfdata3}".old
  22. trap - EXIT TERM INT
  23. }
  24. trap_cleanup() {
  25. cleanup
  26. exit 1
  27. }
  28. trap trap_cleanup EXIT TERM INT
  29. make_data() {
  30. file="$1"
  31. if ! perf record -o "${file}" ${testprog} 2> /dev/null
  32. then
  33. echo "Workload record [Failed record]" >&2
  34. echo 1
  35. return
  36. fi
  37. if ! perf report -i "${file}" -q | grep -q "${testsym}"
  38. then
  39. echo "Workload record [Failed missing output]" >&2
  40. echo 1
  41. return
  42. fi
  43. echo 0
  44. }
  45. test_two_files() {
  46. echo "Basic two file diff test"
  47. err=$(make_data "${perfdata1}")
  48. if [ "$err" != 0 ]
  49. then
  50. return
  51. fi
  52. err=$(make_data "${perfdata2}")
  53. if [ "$err" != 0 ]
  54. then
  55. return
  56. fi
  57. if ! perf diff "${perfdata1}" "${perfdata2}" | grep -q "${testsym}"
  58. then
  59. echo "Basic two file diff test [Failed diff]"
  60. err=1
  61. return
  62. fi
  63. echo "Basic two file diff test [Success]"
  64. }
  65. test_three_files() {
  66. echo "Basic three file diff test"
  67. err=$(make_data "${perfdata1}")
  68. if [ "$err" != 0 ]
  69. then
  70. return
  71. fi
  72. err=$(make_data "${perfdata2}")
  73. if [ "$err" != 0 ]
  74. then
  75. return
  76. fi
  77. err=$(make_data "${perfdata3}")
  78. if [ $err != 0 ]
  79. then
  80. return
  81. fi
  82. if ! perf diff "${perfdata1}" "${perfdata2}" "${perfdata3}" | grep -q "${testsym}"
  83. then
  84. echo "Basic three file diff test [Failed diff]"
  85. err=1
  86. return
  87. fi
  88. echo "Basic three file diff test [Success]"
  89. }
  90. test_two_files
  91. test_three_files
  92. cleanup
  93. exit $err