2 # Bootstrap Samba and run a number of tests against it.
15 if [ -z "$TORTURE_MAXTIME" ]; then
19 # disable rpc validation when using valgrind - its way too slow
20 if [ -z "$VALGRIND" ]; then
28 PREFIX=`echo $PREFIX | sed s+//+/+`
31 # allow selection of the test lists
34 if [ $TESTS = "all" ]; then
41 LD_LDB_MODULE_PATH=$OLD_PWD/bin/modules/ldb
42 export LD_LDB_MODULE_PATH
44 LD_SAMBA_MODULE_PATH=$OLD_PWD/bin/modules
45 export LD_SAMBA_MODULE_PATH
47 LD_LIBRARY_PATH=$OLD_PWD/bin/shared:$LD_LIBRARY_PATH
48 export LD_LIBRARY_PATH
50 PKG_CONFIG_PATH=$OLD_PWD/bin/pkgconfig:$PKG_CONFIG_PATH
51 export PKG_CONFIG_PATH
53 incdir=`dirname $ARG0`
54 echo -n "PROVISIONING..."
55 eval `$incdir/mktestsetup.sh $PREFIX || exit 1`
60 export TEST_DATA_PREFIX
71 DO_SOCKET_WRAPPER=$ARG3
72 if [ x"$DO_SOCKET_WRAPPER" = x"SOCKET_WRAPPER" ];then
73 SOCKET_WRAPPER_DIR="$PREFIX/w"
74 export SOCKET_WRAPPER_DIR
75 echo "SOCKET_WRAPPER_DIR=$SOCKET_WRAPPER_DIR"
77 echo "NOT USING SOCKET_WRAPPER"
80 incdir=`dirname $ARG0`
81 . $incdir/test_functions.sh
83 #Start slapd before smbd
84 if [ x"$TEST_LDAP" = x"yes" ]; then
85 if test -z "$FEDORA_DS_PREFIX"; then
86 slapd_start || exit 1;
88 fedora_ds_start || exit 1;
90 echo -n "LDAP PROVISIONING..."
91 $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS "$PROVISION_ACI" --ldap-backend=$LDAP_URI || {
92 echo "LDAP PROVISIONING failed: $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS $PROVISION_ACI --ldap-backend=$LDAP_URI"
96 TORTURE_MAXTIME=`expr $TORTURE_MAXTIME '*' 2`
99 SMBD_TEST_FIFO="$PREFIX/smbd_test.fifo"
100 export SMBD_TEST_FIFO
101 SMBD_TEST_LOG="$PREFIX/smbd_test.log"
104 SOCKET_WRAPPER_DEFAULT_IFACE=1
105 export SOCKET_WRAPPER_DEFAULT_IFACE
108 SOCKET_WRAPPER_DEFAULT_IFACE=6
109 export SOCKET_WRAPPER_DEFAULT_IFACE
110 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'
111 TORTURE_OPTIONS="--option=interfaces=$TORTURE_INTERFACES $CONFIGURATION"
112 # ensure any one smbtorture call doesn't run too long
113 TORTURE_OPTIONS="$TORTURE_OPTIONS --maximum-runtime=$TORTURE_MAXTIME"
114 TORTURE_OPTIONS="$TORTURE_OPTIONS --target=samba4"
115 export TORTURE_OPTIONS
117 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
118 TORTURE_OPTIONS="$TORTURE_OPTIONS --option=torture:progress=no"
122 if [ -z "$PREFIX" ]; then
132 shname=`echo $name | \
133 sed -e 's%[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\-]%_%g'`
135 UNIQUE_PID=`/bin/sh -c 'echo $$'`
136 TEST_LOG="$PREFIX/test_log.${UNIQUE_PID}"
137 TEST_PCAP="$PREFIX/test_${shname}_${UNIQUE_PID}.pcap"
138 trap "rm -f $TEST_LOG $TEST_PCAP" EXIT
140 if [ -n "$SMBD_TEST_LOG" -a -z "$smbd_log_size" ]; then
141 smbd_log_size=`wc -l < $SMBD_TEST_LOG`;
144 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
145 echo "--==--==--==--==--==--==--==--==--==--==--"
146 echo "Running test $name (level 0 stdout)"
147 echo "--==--==--==--==--==--==--==--==--==--==--"
151 nf="`expr $failed + $totalfailed`";
152 if [ "$nf" = "0" ]; then
153 echo "[$current/$total] Testing $name"
155 echo "[$current/$total, $nf failures] Testing $name"
159 smbd_check_only && SMBD_IS_UP="yes"
160 if [ x"$SMBD_IS_UP" != x"yes" ];then
161 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
162 echo "SMBD is down! Skipping: $cmdline"
163 echo "=========================================="
164 echo "TEST SKIPPED: $name (reason SMBD is down)"
165 echo "=========================================="
167 echo "TEST SKIPPED: $name (reason SMBD is down)"
172 if [ x"$MAKE_TEST_ENABLE_PCAP" = x"yes" ];then
173 SOCKET_WRAPPER_PCAP_FILE=$TEST_PCAP
174 export SOCKET_WRAPPER_PCAP_FILE
177 ( $cmdline > $TEST_LOG 2>&1 )
179 # show any additional output from smbd that has happened in this test
180 smbd_have_test_log && {
181 new_log_size=`wc -l < $SMBD_TEST_LOG`;
182 test "$new_log_size" = "$smbd_log_size" || {
184 incr_log_size=`expr $new_log_size - $smbd_log_size`;
185 tail -$incr_log_size $SMBD_TEST_LOG;
186 smbd_log_size=$new_log_size;
189 if [ x"$status" != x"0" ]; then
193 if [ x"$MAKE_TEST_ENABLE_PCAP" = x"yes" ];then
194 echo "TEST PCAP: $TEST_PCAP"
196 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
197 echo "=========================================="
198 echo "TEST FAILED: $name (status $status)"
199 echo "=========================================="
201 echo "TEST FAILED: $cmdline (status $status)"
207 if [ x"$MAKE_TEST_KEEP_PCAP" = x"yes" ];then
208 echo "TEST PCAP: $TEST_PCAP"
212 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
213 echo "ALL OK: $cmdline"
214 echo "=========================================="
215 echo "TEST PASSED: $name"
216 echo "=========================================="
224 # give time for nbt server to register its names
225 echo delaying for nbt name registration
227 # This will return quickly when things are up, but be slow if we need to wait for (eg) SSL init
228 bin/nmblookup $CONFIGURATION $SERVER
229 bin/nmblookup $CONFIGURATION -U $SERVER $SERVER
230 bin/nmblookup $CONFIGURATION $SERVER
231 bin/nmblookup $CONFIGURATION -U $SERVER $NETBIOSNAME
232 bin/nmblookup $CONFIGURATION $NETBIOSNAME
233 bin/nmblookup $CONFIGURATION -U $SERVER $NETBIOSNAME
235 # start off with 0 failures
239 . script/tests/tests_$TESTS.sh > $PREFIX/recipe
240 total=`grep "TEST --" $PREFIX/recipe | wc -l`
242 cat $PREFIX/recipe | (
245 if [ "$LINE" = "-- TEST --" ]; then
248 current=`expr $current + 1`
249 runtest "$NAME" "$CMDLINE" || totalfailed=`expr $totalfailed + $?`
260 smbd_PID=`cat $PIDDIR/smbd.pid`
261 waitforpid $smbd_PID 20 || {
262 echo "smbd process $1 took more than 20 seconds to exit, killing"
266 if [ "$TEST_LDAP"x = "yesx" ]; then
267 if test -z "$FEDORA_DS_PREFIX"; then
268 kill `cat $PIDDIR/slapd.pid`
270 $LDAPDIR/slapd-samba4/stop-slapd
275 echo "START: $START ($ARG0)";
276 echo "END: $END ($ARG0)";
278 # if there were any valgrind failures, show them
279 count=`find $PREFIX -name 'valgrind.log*' | wc -l`
280 if [ "$count" != 0 ]; then
281 for f in $PREFIX/valgrind.log*; do
282 if [ -s $f ] && grep -v DWARF2.CFI.reader $f > /dev/null; then
283 echo "VALGRIND FAILURE";
284 totalfailed=`expr $totalfailed + 1`
290 teststatus $ARG0 $totalfailed