summaryrefslogtreecommitdiff
path: root/tools/run-readtest.sh
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-01-20 16:17:32 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-01-20 16:18:05 -0500
commit168c4e9bc611bd8ef45e72005c3a1bcf2bda0963 (patch)
tree123aa48cbe824384fdfbdae81a285cf43498d354 /tools/run-readtest.sh
parent304b05ffd9d2280f729c7f0f4861a3c513e11aa8 (diff)
add script for running readtest
Diffstat (limited to 'tools/run-readtest.sh')
-rwxr-xr-xtools/run-readtest.sh80
1 files changed, 80 insertions, 0 deletions
diff --git a/tools/run-readtest.sh b/tools/run-readtest.sh
new file mode 100755
index 0000000000..952804c72c
--- /dev/null
+++ b/tools/run-readtest.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+dir=/tmp
+filesize=100 # megabytes
+numfiles=128
+nocache=
+interleave=
+blocksize=262144
+needfiles=1
+
+
+while [ $# -gt 1 ] ; do
+ case $1 in
+ -d) dir=$2; shift; shift ;;
+ -f) filesize=$2; shift; shift ;;
+ -n) numfiles=$2; shift; shift ;;
+ -N) nocache="-s"; shift; shift ;;
+ -b) blocksize=$2; shift; shift ;;
+ esac
+done
+
+if [ -d $dir -a -f $dir/testfile_1 ] ; then
+ # dir exists and has a testfile within it - reuse to avoid
+ # recreating files
+ echo "Re-using files in $dir"
+ needfiles=
+else
+ dir=$dir/readtest_$$
+ mkdir $dir
+
+ if [ $? != 0 ] ; then
+ echo "Cannot create testfile directory $dir"
+ exit 1
+ fi
+fi
+
+if [ x$needfiles != x ] ; then
+ if [ x$interleave = x ] ; then
+
+ #
+ # Create all files sequentially
+ #
+
+ for i in `seq 1 $numfiles` ; do
+ dd of=$dir/testfile_$i if=/dev/zero bs=1M count=$filesize
+ echo $i
+ done
+ else
+
+ #
+ # Create files interleaved, adding $blocksize to each
+ # file in turn.
+ #
+
+ size=0
+ limit=`expr $filesize * 1048576`
+ while [ $size -lt $limit ] ; do
+ for i in `seq 1 $numfiles` ; do
+ dd if=/dev/zero bs=$blocksize count=1 >> $dir/testfile_$i
+ done
+ size=`expr $size + $blocksize`
+ echo "Files now @ $size bytes"
+ done
+ fi
+fi
+
+if uname -a | grep -s arwin ; then
+ # clears cache on OS X
+ sudo purge
+elif [ -f /proc/sys/vm/drop_cache ] ; then
+ # Linux cache clearing
+ echo 3 | sudo tee /proc/sys/vm/drop/cache >/dev/null
+else
+ # need an alternative for other operating systems
+ :
+fi
+
+echo "Ready to run ..."
+
+./readtest $nocache -b $blocksize -q $dir/testfile_%d