From 48b0dabdbaf7538e0896dd137eec5cc97b50a59d Mon Sep 17 00:00:00 2001 From: Brad Henry Date: Wed, 21 Feb 2007 22:50:55 +0000 Subject: r21494: Fix 'make wintest' to support command-line changes to 'vm-get-ip.pl' and the revertsnapshot() shell function. Restructure existing tests to work with the recent build farm changes. Added windows DC testing to 'make wintest'. Some improvements and generalization to the way errors are handled. (This used to be commit de9687404e802d7e7629c9d03f496d3c5bd30397) --- source4/script/tests/test_win.sh | 40 +++++++++++++++++------------- source4/script/tests/tests_win.sh | 4 --- source4/script/tests/win/wintest_2k3_dc.sh | 6 ++--- source4/script/tests/win/wintest_base.sh | 26 ++++++++++++------- source4/script/tests/win/wintest_client.sh | 10 ++++---- source4/script/tests/win/wintest_net.sh | 15 +++++++---- source4/script/tests/win/wintest_raw.sh | 28 +++++++++++++-------- source4/script/tests/win/wintest_rpc.sh | 23 +++++++++-------- 8 files changed, 88 insertions(+), 64 deletions(-) (limited to 'source4') diff --git a/source4/script/tests/test_win.sh b/source4/script/tests/test_win.sh index 015ee459fc..577282b3ae 100755 --- a/source4/script/tests/test_win.sh +++ b/source4/script/tests/test_win.sh @@ -7,30 +7,36 @@ # Copyright Brad Henry 2006 # Released under the GNU GPL v2 or later. -# Index variable to count the total number of tests which fail. -all_errs=0 +. script/tests/test_functions.sh -export SMBTORTURE_REMOTE_HOST=`perl -I$WINTEST_DIR $WINTEST_DIR/vm_get_ip.pl` +export SMBTORTURE_REMOTE_HOST=`perl -I$WINTEST_DIR $WINTEST_DIR/vm_get_ip.pl VM_CFG_PATH` if [ -z $SMBTORTURE_REMOTE_HOST ]; then # Restore snapshot to ensure VM is in a known state, then exit. - restore_snapshot "Test failed to get the IP address of the windows host." + restore_snapshot "Test failed to get the IP address of the windows host." "$VM_CFG_PATH" exit 1 fi -$WINTEST_DIR/wintest_base.sh $SMBTORTURE_REMOTE_HOST $SMBTORTURE_USERNAME \ - $SMBTORTURE_PASSWORD $SMBTORTURE_WORKGROUP \ - || all_errs=`expr $all_errs + $?` +name="BASE against Windows 2003" +testit "$name" $WINTEST_DIR/wintest_base.sh $SMBTORTURE_REMOTE_HOST \ + $SMBTORTURE_USERNAME $SMBTORTURE_PASSWORD $SMBTORTURE_WORKGROUP -$WINTEST_DIR/wintest_raw.sh $SMBTORTURE_REMOTE_HOST $SMBTORTURE_USERNAME \ - $SMBTORTURE_PASSWORD $SMBTORTURE_WORKGROUP \ - || all_errs=`expr $all_errs + $?` +name="RAW against Windows 2003" +testit "$name" $WINTEST_DIR/wintest_raw.sh $SMBTORTURE_REMOTE_HOST \ + $SMBTORTURE_USERNAME $SMBTORTURE_PASSWORD $SMBTORTURE_WORKGROUP -$WINTEST_DIR/wintest_rpc.sh $SMBTORTURE_REMOTE_HOST $SMBTORTURE_USERNAME \ - $SMBTORTURE_PASSWORD $SMBTORTURE_WORKGROUP \ - || all_errs=`expr $all_errs + $?` +name="RPC against Windows 2003" +testit "$name" $WINTEST_DIR/wintest_rpc.sh $SMBTORTURE_REMOTE_HOST \ + $SMBTORTURE_USERNAME $SMBTORTURE_PASSWORD $SMBTORTURE_WORKGROUP -$WINTEST_DIR/wintest_net.sh $SMBTORTURE_REMOTE_HOST $SMBTORTURE_USERNAME \ - $SMBTORTURE_PASSWORD $SMBTORTURE_WORKGROUP \ - || all_errs=`expr $all_errs + $?` +name="NET against Windows 2003" +testit "$name" $WINTEST_DIR/wintest_net.sh $SMBTORTURE_REMOTE_HOST \ + $SMBTORTURE_USERNAME $SMBTORTURE_PASSWORD $SMBTORTURE_WORKGROUP -$WINTEST_DIR/wintest_client.sh || all_errs=`expr $all_errs + $?` +name="Windows 2003 against smbd" +testit "$name" $WINTEST_DIR/wintest_client.sh $SMBTORTURE_REMOTE_HOST + +dc_tests="RPC-DRSUAPI RPC-SPOOLSS ncacn_np ncacn_ip_tcp" +for name in $dc_tests; do + testit "$name against Windows 2003 DC" $WINTEST_DIR/wintest_2k3_dc.sh \ + "$name" +done diff --git a/source4/script/tests/tests_win.sh b/source4/script/tests/tests_win.sh index 5c3c81b1eb..b885056ace 100755 --- a/source4/script/tests/tests_win.sh +++ b/source4/script/tests/tests_win.sh @@ -28,7 +28,3 @@ . $WINTESTCONF $SRCDIR/script/tests/test_win.sh - status=$? - - echo "$0 exits with status $status" - exit $status diff --git a/source4/script/tests/win/wintest_2k3_dc.sh b/source4/script/tests/win/wintest_2k3_dc.sh index 7949dc4b9a..ee69a9834a 100755 --- a/source4/script/tests/win/wintest_2k3_dc.sh +++ b/source4/script/tests/win/wintest_2k3_dc.sh @@ -9,13 +9,11 @@ fi TESTGROUP=$1 -if [ -z $SRCDIR ]; then - echo "Please point environment variable SRCDIR to the Samba 4 source tree." +if [ -z $WINTEST_DIR ]; then + echo "Environment variable WINTEST_DIR not found." exit 1; fi -WINTEST_DIR=$SRCDIR/script/tests/win - # This variable is defined in the per-hosts .fns file for build-farm hosts that run windows tests. if [ -z $WINTESTCONF ]; then echo "Please point environment variable WINTESTCONF to your test_win.conf file." diff --git a/source4/script/tests/win/wintest_base.sh b/source4/script/tests/win/wintest_base.sh index fa436a4af8..b12d2923f7 100755 --- a/source4/script/tests/win/wintest_base.sh +++ b/source4/script/tests/win/wintest_base.sh @@ -20,9 +20,19 @@ password="$3" domain="$4" shift 4 +export SMBTORTURE_REMOTE_HOST=$server + base_tests="BASE-UNLINK BASE-ATTR BASE-DELETE BASE-TCON BASE-OPEN BASE-CHKPATH" all_errs=0 +err=0 + +on_error() { + errstr=$1 + + all_errs=`expr $all_errs + 1` + restore_snapshot $errstr "$VM_CFG_PATH" +} for t in $base_tests; do test_name="$t / WINDOWS SERVER" @@ -32,23 +42,21 @@ for t in $base_tests; do if [ $err_rtn -ne 0 ]; then # If test setup fails, load VM snapshot and skip test. - restore_snapshot "\n$test_name setup failed, skipping test." + on_error "\n$test_name setup failed, skipping test." else echo -e "\n$test_name setup completed successfully." - old_errs=$all_errs - testit "$test_name" $SMBTORTURE_BIN_PATH \ - -U $username%$password \ + $SMBTORTURE_BIN_PATH -U $username%$password \ -W $domain //$server/$SMBTORTURE_REMOTE_SHARE_NAME \ - $t || all_errs=`expr $all_errs + 1` - if [ $old_errs -lt $all_errs ]; then - restore_snapshot "\n$test_name failed." + $t || err=1 + if [ $err -ne 0 ]; then + on_error "\n$test_name failed." else echo -e "\n$test_name CLEANUP PHASE" remove_share_test if [ $err_rtn -ne 0 ]; then # If cleanup fails, restore VM snapshot. - restore_snapshot "\n$test_name removal failed." + on_error "\n$test_name removal failed." else echo -e "\n$test_name removal completed successfully." fi @@ -56,4 +64,4 @@ for t in $base_tests; do fi done -testok $0 $all_errs +exit $all_errs diff --git a/source4/script/tests/win/wintest_client.sh b/source4/script/tests/win/wintest_client.sh index cd6427a0bd..42fbc5c805 100755 --- a/source4/script/tests/win/wintest_client.sh +++ b/source4/script/tests/win/wintest_client.sh @@ -7,20 +7,20 @@ # This variable is defined in the per-hosts .fns file. . $WINTESTCONF +export SMBTORTURE_REMOTE_HOST=$1 + test_name="WINDOWS CLIENT / SAMBA SERVER SHARE" cat $WINTEST_DIR/common.exp > $TMPDIR/client_test.exp cat $WINTEST_DIR/wintest_client.exp >> $TMPDIR/client_test.exp -testit "$test_name" \ - expect $TMPDIR/client_test.exp || all_errs=`expr $all_errs + 1` +expect $TMPDIR/client_test.exp || all_errs=`expr $all_errs + 1` if [ $all_errs > 0 ]; then # Restore snapshot to ensure VM is in a known state. - restore_snapshot "\n$test_name failed." - echo "Snapshot restored." + restore_snapshot "\n$test_name failed." "$VM_CFG_PATH" fi rm -f $TMPDIR/client_test.exp -testok $0 $all_errs +exit $all_errs diff --git a/source4/script/tests/win/wintest_net.sh b/source4/script/tests/win/wintest_net.sh index d2dbb3bcc0..cd1fd2de92 100755 --- a/source4/script/tests/win/wintest_net.sh +++ b/source4/script/tests/win/wintest_net.sh @@ -34,6 +34,14 @@ bind_options="seal,padcheck bigendian" test_type="ncalrpc ncacn_np ncacn_ip_tcp" all_errs=0 + +on_error() { + errstr=$1 + + all_errs=`expr $all_errs + 1` + restore_snapshot $errstr "$VM_CFG_PATH" +} + for o in $bind_options; do for transport in $test_type; do case $transport in @@ -49,12 +57,9 @@ for o in $bind_options; do -U $username%$password \ -W $domain \ $transport:$server[$o] \ - $t || all_errs=`expr $all_errs + 1` - if [ $old_errs -lt $all_errs ]; then - restore_snapshot "\n$test_name failed." - fi + $t || on_error "\n$test_name failed." done done done -testok $0 $all_errs +exit $all_errs diff --git a/source4/script/tests/win/wintest_raw.sh b/source4/script/tests/win/wintest_raw.sh index 2459b21d6d..f974dc8770 100755 --- a/source4/script/tests/win/wintest_raw.sh +++ b/source4/script/tests/win/wintest_raw.sh @@ -20,10 +20,20 @@ password="$3" domain="$4" shift 4 +export SMBTORTURE_REMOTE_HOST=$server + raw_tests="RAW-QFILEINFO RAW-SFILEINFO RAW-MKDIR RAW-SEEK RAW-OPEN RAW-WRITE RAW-UNLINK RAW-READ RAW-CLOSE RAW-IOCTL RAW-RENAME RAW-EAS RAW-STREAMS" # This test fails: RAW-QFSINFO all_errs=0 +err=0 + +on_error() { + errstr=$1 + all_errs=`expr $all_errs + 1` + + restore_snapshot $errstr "$VM_CFG_PATH" +} for t in $raw_tests; do test_name="$t / WINDOWS SERVER" @@ -33,17 +43,15 @@ for t in $raw_tests; do if [ $err_rtn -ne 0 ]; then # If test setup fails, load VM snapshot and skip test. - restore_snapshot "\n$test_name setup failed, skipping test." + on_error "\n$test_name setup failed, skipping test." else echo -e "\n$test_name setup completed successfully." - old_errs=$all_errs - - testit "$test_name" $SMBTORTURE_BIN_PATH \ - -U $username%$password \ - -W $domain //$server/$SMBTORTURE_REMOTE_SHARE_NAME \ - $t || all_errs=`expr $all_errs + 1` - if [ $old_errs -lt $all_errs ]; then - restore_snapshot "\n$test_name failed." + + $SMBTORTURE_BIN_PATH -U $username%$password -W $domain \ + //$server/$SMBTORTURE_REMOTE_SHARE_NAME \ + $t || err=1 + if [ $err -ne 0 ]; then + on_error "\n$test_name failed." else echo -e "\n$test_name CLEANUP PHASE" remove_share_test @@ -57,4 +65,4 @@ for t in $raw_tests; do fi done -testok $0 $all_errs +exit $all_errs diff --git a/source4/script/tests/win/wintest_rpc.sh b/source4/script/tests/win/wintest_rpc.sh index 40a981e56d..34c195b074 100755 --- a/source4/script/tests/win/wintest_rpc.sh +++ b/source4/script/tests/win/wintest_rpc.sh @@ -37,6 +37,14 @@ bind_options="seal,padcheck bigendian" test_type="ncalrpc ncacn_np ncacn_ip_tcp" all_errs=0 + +on_error() { + errstr=$1 + all_errs=`expr $all_errs + 1` + + restore_snapshot $errstr "$VM_CFG_PATH" +} + for o in $bind_options; do for transport in $test_type; do case $transport in @@ -47,17 +55,12 @@ for o in $bind_options; do for t in $rpc_test; do test_name="$t on $transport with $o" - old_errs=$all_errs - testit "$test_name" $SMBTORTURE_BIN_PATH \ - -U $username%$password \ - -W $domain \ - $transport:$server[$o] \ - $t || all_errs=`expr $all_errs + 1` - if [ $old_errs -lt $all_errs ]; then - restore_snapshot "\n$test_name failed." - fi + + $SMBTORTURE_BIN_PATH -U $username%$password \ + -W $domain $transport:$server[$o] \ + $t || on_error "\n$test_name failed." done done done -testok $0 $all_errs +exit $all_errs -- cgit