f7c5cdb7dc0579c20a2ebeaf2770506ce18957c7
[model-checker-benchmarks.git] / bench.sh
1 #!/bin/bash
2
3 # A (work-in-progress) test script for running our benchmarks
4 # Runs all tests, logging output to a directory named
5 # '${BASEDIR}/run-<date-time>', where ${BASEDIR} is either the current
6 # directory or the first parameter to this script
7
8 ## Unfinished benchmarks - do not use
9 # queue williams-queue
10
11 DATECMD="date +%Y-%m-%d-%R"
12 DATE="`${DATECMD}`"
13 BASEDIR=.
14
15 [ $# -gt 0 ] && [ -d "$1" ] && BASEDIR="$1" && shift
16
17 DIR="${BASEDIR}/run-${DATE}"
18
19 TESTS="chase-lev-deque/main"
20 TESTS+=" spsc-queue/spsc-queue"
21 TESTS+=" spsc-bugfix/spsc-queue"
22 TESTS+=" barrier/barrier"
23 TESTS+=" mcs-lock/mcs-lock"
24 TESTS+=" mpmc-queue/mpmc-queue-rdwr"
25 TESTS+=" ms-queue/main"
26 TESTS+=" linuxrwlocks/linuxrwlocks"
27
28 MODEL_ARGS="-y -m 2 -u 3"
29
30 #TESTS+=" dekker-fences/dekker-fences"
31 #TESTS+=" mpmc-queue/mpmc-2r1w"
32 #TESTS+=" mpmc-queue/mpmc-1r2w-noinit"
33 #TESTS+=" mpmc-queue/mpmc-queue-rdwr"
34 #TESTS+=" mpmc-queue/mpmc-queue-noinit"
35
36 COUNT=0
37
38 function run_test {
39         t=$1
40         shift
41         ARGS="$@"
42         RUN="./run.sh"
43         LOG=${DIR}/log-${COUNT}
44
45         echo "-----------------------------------------------"
46         echo "*******************************"
47         echo "Running test ${COUNT} (${t}): logging to ${LOG}"
48         echo "ARGS=${ARGS}"
49         echo "*******************************"
50         (time ${RUN} ${t} ${ARGS} 2>&1) 2>&1 | tee ${LOG}
51         echo
52         echo "Test done; sleeping for a few seconds"
53         echo
54
55         let COUNT++
56 }
57
58 function run_all_tests {
59         echo ${DATE}
60
61         for t in ${TESTS}
62         do
63                 run_test ${t} ${MODEL_ARGS}
64         done
65         #run_test mpmc-queue/mpmc-queue ${MODEL_ARGS} -- -r 2 -w 1
66         #run_test mpmc-queue/mpmc-queue ${MODEL_ARGS} -- -r 1 -w 2
67         #run_test mpmc-queue/mpmc-queue ${MODEL_ARGS} -- -r 2 -w 2
68 }
69
70 mkdir ${DIR}
71 (cd ..; git log --oneline -1; cd - > /dev/null; git log --oneline -1; echo; run_all_tests) | tee ${DIR}/timing.log