svn commit: samba r16503 - in branches/SOC/bnh/expect: .

brad at samba.org brad at samba.org
Sat Jun 24 20:32:36 GMT 2006


Author: brad
Date: 2006-06-24 20:32:36 +0000 (Sat, 24 Jun 2006)
New Revision: 16503

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16503

Log:
wintest.conf is a config file containing parameters used by the wintest_run.sh shell script.
Changed wintest_run.sh to use parameters from wintest.conf. 
Modularized setup, test and removal phases, as well as error handling and stdout/stderr redirection facilities.


Added:
   branches/SOC/bnh/expect/wintest.conf
Modified:
   branches/SOC/bnh/expect/wintest_run.sh


Changeset:
Added: branches/SOC/bnh/expect/wintest.conf
===================================================================
--- branches/SOC/bnh/expect/wintest.conf	2006-06-24 20:29:42 UTC (rev 16502)
+++ branches/SOC/bnh/expect/wintest.conf	2006-06-24 20:32:36 UTC (rev 16503)
@@ -0,0 +1,40 @@
+
+# Resolvable hostname or ip address of the windows host we are testing against.
+export SMBTORTURE_REMOTE_HOST="192.168.100.3"
+
+# Command prompt that we are expecting on the windows host.
+export SMBTORTURE_REMOTE_PROMPT=">"
+
+# The username and password we will be testing with.
+# This user will have admin rights on the remote windows host.
+export SMBTORTURE_USERNAME="tortureuser"
+export SMBTORTURE_PASSWORD="torturepass"
+
+# The name of the workgroup we will be using on the remote windows host.
+export SMBTORTURE_WORKGROUP="SMBTEST"
+
+# The name of and path to the windows share we'll be testing against.
+export SMBTORTURE_REMOTE_SHARE_NAME="smbtorture_share"
+export SMBTORTURE_REMOTE_SHARE_PATH="%HOMEDRIVE%\smbtorture_shared_dir"
+
+# Default timeout for the expect scripts to wait for a response from the remote.
+export SMBTORTURE_EXPECT_TIMEOUT=30
+
+# Path to the local smbtorture binary.
+export SMBTORTURE_BIN_PATH="/usr/local/samba/bin/smbtorture"
+
+# Local system hostname and ip address we'll be adding to the remote's
+# hosts file.
+export SMBTORTURE_LOCAL_HOSTNAME="buttercup"
+export SMBTORTURE_LOCAL_IP="192.168.100.60"
+
+# Filename of the windows hosts' unedited hosts file.
+export REMOTE_BACKUP_HOSTS_FILENAME="hosts.smbtorture"
+export REMOTE_HOSTS_FILE_PATH="%SYSTEMROOT%\\system32\\drivers\\etc"
+
+# These variables represent the file that STDOUT and STDERR
+# are redirected to during the setup, test and removal phases of the test.
+# These files are deleted when the test begins its run.
+# Special files (devices, named pipes, etc) are not deleted.
+STDOUT_REDIR="wintest.stdout"
+STDERR_REDIR="wintest.stderr"

Modified: branches/SOC/bnh/expect/wintest_run.sh
===================================================================
--- branches/SOC/bnh/expect/wintest_run.sh	2006-06-24 20:29:42 UTC (rev 16502)
+++ branches/SOC/bnh/expect/wintest_run.sh	2006-06-24 20:32:36 UTC (rev 16503)
@@ -2,63 +2,127 @@
 
 # A shell script to connect to a windows host over telnet,
 # setup for a smbtorture test,
-# run the test, 
+# run the test,
 # and remove the previously configured directory and share.
 # Copyright Brad Henry <brad at samba.org> 2006
 # Released under the GNU GPL v2 or later.
 
-WINTEST_SETUP_ERROR_LOG="/tmp/wintest_setup.exp.err"
-WINTEST_REMOVE_ERROR_LOG="/tmp/wintest_remove.exp.err"
+. wintest.conf
 
-export SMBTORTURE_REMOTE_HOST=192.168.0.1
-export SMBTORTURE_REMOTE_PROMPT=">"
+# Setup the windows environment.
+# This was the best way I could figure out including library files
+# for the moment.
+# I was finding that "cat common.exp wintest_setup.exp | expect -f -"
+# fails to run, but exits with 0 status something like 1% of the time.
+setup_test()
+{
+	echo -e "\nSetting up windows environment." >> $STDOUT_REDIR
+	cat common.exp > ./setup.exp
+	cat wintest_setup.exp >> ./setup.exp
+	expect ./setup.exp \
+		>> $STDOUT_REDIR 2>> $STDERR_REDIR
+	err_rtn=$?
+	rm -f ./setup.exp
+}
 
-export SMBTORTURE_USERNAME="tortureuser"
-export SMBTORTURE_PASSWORD="torturepass"
+# Run the smbtorture test.
+run_test()
+{
+	echo -e "\nRunning smbtorture RAW-QFILEINFO test." >> $STDOUT_REDIR
+	$SMBTORTURE_BIN_PATH \
+		-U $SMBTORTURE_USERNAME%$SMBTORTURE_PASSWORD \
+		-d 10 -W $SMBTORTURE_WORKGROUP \
+		//$SMBTORTURE_REMOTE_HOST/$SMBTORTURE_REMOTE_SHARE_NAME \
+		RAW-QFILEINFO \
+		>> $STDOUT_REDIR 2>> $STDERR_REDIR
+	err_rtn=$?
+}
 
-export SMBTORTURE_SHARE_NAME="smbtorture_share"
-export SMBTORTURE_SHARE_PATH="c:\torture_share"
+# Clean up the windows environment after the test has run or failed.
+remove_test()
+{
+	echo -e "\nCleaning up windows environment." >> $STDOUT_REDIR
+	cat common.exp > ./remove.exp
+	cat wintest_remove.exp >> ./remove.exp
+	expect ./remove.exp \
+		>> $STDOUT_REDIR 2>> $STDERR_REDIR
+	err_rtn=$?
+	rm -f ./remove.exp
+}
 
-export SMBTORTURE_EXPECT_TIMEOUT=30
+display_output()
+{
+	cat $STDOUT_REDIR
+	cat $STDERR_REDIR
+}
 
-# Setup the windows environment.
-# This was the best way I could figure out including library files for the moment.
-cat common.exp wintest_setup.exp | expect -f - 2> $WINTEST_SETUP_ERROR_LOG
-err_setup=$?
+remove_files()
+{
+	# If these redirect to special files, we won't delete them.
+	for redir in $STDERR_REDIR \
+			$STDOUT_REDIR
+	do
 
-echo "wintest_setup.exp stderr output:"
-cat $WINTEST_SETUP_ERROR_LOG
-#rm -f $WINTEST_SETUP_ERROR_LOG
+		if [ ! -b $redir \
+			-a ! -c $redir \
+			-a ! -p $redir ]
+			then
+				rm -f $redir
+		fi
+	done
+}
 
-if [ $err_setup -ne 0 ] 
-then
-	exit $err_setup
-fi
+create_files()
+{
+	touch $STDOUT_REDIR
+	touch $STDERR_REDIR
+}
 
-# Run the smbtorture test.
-/usr/local/samba/bin/smbtorture \
-	-U $SMBTORTURE_USERNAME%$SMBTORTURE_PASSWORD \
-	-d 10 -W SMBTEST \
-	//$SMBTORTURE_REMOTE_HOST/$SMBTORTURE_SHARE_NAME \
-	RAW-QFILEINFO
-err_smbtorture=$?
+check_error()
+{
+	if [ $err_rtn -ne 0 ]
+		then
+			echo -e $err_str >> $err_redir
+			# Run cleanup.
+			remove_test
+			# Report output recieved so far.
+			display_output
+			# Exit in error
+			exit $err_rtn
+		else
+			echo -e $err_ok_str >> $err_redir
+	fi
+}
 
-if [ $err_smbtorture -ne 0 ]
-then
-	exit $err_smbtorture
-fi
+# If we crashed on a previous run, we want to know that our log files are clean.
+remove_files
 
-# Cleanup the windows environment.
-cat common.exp wintest_remove.exp | expect -f - 2> $WINTEST_REMOVE_ERROR_LOG
-err_remove=$?
+# Create the local log files.
+create_files
 
-echo "wintest_remove.exp stderr output:"
-cat $WINTEST_REMOVE_ERROR_LOG
-#rm -f $WINTEST_REMOVE_ERROR_LOG
+err_str="\nTest setup failed."
+err_ok_str="\nTest setup completed successfully."
+err_redir=$STDERR_REDIR
 
-if [ $err_remove -ne 0 ]
-then
-	exit $err_remove
-fi
+echo -e "\nSETUP PHASE" >> $STDOUT_REDIR
+setup_test
+check_error
 
-exit 0
+err_str="\nTest run failed."
+err_ok_str="\nTest run completed successfully."
+err_redir=$STDERR_REDIR
+
+echo -e "\nTEST PHASE" >> $STDOUT_REDIR
+run_test
+check_error
+
+err_str="\nTest removal failed."
+err_ok_str="\nTest removal completed successfully."
+err_redir=$STDERR_REDIR
+
+echo -e "\nREMOVAL PHASE" >> $STDOUT_REDIR
+remove_test
+check_error
+
+display_output
+exit $err_rtn



More information about the samba-cvs mailing list