Merge branch 'master' of /home/git/concurrency-benchmarks
[c11concurrency-benchmarks.git] / cdschecker_modified_benchmarks / test.sh
1 #!/bin/bash
2
3 EXE=$1
4 TOTAL_RUN=5 #00
5 CDSLIB="/scratch/fuzzer/random-fuzzer"
6 export LD_LIBRARY_PATH=${CDSLIB}
7 export C11TESTER='-x1'
8
9 #ERROR_FILE="data-structure.log"
10 TASKSET=""
11
12 COUNT_DATA_RACE=0
13 COUNT_TIME=0
14
15 for i in `seq 1 1 $TOTAL_RUN` ; do
16 #  time ${TASKSET} $EXE &> $ERROR_FILE
17 #  OUTPUT=$(< $ERROR_FILE)
18
19   OUTPUT="$(/usr/bin/time -f "time: %U %S" $EXE -x1 2>&1)"
20   RACE="$(echo "$OUTPUT" | grep "race")"
21   if [ -n "$RACE" ] ; then
22     ((++COUNT_DATA_RACE))
23   fi
24
25   TIME="$(echo "$OUTPUT" | grep -o "time: .\... .\...")"
26   TIME_USER_S="$(echo "$TIME" | cut -d' ' -f2 | cut -d'.' -f1)"
27   TIME_USER_CS="$(echo "$TIME" | cut -d' ' -f2 | cut -d'.' -f2)"
28   TIME_SYSTEM_S="$(echo "$TIME" | cut -d' ' -f3 | cut -d'.' -f1)"
29   TIME_SYSTEM_CS="$(echo "$TIME" | cut -d' ' -f3 | cut -d'.' -f2)"
30
31   TIME_EXE=$((10#$TIME_USER_S * 1000 + 10#$TIME_USER_CS * 10 + 10#$TIME_SYSTEM_S * 1000 + 10#$TIME_SYSTEM_CS * 10))
32   COUNT_TIME=$((COUNT_TIME + TIME_EXE))
33 done
34
35 #rm $ERROR_FILE
36
37 AVG_DATA_RACE=$(echo "${COUNT_DATA_RACE} * 100 / ${TOTAL_RUN}" | bc -l | xargs printf "%.1f")
38 AVG_TIME_INT=$(echo "${COUNT_TIME} / ${TOTAL_RUN} + 0.5" | bc -l | xargs printf "%.0f")
39
40 # -3 / log(1 - p) < n
41 #NO_99=$(echo "-3 / (l(1 - (${AVG_DATA_RACE} / 100)) / l(10)) + 0.5" | bc -l | xargs printf "%.0f")
42 #TIME_99=$(echo "${NO_99} * ${AVG_TIME_INT}" | bc -l)
43
44 echo "Runs: $TOTAL_RUN | Data races: $COUNT_DATA_RACE | Total time: ${COUNT_TIME}ms"
45 echo "Time: ${AVG_TIME_INT}ms | Race rate: ${AVG_DATA_RACE}%"
46 #echo "Time: ${AVG_TIME_INT}ms | Race rate: ${AVG_DATA_RACE}% | No. 99.9%: ${NO_99} | Time 99.9%: ${TIME_99}ms"