blob: f613f2126f3c91ed9aae1aa4601867cb516bdff9 (
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
#!/bin/sh
if [ $# != 3 ]; then
echo "$0 <directory> <all | quick> <smbtorture4>"
exit 1
fi
SMBTORTURE4=$3
TESTS=$2
##
## create the test directory
##
PREFIX=`echo $1 | sed s+//+/+`
mkdir -p $PREFIX || exit $?
OLD_PWD=`pwd`
cd $PREFIX || exit $?
PREFIX_ABS=`pwd`
cd $OLD_PWD
if [ -z "$TORTURE_MAXTIME" ]; then
TORTURE_MAXTIME=300
fi
export TORTURE_MAXTIME
##
## setup the various environment variables we need
##
SERVER=localhost2
SERVER_IP=127.0.0.2
USERNAME=`PATH=/usr/ucb:$PATH whoami`
PASSWORD=test
SRCDIR="`dirname $0`/../.."
BINDIR="`pwd`/bin"
SCRIPTDIR=$SRCDIR/script/tests
SHRDIR=$PREFIX_ABS/tmp
LIBDIR=$PREFIX_ABS/lib
PIDDIR=$PREFIX_ABS/pid
CONFFILE=$LIBDIR/client.conf
SAMBA4CONFFILE=$LIBDIR/samba4client.conf
SERVERCONFFILE=$LIBDIR/server.conf
COMMONCONFFILE=$LIBDIR/common.conf
PRIVATEDIR=$PREFIX_ABS/private
LOCKDIR=$PREFIX_ABS/lockdir
LOGDIR=$PREFIX_ABS/logs
SOCKET_WRAPPER_DIR=$PREFIX/sw
CONFIGURATION="-s $CONFFILE"
SAMBA4CONFIGURATION="-s $SAMBA4CONFFILE"
export PREFIX PREFIX_ABS
export CONFIGURATION CONFFILE SAMBA4CONFIGURATION SAMBA4CONFFILE
export PATH SOCKET_WRAPPER_DIR DOMAIN
export PRIVATEDIR LIBDIR PIDDIR LOCKDIR LOGDIR SERVERCONFFILE
export SRCDIR SCRIPTDIR BINDIR
export USERNAME PASSWORD
export SMBTORTURE4
export SERVER SERVER_IP
PATH=bin:$PATH
export PATH
##
## verify that we were built with --enable-socket-wrapper
##
if test "x`smbd -b | grep SOCKET_WRAPPER`" = "x"; then
echo "***"
echo "*** You must include --enable-socket-wrapper when compiling Samba"
echo "*** in order to execute 'make test'. Exiting...."
echo "***"
exit 1
fi
##
## create the test directory layout
##
echo -n "CREATE TEST ENVIRONMENT IN '$PREFIX'"...
/bin/rm -rf $PREFIX/*
mkdir -p $PRIVATEDIR $LIBDIR $PIDDIR $LOCKDIR $LOGDIR $SOCKET_WRAPPER_DIR
mkdir -p $PREFIX_ABS/tmp
chmod 777 $PREFIX_ABS/tmp
##
## Create the common config include file with the basic settings
##
cat >$COMMONCONFFILE<<EOF
workgroup = SAMBA-TEST
private dir = $PRIVATEDIR
pid directory = $PIDDIR
lock directory = $LOCKDIR
log file = $LOGDIR/log.%m
log level = 0
name resolve order = bcast
EOF
TORTURE_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'
cat >$CONFFILE<<EOF
[global]
netbios name = TORTURE_6
interfaces = $TORTURE_INTERFACES
panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
include = $COMMONCONFFILE
passdb backend = tdbsam
EOF
cat >$SAMBA4CONFFILE<<EOF
[global]
netbios name = TORTURE_6
interfaces = $TORTURE_INTERFACES
panic action = $SCRIPTDIR/gdb_backtrace %PID% %PROG%
include = $COMMONCONFFILE
EOF
cat >$SERVERCONFFILE<<EOF
[global]
netbios name = $SERVER
interfaces = $SERVER_IP/8
bind interfaces only = yes
panic action = $SCRIPTDIR/gdb_backtrace %d %\$(MAKE_TEST_BINARY)
include = $COMMONCONFFILE
passdb backend = tdbsam
; Necessary to add the build farm hacks
add user script = /bin/false
add machine script = /bin/false
kernel oplocks = no
syslog = no
printing = bsd
printcap name = /dev/null
[tmp]
path = $PREFIX_ABS/tmp
read only = no
smbd:sharedelay = 100000
map hidden = yes
map system = yes
create mask = 755
[hideunread]
copy = tmp
hide unreadable = yes
[hideunwrite]
copy = tmp
hide unwriteable files = yes
[print1]
copy = tmp
printable = yes
printing = test
[print2]
copy = print1
[print3]
copy = print1
[print4]
copy = print1
EOF
##
## create a test account
##
(echo $PASSWORD; echo $PASSWORD) | \
smbpasswd -c $CONFFILE -L -s -a $USERNAME >/dev/null || exit 1
echo "DONE";
SERVER_TEST_FIFO="$PREFIX/server_test.fifo"
export SERVER_TEST_FIFO
NMBD_TEST_LOG="$PREFIX/nmbd_test.log"
export NMBD_TEST_LOG
SMBD_TEST_LOG="$PREFIX/smbd_test.log"
export SMBD_TEST_LOG
MAKE_TEST_BINARY=""
export MAKE_TEST_BINARY
# start off with 0 failures
failed=0
export failed
. $SCRIPTDIR/test_functions.sh
SOCKET_WRAPPER_DEFAULT_IFACE=2
export SOCKET_WRAPPER_DEFAULT_IFACE
samba3_check_or_start
# ensure any one smbtorture call doesn't run too long
# and smbtorture will use 127.0.0.6 as source address by default
SOCKET_WRAPPER_DEFAULT_IFACE=6
export SOCKET_WRAPPER_DEFAULT_IFACE
TORTURE4_OPTIONS="$SAMBA4CONFIGURATION"
TORTURE4_OPTIONS="$TORTURE4_OPTIONS --maximum-runtime=$TORTURE_MAXTIME"
TORTURE4_OPTIONS="$TORTURE4_OPTIONS --target=samba3"
export TORTURE4_OPTIONS
if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
TORTURE4_OPTIONS="$TORTURE4_OPTIONS --option=torture:progress=no"
fi
##
## ready to go...now loop through the tests
##
START=`date`
(
# give time for nbt server to register its names
echo "delaying for nbt name registration"
sleep 4
# This will return quickly when things are up, but be slow if we need to wait for (eg) SSL init
bin/nmblookup $CONFIGURATION -U $SERVER_IP __SAMBA__
bin/nmblookup $CONFIGURATION __SAMBA__
bin/nmblookup $CONFIGURATION -U 127.255.255.255 __SAMBA__
bin/nmblookup $CONFIGURATION -U $SERVER_IP $SERVER
bin/nmblookup $CONFIGURATION $SERVER
# make sure smbd is also up set
echo "wait for smbd"
bin/smbclient $CONFIGURATION -L $SERVER_IP -U% -p 139 | head -2
bin/smbclient $CONFIGURATION -L $SERVER_IP -U% -p 139 | head -2
failed=0
. $SCRIPTDIR/tests_$TESTS.sh
exit $failed
)
failed=$?
samba3_stop_sig_term
END=`date`
echo "START: $START ($0)";
echo "END: $END ($0)";
# if there were any valgrind failures, show them
count=`find $PREFIX -name 'valgrind.log*' | wc -l`
if [ "$count" != 0 ]; then
for f in $PREFIX/valgrind.log*; do
if [ -s $f ]; then
echo "VALGRIND FAILURE";
failed=`expr $failed + 1`
cat $f
fi
done
fi
sleep 2
samba3_stop_sig_kill
teststatus $0 $failed
|