Home | History | Annotate | Download | only in rseq
      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