:
#!/bin/sh
#
#       @(#)server	1.13 94/07/03 NFS Rev 2 testsuite
#      1.1 Lachman ONC Test Suite  source
#
# run tests given a server name.  mounts, tests, and unmounts
# arguments:
#	-a|-b|-g|-s|-l	test selectors, passed to runtests
#	-f|-t|-n	test arguments, passed to runtests
#	mnt_options	arg to -o mount options
#	server_path	path to mount from server
#	mntpoint	path to mount on locally
#	server_name	server to mount from
#
Program=`basename $0`

InitFile="./tests.init"
USAGE="usage:  $Program [-a|-b|-g|-s|-l] [-f|-t|-n|-h] [-o mnt_options] [-p server_path] [-m mntpoint] server_name"

# defaults
. $InitFile
export PATH CFLAGS LIBS MOUNT UMOUNT
DOMOUNT=1

set - `getopt abfglhm:no:p:stz $*`

if [ $? != 0 ]
then
	echo $USAGE
	exit 1
fi
for c in $*
do
	case $c in
		-a|-b|-g|-s|-l)	TEST=$c; shift	;;
		-f|-n|-t)	TESTARG=$c; shift	;;
		-h)		HARDLINKS=n; export HARDLINKS; shift	;;
		-m)		MNTPOINT=$2; shift; shift	;;
		-o)		MNTOPTIONS=$2; shift; shift	;;
		-p)		SERVPATH=$2; shift; shift	;;
		-z)		DOMOUNT=0; shift	;;
		--)		shift; break		;;
	esac
done

if test $# -gt 0
then
	SERVER=$1
	shift
	if test $# -gt 0
	then
		echo $USAGE
		exit 1
	fi
fi

if [ $DOMOUNT -eq 1 ]; then
	if [ -z "$MOUNT" ]; then
		for dir in /bin /sbin /etc /usr/bin /usr/sbin /usr/etc; do
			if [ -x $dir/mount ]; then
				MOUNT=$dir/mount
				break;
			fi
		done
		if [ -z "$MOUNT" ]; then
			echo "mount binary not found - " \
				"please set MOUNT envariable"
			exit 1
		fi
		echo "No mount binary specified - using $MOUNT"
	fi

	if [ -z "$UMOUNT" ]; then
		for dir in /bin /sbin /etc /usr/bin /usr/sbin /usr/etc; do
			if [ -x $dir/umount ]; then
				UMOUNT=$dir/umount
				break;
			fi
		done
		if [ -z "$UMOUNT" ]; then
			echo "umount binary not found - " \
				"please set UMOUNT envariable"
			exit 1
		fi
		echo "No umount binary specified - using $UMOUNT"
	fi

	# if no server specified, exit
	if [ -z "$SERVER" ]; then
		echo $USAGE
		exit 1
	fi

	if [ -z "$MNTPOINT" ]; then
		echo "No mount point specified"
		echo $USAGE
		exit 1
	fi
	if [ -z "$MNTOPTIONS" ]; then
		echo "No mount options specified"
		echo $USAGE
		exit 1
	fi
	if [ -z "$SERVPATH" ]; then
		echo "No server path specified"
		echo $USAGE
		exit 1
	fi

	# make sure nothing is mounted on the mountpoint
	eval $UMOUNTCMD > /dev/null 2>&1

	eval $MOUNTCMD
fi

case $? in
    0)
	;;
    *)
	echo "Can't mount $SERVER:$SERVPATH on $MNTPOINT"
	exit 1
	;;
esac

# mount doesn't always return error code if it fails, so lets
# ask here just in case
if [ -z "$NFSTESTDIR" ]; then
	HOSTNAME=`hostname`
	HOSTNAME=`expr $HOSTNAME : '\([^.]*\)'`
	NFSTESTDIR=$MNTPOINT/$HOSTNAME.test
fi
export NFSTESTDIR
echo $DASHN "Start tests on path $NFSTESTDIR [y/n]?" "$BLC"
read ans
case $ans in
    Y*|y*)
	;;
    *)
	echo "Terminating ($MNTPOINT not unmounted)."
	exit 1
	;;
esac
	
echo ""

echo "sh ./runtests $TEST $TESTARG $NFSTESTDIR"
sh ./runtests $TEST $TESTARG $NFSTESTDIR

if [ $? -ne 0 ]
then
	exit 1
fi

if [ "$DOMOUNT" -eq 1 ]; then
	eval $UMOUNTCMD
fi

exit 0
