run_param_test.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #!/bin/bash
  2. # SPDX-License-Identifier: GPL-2.0+ or MIT
  3. EXTRA_ARGS=${@}
  4. OLDIFS="$IFS"
  5. IFS=$'\n'
  6. TEST_LIST=(
  7. "-T s"
  8. "-T l"
  9. "-T b"
  10. "-T b -M"
  11. "-T m"
  12. "-T m -M"
  13. "-T i"
  14. )
  15. TEST_NAME=(
  16. "spinlock"
  17. "list"
  18. "buffer"
  19. "buffer with barrier"
  20. "memcpy"
  21. "memcpy with barrier"
  22. "increment"
  23. )
  24. IFS="$OLDIFS"
  25. REPS=1000
  26. SLOW_REPS=100
  27. function do_tests()
  28. {
  29. local i=0
  30. while [ "$i" -lt "${#TEST_LIST[@]}" ]; do
  31. echo "Running test ${TEST_NAME[$i]}"
  32. ./param_test ${TEST_LIST[$i]} -r ${REPS} ${@} ${EXTRA_ARGS} || exit 1
  33. echo "Running compare-twice test ${TEST_NAME[$i]}"
  34. ./param_test_compare_twice ${TEST_LIST[$i]} -r ${REPS} ${@} ${EXTRA_ARGS} || exit 1
  35. let "i++"
  36. done
  37. }
  38. echo "Default parameters"
  39. do_tests
  40. echo "Loop injection: 10000 loops"
  41. OLDIFS="$IFS"
  42. IFS=$'\n'
  43. INJECT_LIST=(
  44. "1"
  45. "2"
  46. "3"
  47. "4"
  48. "5"
  49. "6"
  50. "7"
  51. "8"
  52. "9"
  53. )
  54. IFS="$OLDIFS"
  55. NR_LOOPS=10000
  56. i=0
  57. while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
  58. echo "Injecting at <${INJECT_LIST[$i]}>"
  59. do_tests -${INJECT_LIST[i]} ${NR_LOOPS}
  60. let "i++"
  61. done
  62. NR_LOOPS=
  63. function inject_blocking()
  64. {
  65. OLDIFS="$IFS"
  66. IFS=$'\n'
  67. INJECT_LIST=(
  68. "7"
  69. "8"
  70. "9"
  71. )
  72. IFS="$OLDIFS"
  73. NR_LOOPS=-1
  74. i=0
  75. while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
  76. echo "Injecting at <${INJECT_LIST[$i]}>"
  77. do_tests -${INJECT_LIST[i]} -1 ${@}
  78. let "i++"
  79. done
  80. NR_LOOPS=
  81. }
  82. echo "Yield injection (25%)"
  83. inject_blocking -m 4 -y
  84. echo "Yield injection (50%)"
  85. inject_blocking -m 2 -y
  86. echo "Yield injection (100%)"
  87. inject_blocking -m 1 -y
  88. echo "Kill injection (25%)"
  89. inject_blocking -m 4 -k
  90. echo "Kill injection (50%)"
  91. inject_blocking -m 2 -k
  92. echo "Kill injection (100%)"
  93. inject_blocking -m 1 -k
  94. echo "Sleep injection (1ms, 25%)"
  95. inject_blocking -m 4 -s 1
  96. echo "Sleep injection (1ms, 50%)"
  97. inject_blocking -m 2 -s 1
  98. echo "Sleep injection (1ms, 100%)"
  99. inject_blocking -m 1 -s 1