#!/bin/sh
# Yes, that's POSIX sh, not bash!
-tmpnam=`mktemp`
+tmpdir=`mktemp -d`
+conffile=${tmpdir}/nbd.conf
+pidfile=${tmpdir}/nbd.pid
+tmpnam=${tmpdir}/nbd.dd
+mydir=$(dirname "`readlink -f $0`")
ulimit -c unlimited
case $1 in
*/cmd)
# Test with export specified on command line
- ./nbd-server -C /dev/null -p `pwd`/nbd-server.pid 11111 $tmpnam &
+ ./nbd-server -C /dev/null -p ${pidfile} 11111 $tmpnam &
# -p only works if nbd-server wasn't compiled with -DNOFORK or
# -DNODAEMON, which I sometimes do for testing and debugging.
PID=$!
;;
*/cfgsize)
# Test oversized requests
- ./nbd-server -C /dev/null -p `pwd`/nbd-server.pid 11111 $tmpnam &
+ ./nbd-server -C /dev/null -p ${pidfile} 11111 $tmpnam &
# -p only works if nbd-server wasn't compiled with -DNOFORK or
# -DNODAEMON, which I sometimes do for testing and debugging.
PID=$!
;;
*/cfg1)
# Test with export specified in config file
- cat > nbd-server.conf <<EOF
+ cat > ${conffile} <<EOF
[generic]
oldstyle = true
[export]
exportname = $tmpnam
port = 11112
EOF
- ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
+ ./nbd-server -C ${conffile} -p ${pidfile} &
PID=$!
sleep 1
./nbd-tester-client 127.0.0.1 11112
*/cfgmulti)
# Test with multiple exports specified in config file, and
# testing more options too
- cat >nbd-server.conf <<EOF
+ cat >${conffile} <<EOF
[generic]
oldstyle = true
[export1]
readonly = true
listenaddr = 127.0.0.1
EOF
- ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
+ ./nbd-server -C ${conffile} -p ${pidfile} &
PID=$!
sleep 1
./nbd-tester-client localhost 11113
retval=$?
if [ $retval -ne 0 ]
then
- if [ -f nbd-server.pid ]
+ if [ -f ${pidfile} ]
then
- kill `cat nbd-server.pid`
- rm -f nbd-server.pid
+ kill `cat ${pidfile}`
else
kill $PID
fi
if [ -z "$2" ]
then
- rm -f $tmpnam nbd-server.conf
+ rm -rf $tmpdir
fi
exit $retval
fi
;;
*/cfgnew)
# Test new-style exports
- cat >nbd-server.conf <<EOF
+ cat >${conffile} <<EOF
[generic]
[export1]
exportname = $tmpnam
EOF
- ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
+ ./nbd-server -C ${conffile} -p ${pidfile} &
PID=$!
sleep 1
./nbd-tester-client localhost -N export1
retval=$?
;;
*/write)
- # Test new-style exports
- cat >nbd-server.conf <<EOF
+ # Test writing
+ cat >${conffile} <<EOF
[generic]
[export1]
exportname = $tmpnam
EOF
- ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
+ ./nbd-server -C ${conffile} -p ${pidfile} &
PID=$!
sleep 1
./nbd-tester-client localhost -N export1 -w
retval=$?
;;
*/flush)
- # Test new-style exports
- cat >nbd-server.conf <<EOF
+ # Test writes with flush
+ cat >${conffile} <<EOF
[generic]
[export1]
exportname = $tmpnam
+ flush = true
+ fua = true
+ rotational = true
EOF
- ./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
+ ./nbd-server -C ${conffile} -p ${pidfile} &
PID=$!
sleep 1
./nbd-tester-client localhost -N export1 -w -f
retval=$?
;;
+ */integrity)
+ # Integrity test
+ cat >${conffile} <<EOF
+[generic]
+[export1]
+ exportname = $tmpnam
+ flush = true
+ fua = true
+ rotational = true
+EOF
+ # we need a bigger disk
+ dd if=/dev/zero of=$tmpnam bs=1M count=50 >/dev/null 2>&1
+ ./nbd-server -C ${conffile} -p ${pidfile} &
+ PID=$!
+ sleep 1
+ ./nbd-tester-client localhost -N export1 -i -t ${mydir}/integrity-test.tr
+ retval=$?
+ ;;
+ */integrityhuge)
+ # Integrity test
+ cat >${conffile} <<EOF
+[generic]
+[export1]
+ exportname = $tmpnam
+ flush = true
+ fua = true
+ rotational = true
+EOF
+ # we need a bigger disk
+ dd if=/dev/zero of=$tmpnam bs=1M count=50 >/dev/null 2>&1
+ ./nbd-server -C ${conffile} -p ${pidfile} &
+ PID=$!
+ sleep 1
+ ./nbd-tester-client localhost -N export1 -i -t ${mydir}/integrityhuge-test.tr
+ retval=$?
+ ;;
*)
echo "E: unknown test $1"
exit 1
;;
esac
-if [ -f nbd-server.pid ]
+if [ -f ${pidfile} ]
then
- kill `cat nbd-server.pid`
- rm -f nbd-server.pid
+ kill `cat ${pidfile}`
else
kill $PID
fi
if [ -z "$2" ]
then
- rm -f $tmpnam nbd-server.conf
+ rm -rf $tmpdir
fi
if [ $retval -ne 0 ]
then