r18979: With these extra indexes (also added for the normal case) and a
[kai/samba.git] / source4 / script / tests / selftest.sh
1 #!/bin/sh
2 # Bootstrap Samba and run a number of tests against it.
3
4 if [ $# -lt 1 ]
5 then
6         echo "$0 PREFIX TESTS"
7         exit
8 fi
9
10 ARG0=$0
11 ARG1=$1
12 ARG2=$2
13 ARG3=$3
14
15 if [ -z "$TORTURE_MAXTIME" ]; then
16     TORTURE_MAXTIME=1200
17 fi
18
19 # disable rpc validation when using valgrind - its way too slow
20 if [ -z "$VALGRIND" ]; then
21     VALIDATE="validate";
22 else
23     VALIDATE="";
24 fi
25
26 OLD_PWD=`pwd`
27 PREFIX=$ARG1
28 PREFIX=`echo $PREFIX | sed s+//+/+`
29 export PREFIX
30
31 # allow selection of the test lists
32 TESTS=$ARG2
33
34 if [ $TESTS = "all" ]; then
35     TLS_ENABLED="yes"
36 else
37     TLS_ENABLED="no"
38 fi
39 export TLS_ENABLED
40
41 LD_LIBRARY_PATH=$OLD_PWD/bin:$LD_LIBRARY_PATH
42 export LD_LIBRARY_PATH
43
44 incdir=`dirname $ARG0`
45 echo -n "PROVISIONING..."
46 . $incdir/mktestsetup.sh $PREFIX || exit 1
47 echo "DONE"
48
49 PATH=bin:$PATH
50 export PATH
51
52 DO_SOCKET_WRAPPER=$ARG3
53 if [ x"$DO_SOCKET_WRAPPER" = x"SOCKET_WRAPPER" ];then
54         SOCKET_WRAPPER_DIR="$PREFIX/w"
55         export SOCKET_WRAPPER_DIR
56         echo "SOCKET_WRAPPER_DIR=$SOCKET_WRAPPER_DIR"
57 else
58         echo "NOT USING SOCKET_WRAPPER"
59 fi
60
61 incdir=`dirname $ARG0`
62 . $incdir/test_functions.sh
63
64 #Start slapd before smbd
65 if [ x"$TEST_LDAP" = x"yes" ]; then
66     slapd_start || exit 1;
67     echo -n "LDAP PROVISIONING..."
68     $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS --ldap-backend=$LDAPI || {
69         echo "LDAP PROVISIONING failed: $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS --ldap-backend=$LDAPI"
70         exit 1;
71     }
72     #LDAP is slow
73     TORTURE_MAXTIME=`expr $TORTURE_MAXTIME '*' 2`
74 fi
75
76 SMBD_TEST_FIFO="$PREFIX/smbd_test.fifo"
77 export SMBD_TEST_FIFO
78 SMBD_TEST_LOG="$PREFIX/smbd_test.log"
79 export SMBD_TEST_LOG
80
81 SOCKET_WRAPPER_DEFAULT_IFACE=1
82 export SOCKET_WRAPPER_DEFAULT_IFACE
83 smbd_check_or_start
84
85 SOCKET_WRAPPER_DEFAULT_IFACE=6
86 export SOCKET_WRAPPER_DEFAULT_IFACE
87 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'
88 TORTURE_OPTIONS="--option=interfaces=$TORTURE_INTERFACES $CONFIGURATION"
89 # ensure any one smbtorture call doesn't run too long
90 TORTURE_OPTIONS="$TORTURE_OPTIONS --maximum-runtime=$TORTURE_MAXTIME"
91 TORTURE_OPTIONS="$TORTURE_OPTIONS --target=samba4"
92 export TORTURE_OPTIONS
93
94 if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
95         TORTURE_OPTIONS="$TORTURE_OPTIONS --option=torture:progress=no"
96 fi
97
98 START=`date`
99 (
100  # give time for nbt server to register its names
101  echo delaying for nbt name registration
102  sleep 4
103  # This will return quickly when things are up, but be slow if we need to wait for (eg) SSL init 
104  bin/nmblookup $CONFIGURATION $SERVER
105  bin/nmblookup $CONFIGURATION -U $SERVER $SERVER
106  bin/nmblookup $CONFIGURATION $SERVER
107  bin/nmblookup $CONFIGURATION -U $SERVER $NETBIOSNAME
108  bin/nmblookup $CONFIGURATION $NETBIOSNAME
109  bin/nmblookup $CONFIGURATION -U $SERVER $NETBIOSNAME
110
111 # start off with 0 failures
112 failed=0
113 export failed
114 totalfailed=0
115 export totalfailed
116
117  . script/tests/tests_$TESTS.sh
118  exit $totalfailed
119 ) 9>$SMBD_TEST_FIFO
120 failed=$?
121
122 kill `cat $PIDDIR/smbd.pid`
123
124 if [ "$TEST_LDAP"x = "yesx" ]; then
125     kill `cat $PIDDIR/slapd.pid`
126 fi
127
128 END=`date`
129 echo "START: $START ($ARG0)";
130 echo "END:   $END ($ARG0)";
131
132 # if there were any valgrind failures, show them
133 count=`find $PREFIX -name 'valgrind.log*' | wc -l`
134 if [ "$count" != 0 ]; then
135     for f in $PREFIX/valgrind.log*; do
136         if [ -s $f ] && grep -v DWARF2.CFI.reader $f > /dev/null; then
137             echo "VALGRIND FAILURE";
138             failed=`expr $failed + 1`
139             cat $f
140         fi
141     done
142 fi
143
144 teststatus $ARG0 $failed