132 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.0+ or MIT3 4NR_CPUS=`grep '^processor' /proc/cpuinfo | wc -l`5 6EXTRA_ARGS=${@}7 8OLDIFS="$IFS"9IFS=$'\n'10TEST_LIST=(11 "-T s"12 "-T l"13 "-T b"14 "-T b -M"15 "-T m"16 "-T m -M"17 "-T i"18 "-T r"19)20 21TEST_NAME=(22 "spinlock"23 "list"24 "buffer"25 "buffer with barrier"26 "memcpy"27 "memcpy with barrier"28 "increment"29 "membarrier"30)31IFS="$OLDIFS"32 33REPS=100034SLOW_REPS=10035NR_THREADS=$((6*${NR_CPUS}))36 37function do_tests()38{39 local i=040 while [ "$i" -lt "${#TEST_LIST[@]}" ]; do41 echo "Running test ${TEST_NAME[$i]}"42 ./param_test ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 143 echo "Running compare-twice test ${TEST_NAME[$i]}"44 ./param_test_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 145 46 echo "Running mm_cid test ${TEST_NAME[$i]}"47 ./param_test_mm_cid ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 148 echo "Running mm_cid compare-twice test ${TEST_NAME[$i]}"49 ./param_test_mm_cid_compare_twice ${TEST_LIST[$i]} -r ${REPS} -t ${NR_THREADS} ${@} ${EXTRA_ARGS} || exit 150 let "i++"51 done52}53 54echo "Default parameters"55do_tests56 57echo "Loop injection: 10000 loops"58 59OLDIFS="$IFS"60IFS=$'\n'61INJECT_LIST=(62 "1"63 "2"64 "3"65 "4"66 "5"67 "6"68 "7"69 "8"70 "9"71)72IFS="$OLDIFS"73 74NR_LOOPS=1000075 76i=077while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do78 echo "Injecting at <${INJECT_LIST[$i]}>"79 do_tests -${INJECT_LIST[i]} ${NR_LOOPS}80 let "i++"81done82NR_LOOPS=83 84function inject_blocking()85{86 OLDIFS="$IFS"87 IFS=$'\n'88 INJECT_LIST=(89 "7"90 "8"91 "9"92 )93 IFS="$OLDIFS"94 95 NR_LOOPS=-196 97 i=098 while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do99 echo "Injecting at <${INJECT_LIST[$i]}>"100 do_tests -${INJECT_LIST[i]} -1 ${@}101 let "i++"102 done103 NR_LOOPS=104}105 106echo "Yield injection (25%)"107inject_blocking -m 4 -y108 109echo "Yield injection (50%)"110inject_blocking -m 2 -y111 112echo "Yield injection (100%)"113inject_blocking -m 1 -y114 115echo "Kill injection (25%)"116inject_blocking -m 4 -k117 118echo "Kill injection (50%)"119inject_blocking -m 2 -k120 121echo "Kill injection (100%)"122inject_blocking -m 1 -k123 124echo "Sleep injection (1ms, 25%)"125inject_blocking -m 4 -s 1126 127echo "Sleep injection (1ms, 50%)"128inject_blocking -m 2 -s 1129 130echo "Sleep injection (1ms, 100%)"131inject_blocking -m 1 -s 1132