source: branches/samba-3.2.x/source/script/tests/selftest.sh

Last change on this file was 228, checked in by Herwig Bauernfeind, 16 years ago

Update 3.2 branch to 3.2.6

File size: 7.9 KB
Line 
1#!/bin/sh
2
3if [ $# != 3 ]; then
4 echo "$0 <directory> <all | quick> <smbtorture4>"
5 exit 1
6fi
7
8SMBTORTURE4=$3
9SUBTESTS=$2
10
11##
12## create the test directory
13##
14PREFIX=`echo $1 | sed s+//+/+`
15mkdir -p $PREFIX || exit $?
16OLD_PWD=`pwd`
17cd $PREFIX || exit $?
18PREFIX_ABS=`pwd`
19cd $OLD_PWD
20
21if [ -z "$TORTURE_MAXTIME" ]; then
22 TORTURE_MAXTIME=300
23fi
24export TORTURE_MAXTIME
25
26##
27## setup the various environment variables we need
28##
29
30WORKGROUP=SAMBA-TEST
31SERVER=localhost2
32SERVER_IP=127.0.0.2
33USERNAME=`PATH=/usr/ucb:$PATH whoami`
34USERID=`PATH=/usr/ucb:$PATH id | cut -d ' ' -f1 | sed -e 's/uid=\([0-9]*\).*/\1/g'`
35GROUPID=`PATH=/usr/ucb:$PATH id | cut -d ' ' -f2 | sed -e 's/gid=\([0-9]*\).*/\1/g'`
36PASSWORD=test
37
38SRCDIR="`dirname $0`/../.."
39BINDIR="`pwd`/bin"
40SCRIPTDIR=$SRCDIR/script/tests
41SHRDIR=$PREFIX_ABS/tmp
42LIBDIR=$PREFIX_ABS/lib
43PIDDIR=$PREFIX_ABS/pid
44CONFFILE=$LIBDIR/client.conf
45SAMBA4CONFFILE=$LIBDIR/samba4client.conf
46SERVERCONFFILE=$LIBDIR/server.conf
47COMMONCONFFILE=$LIBDIR/common.conf
48PRIVATEDIR=$PREFIX_ABS/private
49LOCKDIR=$PREFIX_ABS/lockdir
50LOGDIR=$PREFIX_ABS/logs
51SOCKET_WRAPPER_DIR=$PREFIX/sw
52CONFIGURATION="--configfile $CONFFILE"
53SAMBA4CONFIGURATION="-s $SAMBA4CONFFILE"
54NSS_WRAPPER_PASSWD="$PRIVATEDIR/passwd"
55NSS_WRAPPER_GROUP="$PRIVATEDIR/group"
56WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbindd
57WINBINDD_PRIV_PIPE_DIR=$LOCKDIR/winbindd_privileged
58
59export PREFIX PREFIX_ABS
60export CONFIGURATION CONFFILE SAMBA4CONFIGURATION SAMBA4CONFFILE
61export PATH SOCKET_WRAPPER_DIR DOMAIN
62export PRIVATEDIR LIBDIR PIDDIR LOCKDIR LOGDIR SERVERCONFFILE
63export SRCDIR SCRIPTDIR BINDIR
64export USERNAME PASSWORD
65export WORKGROUP SERVER SERVER_IP
66export NSS_WRAPPER_PASSWD NSS_WRAPPER_GROUP
67export WINBINDD_SOCKET_DIR WINBINDD_PRIV_PIPE_DIR
68
69PATH=bin:$PATH
70export PATH
71
72if test x"$LD_LIBRARY_PATH" != x""; then
73 LD_LIBRARY_PATH="$BINDIR:$LD_LIBRARY_PATH"
74else
75 LD_LIBRARY_PATH="$BINDIR"
76fi
77echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
78export LD_LIBRARY_PATH
79
80SAMBA4BINDIR=`dirname $SMBTORTURE4`
81SAMBA4SHAREDDIR="$SAMBA4BINDIR/shared"
82
83export SAMBA4SHAREDDIR
84export SMBTORTURE4
85
86##
87## verify that we were built with --enable-socket-wrapper
88##
89
90if test "x`smbd -b | grep SOCKET_WRAPPER`" = "x"; then
91 echo "***"
92 echo "*** You must include --enable-socket-wrapper when compiling Samba"
93 echo "*** in order to execute 'make test'. Exiting...."
94 echo "***"
95 exit 1
96fi
97
98if test "x`smbd -b | grep NSS_WRAPPER`" = "x"; then
99 echo "***"
100 echo "*** You must include --enable-nss-wrapper when compiling Samba"
101 echo "*** in order to execute 'make test'. Exiting...."
102 echo "***"
103 exit 1
104fi
105
106
107##
108## create the test directory layout
109##
110printf "%s" "CREATE TEST ENVIRONMENT IN '$PREFIX'"...
111/bin/rm -rf $PREFIX/*
112mkdir -p $PRIVATEDIR $LIBDIR $PIDDIR $LOCKDIR $LOGDIR
113mkdir -p $SOCKET_WRAPPER_DIR
114mkdir -p $WINBINDD_SOCKET_DIR
115chmod 755 $WINBINDD_SOCKET_DIR
116mkdir -p $PREFIX_ABS/tmp
117chmod 777 $PREFIX_ABS/tmp
118
119##
120## Create the common config include file with the basic settings
121##
122
123cat >$COMMONCONFFILE<<EOF
124 workgroup = $WORKGROUP
125
126 private dir = $PRIVATEDIR
127 pid directory = $PIDDIR
128 lock directory = $LOCKDIR
129 log file = $LOGDIR/log.%m
130 log level = 0
131
132 name resolve order = bcast
133EOF
134
135TORTURE_INTERFACES='127.0.0.6/8,127.0.0.7/8,127.0.0.8/8,127.0.0.9/8,127.0.0.10/8,127.0.0.11/8'
136
137cat >$CONFFILE<<EOF
138[global]
139 netbios name = TORTURE_6
140 interfaces = $TORTURE_INTERFACES
141 panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
142 include = $COMMONCONFFILE
143
144 passdb backend = tdbsam
145EOF
146
147cat >$SAMBA4CONFFILE<<EOF
148[global]
149 netbios name = TORTURE_6
150 interfaces = $TORTURE_INTERFACES
151 panic action = $SCRIPTDIR/gdb_backtrace %PID% %PROG%
152 include = $COMMONCONFFILE
153EOF
154
155cat >$SERVERCONFFILE<<EOF
156[global]
157 netbios name = $SERVER
158 interfaces = $SERVER_IP/8
159 bind interfaces only = yes
160 panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
161 include = $COMMONCONFFILE
162
163 passdb backend = tdbsam
164
165 domain master = yes
166 domain logons = yes
167 time server = yes
168
169 add user script = $PERL $SRCDIR/lib/nss_wrapper/nss_wrapper.pl --path $NSS_WRAPPER_PASSWD --type passwd --action add --name %u
170 add machine script = $PERL $SRCDIR/lib/nss_wrapper/nss_wrapper.pl --path $NSS_WRAPPER_PASSWD --type passwd --action add --name %u
171 delete user script = $PERL $SRCDIR/lib/nss_wrapper/nss_wrapper.pl --path $NSS_WRAPPER_PASSWD --type passwd --action delete --name %u
172
173 kernel oplocks = no
174 kernel change notify = no
175
176 syslog = no
177 printing = bsd
178 printcap name = /dev/null
179
180 winbindd:socket dir = $WINBINDD_SOCKET_DIR
181 idmap uid = 100000-200000
182 idmap gid = 100000-200000
183
184# min receivefile size = 4000
185
186[tmp]
187 path = $PREFIX_ABS/tmp
188 read only = no
189 smbd:sharedelay = 100000
190 smbd:writetimeupdatedelay = 500000
191 map hidden = yes
192 map system = yes
193 create mask = 755
194 vfs objects = $BINDIR/xattr_tdb.so $BINDIR/streams_depot.so
195[hideunread]
196 copy = tmp
197 hide unreadable = yes
198[hideunwrite]
199 copy = tmp
200 hide unwriteable files = yes
201[print1]
202 copy = tmp
203 printable = yes
204 printing = test
205[print2]
206 copy = print1
207[print3]
208 copy = print1
209[print4]
210 copy = print1
211EOF
212
213##
214## create a test account
215##
216
217cat >$NSS_WRAPPER_PASSWD<<EOF
218nobody:x:65534:65533:nobody gecos:$PREFIX_ABS:/bin/false
219$USERNAME:x:$USERID:$GROUPID:$USERNAME gecos:$PREFIX_ABS:/bin/false
220EOF
221
222cat >$NSS_WRAPPER_GROUP<<EOF
223nobody:x:65533:
224nogroup:x:65534:nobody
225$USERNAME-group:x:$GROUPID:
226EOF
227
228MAKE_TEST_BINARY="bin/smbpasswd"
229export MAKE_TEST_BINARY
230
231(echo $PASSWORD; echo $PASSWORD) | \
232 bin/smbpasswd -c $CONFFILE -L -s -a $USERNAME >/dev/null || exit 1
233
234echo "DONE";
235
236MAKE_TEST_BINARY=""
237
238SERVER_TEST_FIFO="$PREFIX/server_test.fifo"
239export SERVER_TEST_FIFO
240NMBD_TEST_LOG="$PREFIX/nmbd_test.log"
241export NMBD_TEST_LOG
242WINBINDD_TEST_LOG="$PREFIX/winbindd_test.log"
243export WINBINDD_TEST_LOG
244SMBD_TEST_LOG="$PREFIX/smbd_test.log"
245export SMBD_TEST_LOG
246
247# start off with 0 failures
248failed=0
249export failed
250
251. $SCRIPTDIR/test_functions.sh
252
253SOCKET_WRAPPER_DEFAULT_IFACE=2
254export SOCKET_WRAPPER_DEFAULT_IFACE
255samba3_check_or_start
256
257
258# ensure any one smbtorture call doesn't run too long
259# and smbtorture will use 127.0.0.6 as source address by default
260SOCKET_WRAPPER_DEFAULT_IFACE=6
261export SOCKET_WRAPPER_DEFAULT_IFACE
262TORTURE4_OPTIONS="$SAMBA4CONFIGURATION"
263TORTURE4_OPTIONS="$TORTURE4_OPTIONS --maximum-runtime=$TORTURE_MAXTIME"
264TORTURE4_OPTIONS="$TORTURE4_OPTIONS --target=samba3"
265TORTURE4_OPTIONS="$TORTURE4_OPTIONS --option=torture:localdir=$PREFIX_ABS/tmp"
266export TORTURE4_OPTIONS
267
268if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
269 TORTURE4_OPTIONS="$TORTURE4_OPTIONS --option=torture:progress=no"
270fi
271
272
273##
274## ready to go...now loop through the tests
275##
276
277START=`date`
278(
279 # give time for nbt server to register its names
280 echo "delaying for nbt name registration"
281 sleep 10
282 # This will return quickly when things are up, but be slow if we need to wait for (eg) SSL init
283 MAKE_TEST_BINARY="bin/nmblookup"
284 bin/nmblookup $CONFIGURATION -U $SERVER_IP __SAMBA__
285 bin/nmblookup $CONFIGURATION __SAMBA__
286 bin/nmblookup $CONFIGURATION -U 127.255.255.255 __SAMBA__
287 bin/nmblookup $CONFIGURATION -U $SERVER_IP $SERVER
288 bin/nmblookup $CONFIGURATION $SERVER
289 # make sure smbd is also up set
290 echo "wait for smbd"
291 MAKE_TEST_BINARY="bin/smbclient"
292 bin/smbclient $CONFIGURATION -L $SERVER_IP -U% -p 139 | head -2
293 bin/smbclient $CONFIGURATION -L $SERVER_IP -U% -p 139 | head -2
294 MAKE_TEST_BINARY=""
295
296 failed=0
297
298 . $SCRIPTDIR/tests_$SUBTESTS.sh
299 exit $failed
300)
301failed=$?
302
303samba3_stop_sig_term
304
305END=`date`
306echo "START: $START ($0)";
307echo "END: $END ($0)";
308
309# if there were any valgrind failures, show them
310count=`find $PREFIX -name 'valgrind.log*' | wc -l`
311if [ "$count" != 0 ]; then
312 for f in $PREFIX/valgrind.log*; do
313 if [ -s $f ]; then
314 echo "VALGRIND FAILURE";
315 failed=`expr $failed + 1`
316 cat $f
317 fi
318 done
319fi
320
321sleep 2
322samba3_stop_sig_kill
323
324teststatus $0 $failed
Note: See TracBrowser for help on using the repository browser.