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