#!/bin/sh
# Yes, that's POSIX sh, not bash!

tmpnam=`mktemp`

# Create a one-meg device
dd if=/dev/zero of=$tmpnam bs=1024 count=1024

echo $1

case $1 in
	*/cmd)
		# Test with export specified on command line
		./nbd-server -C /dev/null -p `pwd`/nbd-server.pid 11111 $tmpnam &
		# -p only works if nbd-server wasn't compiled with -DNOFORK or
		# -DNODAEMON, which I sometimes do for testing and debugging.
		PID=$!
		sleep 1
		./nbd-tester-client 127.0.0.1 11111
		retval=$?
	;;

	*/cfg1)
		# Test with export specified in config file
		cat > nbd-server.conf <<EOF
[generic]
[export]
	exportname = $tmpnam
	port = 11111
EOF
		./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
		PID=$!
		sleep 1
		./nbd-tester-client 127.0.0.1 11111
		retval=$?
	;;
	*/cfgmulti)
		# Test with multiple exports specified in config file, and
		# testing more options too
		cat >nbd-server.conf <<EOF
[generic]
[export1]
	exportname = $tmpnam
	port = 11111
	copyonwrite = true
	listenaddr = 127.0.0.1
[export2]
	exportname = $tmpnam
	port = 11112
	readonly = true
EOF
		./nbd-server -C nbd-server.conf -p `pwd`/nbd-server.pid &
		PID=$!
		sleep 1
		./nbd-tester-client localhost 11111
		retval=$?
		if [ $retval -ne 0 ]
		then
			if [ -f nbd-server.pid ]
			then
				kill `cat nbd-server.pid`
				rm -f nbd-server.pid
			else
				kill $PID
			fi
			rm -f $tmpnam nbd-server.conf
			exit $retval
		fi
		./nbd-tester-client localhost 11112
		retval=$?
	;;
	*)
		echo "E: unknown test $1"
		exit 1
	;;
esac
if [ -f nbd-server.pid ]
then
	kill `cat nbd-server.pid`
	rm -f nbd-server.pid
else
	kill $PID
fi
if [ $retval -ne 0 ]
then
	exit $retval
fi
rm -f $tmpnam nbd-server.conf
