replace ::cast_dynamic() with relevant ActionManager::get_*_action() calls
[ardour.git] / tools / run-threadreadtest.sh
1 #!/bin/sh
2
3 dir=/tmp
4 filesize=100 # megabytes
5 numfiles=128
6 nocache=
7 interleave=
8 needfiles=1
9 write_blocksize=262144
10 args=
11
12 if uname -a | grep --silent arwin ; then
13     ddmega=m
14 else
15     ddmega=M
16 fi
17
18 while [ $# -gt 1 ] ; do
19     case $1 in
20         -d) dir=$2; shift; shift ;;
21         -f) filesize=$2; shift; shift ;;
22         -n) numfiles=$2; shift; shift ;;
23         -M) args="$args -M"; shift ;;
24         -D) args="$args -D"; shift ;;
25         -R) args="$args -R"; shift ;;
26         *) break ;;
27     esac
28 done
29
30 if [ -d $dir -a -f $dir/testfile_1 ] ; then
31     # dir exists and has a testfile within it - reuse to avoid
32     # recreating files
33     echo "# Re-using files in $dir"
34     needfiles=
35 else
36     dir=$dir/readtest_$$
37     mkdir $dir
38     
39     if [ $? != 0 ] ; then
40         echo "Cannot create testfile directory $dir"
41         exit 1
42     fi
43 fi
44
45 if [ x$needfiles != x ] ; then
46     echo "# Building files for test..."
47     if [ x$interleave = x ] ; then
48         
49         #
50         # Create all files sequentially
51         #
52         
53         for i in `seq 1 $numfiles` ; do
54             dd of=$dir/testfile_$i if=/dev/zero bs=1$ddmega count=$filesize >/dev/null 2>&1
55         done
56     else
57         
58         #
59         # Create files interleaved, adding $write_blocksize to each
60         # file in turn.
61         #
62         
63         size=0
64         limit=`expr $filesize * 1048576`
65         while [ $size -lt $limit ] ; do
66             for i in `seq 1 $numfiles` ; do
67                 dd if=/dev/zero bs=$write_blocksize count=1 >> $dir/testfile_$i 2>/dev/null
68             done
69             size=`expr $size + $write_blocksize`
70         done
71     fi
72 fi
73
74 for bs in $@ ; do
75
76     if uname -a | grep --silent arwin ; then
77         # clears cache on OS X
78         sudo purge
79     elif [ -f /proc/sys/vm/drop_caches ] ; then
80         # Linux cache clearing
81         echo 3 | sudo tee /proc/sys/vm/drop_caches >/dev/null
82     else       
83         # need an alternative for other operating systems
84         :
85     fi
86     
87     echo "# Blocksize $bs"
88     ./thread_readtest $args -b $bs -q $dir/testfile_%d
89 done