summaryrefslogtreecommitdiff
path: root/source4/script/tests/test_win.sh
blob: 071336e8569c8fd7522dcae952944fed22a77f27 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/bin/sh

# A shell script to connect to a windows host over telnet,
# setup for a smbtorture test,
# run the test,
# and remove the previously configured directory and share.
# Copyright Brad Henry <brad@samba.org> 2006
# Released under the GNU GPL v2 or later.

. script/tests/test_functions.sh

# This variable is defined in the per-hosts .fns file.
. $WINTESTCONF

# 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_share_test()
{
	echo -e "\nSetting up windows environment."
	cat $WINTEST_DIR/common.exp > $TMPDIR/setup.exp
	cat $WINTEST_DIR/wintest_setup.exp >> $TMPDIR/setup.exp
	expect $TMPDIR/setup.exp
	err_rtn=$?
	rm -f $TMPDIR/setup.exp
}

# Clean up the windows environment after the test has run or failed.
remove_share_test()
{
	echo -e "\nCleaning up windows environment."
	cat $WINTEST_DIR/common.exp > $TMPDIR/remove.exp
	cat $WINTEST_DIR/wintest_remove.exp >> $TMPDIR/remove.exp
	expect $TMPDIR/remove.exp
	err_rtn=$?
	rm -f $TMPDIR/remove.exp
}

restore_snapshot()
{
	echo -e $1
	perl -I$WINTEST_DIR $WINTEST_DIR/vm_load_snapshot.pl
	echo "Snapshot restored."
}

# Index variable to count the total number of tests which fail.
all_errs=0

export SMBTORTURE_REMOTE_HOST=`perl -I$WINTEST_DIR $WINTEST_DIR/vm_get_ip.pl`
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."
	exit 1
fi

share_tests="BASE-UNLINK BASE-ATTR BASE-DELETE BASE-TCON BASE-OPEN BASE-CHKPATH"
share_tests="$share_tests RAW-QFILEINFO RAW-SFILEINFO RAW-MKDIR RAW-SEEK"
share_tests="$share_tests RAW-OPEN RAW-WRITE RAW-UNLINK RAW-READ RAW-CLOSE"
share_tests="$share_tests RAW-IOCTL RAW-RENAME RAW-EAS RAW-STREAMS"

for t in $share_tests; do
	test_name="$t / WINDOWS SERVER"
	echo -e "\n$test_name SETUP PHASE"

	setup_share_test

	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."
	else
		echo -e "\n$test_name setup completed successfully."
		old_errs=$all_errs

		testit "$test_name" $SMBTORTURE_BIN_PATH \
			-U $SMBTORTURE_USERNAME%$SMBTORTURE_PASSWORD \
			-d 10 -W $SMBTORTURE_WORKGROUP \
			//$SMBTORTURE_REMOTE_HOST/$SMBTORTURE_REMOTE_SHARE_NAME \
			$t || all_errs=`expr $all_errs + 1`
		if [ $old_errs -lt $all_errs ]; then
			# If test fails, load VM snapshot and skip cleanup.
			restore_snapshot "\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."
			else
				echo -e "\n$test_name removal completed successfully."
			fi
		fi
	fi
done

rpc_tests="RPC-WINREG RPC-ASYNCBIND RPC-ATSVC RPC-DSSETUP RPC-EPMAPPER"
rpc_tests="$rpc_tests RPC-INITSHUTDOWN RPC-LSA-GETUSER RPC-MULTIBIND RPC-ROT"
rpc_tests="$rpc_tests RPC-SECRETS RPC-SRVSVC RPC-SVCCTL RPC-WKSSVC"

for t in $rpc_tests; do
	test_name="$t / WINDOWS SERVER"
	old_errs=$all_errs

	testit "$test_name" $SMBTORTURE_BIN_PATH \
		-U $SMBTORTURE_USERNAME%$SMBTORTURE_PASSWORD \
		-W $SMBTORTURE_WORKGROUP \
		ncacn_np:$SMBTORTURE_REMOTE_HOST \
		$t || all_errs=`expr $all_errs + 1`
	if [ $old_errs -lt $all_errs ]; then
		restore_snapshot "\n$test_name failed."
	fi
done

test_name="WINDOWS CLIENT / SAMBA SERVER SHARE"
old_errs=$all_errs
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`

if [ $old_errs -lt $all_errs ]; then
	# Restore snapshot to ensure VM is in a known state.
	restore_snapshot "\n$test_name failed."
	echo "Snapshot restored."
fi
rm -f $TMPDIR/client_test.exp

testok $0 $all_errs