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