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.
# Copyright Brad Henry <brad@samba.org> 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
. $WINTESTCONF
$SRCDIR/script/tests/test_win.sh
- status=$?
-
- echo "$0 exits with status $status"
- exit $status
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."
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"
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
fi
done
-testok $0 $all_errs
+exit $all_errs
# 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
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
-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
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"
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
fi
done
-testok $0 $all_errs
+exit $all_errs
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
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