X-Git-Url: http://git.samba.org/samba.git/?p=garming%2Fsamba-autobuild%2F.git;a=blobdiff_plain;f=source4%2Fscript%2Ftests%2Fselftest.sh;h=fa94412136dd9f21fe4e6481c04f9f06f9059afb;hp=be4e91694735bd4fb8627818e5cfddbfd531b482;hb=d18afd6aeec0831a46d75470383e7eb7bdfd8de5;hpb=9d9e5abdcee6581ff42d7bdcf7b236472cbec347 diff --git a/source4/script/tests/selftest.sh b/source4/script/tests/selftest.sh index be4e9169473..fa94412136d 100755 --- a/source4/script/tests/selftest.sh +++ b/source4/script/tests/selftest.sh @@ -1,190 +1,223 @@ #!/bin/sh # Bootstrap Samba and run a number of tests against it. -DOMAIN=SAMBADOMAIN -USERNAME=administrator -REALM=SAMBA.EXAMPLE.COM -PASSWORD=penguin -SRCDIR=`pwd` -ROOT=$USER -SERVER=localhost -NETBIOSNAME=localtest -if test -z "$ROOT"; then - ROOT=$LOGNAME -fi -if test -z "$ROOT"; then - ROOT=`whoami` -fi - if [ $# -lt 1 ] then - echo "$0 PREFIX" + echo "$0 PREFIX TESTS" exit fi +ARG0=$0 +ARG1=$1 +ARG2=$2 +ARG3=$3 + if [ -z "$TORTURE_MAXTIME" ]; then - TORTURE_MAXTIME=300 + TORTURE_MAXTIME=1200 fi +# disable rpc validation when using valgrind - its way too slow +if [ -z "$VALGRIND" ]; then + VALIDATE="validate"; +else + VALIDATE=""; +fi -PREFIX=$1 +OLD_PWD=`pwd` +PREFIX=$ARG1 PREFIX=`echo $PREFIX | sed s+//+/+` export PREFIX # allow selection of the test lists -TESTS=$2 +TESTS=$ARG2 if [ $TESTS = "all" ]; then TLS_ENABLED="yes" else TLS_ENABLED="no" fi +export TLS_ENABLED -mkdir -p $PREFIX || exit $? -OLD_PWD=`pwd` -cd $PREFIX || exit $? -PREFIX_ABS=`pwd` -export PREFIX_ABS -cd $OLD_PWD +LD_LDB_MODULE_PATH=$OLD_PWD/bin/modules/ldb +export LD_LDB_MODULE_PATH -TEST_DATA_PREFIX=$PREFIX_ABS -export TEST_DATA_PREFIX +LD_SAMBA_MODULE_PATH=$OLD_PWD/bin/modules +export LD_SAMBA_MODULE_PATH -LD_LIBRARY_PATH=$OLD_PWD/bin:$LD_LIBRARY_PATH +LD_LIBRARY_PATH=$OLD_PWD/bin/shared:$LD_LIBRARY_PATH export LD_LIBRARY_PATH -TMPDIR=$PREFIX_ABS/tmp -LIBDIR=$PREFIX_ABS/lib -ETCDIR=$PREFIX_ABS/etc -PIDDIR=$PREFIX_ABS/pid -CONFFILE=$ETCDIR/smb.conf -KRB5_CONFIG=$ETCDIR/krb5.conf -PRIVATEDIR=$PREFIX_ABS/private -NCALRPCDIR=$PREFIX_ABS/ncalrpc -LOCKDIR=$PREFIX_ABS/lockdir -TLSDIR=$PRIVATEDIR/tls -WINBINDD_SOCKET_DIR=$PREFIX_ABS/winbind_socket -CONFIGURATION="--configfile=$CONFFILE" +PKG_CONFIG_PATH=$OLD_PWD/bin/pkgconfig:$PKG_CONFIG_PATH +export PKG_CONFIG_PATH + +incdir=`dirname $ARG0` +echo -n "PROVISIONING..." +eval `$incdir/mktestsetup.sh $PREFIX || exit 1` +echo "DONE" + +export KRB5_CONFIG +export PREFIX_ABS +export TEST_DATA_PREFIX export CONFIGURATION export CONFFILE +export PIDDIR +export AUTH +export SERVER +export NETBIOSNAME -SMBD_TEST_FIFO="$PREFIX/smbd_test.fifo" -export SMBD_TEST_FIFO -SMBD_TEST_LOG="$PREFIX/smbd_test.log" -export SMBD_TEST_LOG +PATH=bin:$PATH +export PATH -DO_SOCKET_WRAPPER=$3 +DO_SOCKET_WRAPPER=$ARG3 if [ x"$DO_SOCKET_WRAPPER" = x"SOCKET_WRAPPER" ];then - SOCKET_WRAPPER_DIR="$PREFIX/sw" + SOCKET_WRAPPER_DIR="$PREFIX/w" export SOCKET_WRAPPER_DIR echo "SOCKET_WRAPPER_DIR=$SOCKET_WRAPPER_DIR" +else + echo "NOT USING SOCKET_WRAPPER" fi -# start off with 0 failures -failed=0 -export failed - -incdir=`dirname $0` +incdir=`dirname $ARG0` . $incdir/test_functions.sh -PATH=bin:$PATH -export PATH +#Start slapd before smbd +if [ x"$TEST_LDAP" = x"yes" ]; then + if test -z "$FEDORA_DS_PREFIX"; then + slapd_start || exit 1; + else + fedora_ds_start || exit 1; + fi + echo -n "LDAP PROVISIONING..." + $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS "$PROVISION_ACI" --ldap-backend=$LDAP_URI || { + echo "LDAP PROVISIONING failed: $srcdir/bin/smbscript $srcdir/setup/provision $PROVISION_OPTIONS $PROVISION_ACI --ldap-backend=$LDAP_URI" + exit 1; + } + #LDAP is slow + TORTURE_MAXTIME=`expr $TORTURE_MAXTIME '*' 2` +fi -rm -rf $PREFIX/* -mkdir -p $PRIVATEDIR $ETCDIR $LIBDIR $PIDDIR $NCALRPCDIR $LOCKDIR $TMPDIR $TLSDIR - -cat >$PRIVATEDIR/wins_config.ldif<$CONFFILE<$KRB5_CONFIG</dev/null || exit 1 + runtest() { + if [ -z "$PREFIX" ]; then + PREFIX=test_prefix + mkdir -p $PREFIX + fi + name=$1 + shift 1 + cmdline="$*" -echo "DONE" + SMBD_IS_UP="no" -if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then - CONFIGURATION="$CONFIGURATION --option=\"torture:progress=no\"" -fi + shname=`echo $name | \ + sed -e 's%[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\-]%_%g'` -SOCKET_WRAPPER_DEFAULT_IFACE=1 -export SOCKET_WRAPPER_DEFAULT_IFACE -smbd_check_or_start + UNIQUE_PID=`/bin/sh -c 'echo $$'` + TEST_LOG="$PREFIX/test_log.${UNIQUE_PID}" + TEST_PCAP="$PREFIX/test_${shname}_${UNIQUE_PID}.pcap" + trap "rm -f $TEST_LOG $TEST_PCAP" EXIT -# ensure any one smbtorture call doesn't run too long -SOCKET_WRAPPER_DEFAULT_IFACE=26 -export SOCKET_WRAPPER_DEFAULT_IFACE -TORTURE_INTERFACES='127.0.0.26/8,127.0.0.27/8,127.0.0.28/8,127.0.0.29/8,127.0.0.30/8,127.0.0.31/8' -TORTURE_OPTIONS="--maximum-runtime=$TORTURE_MAXTIME --option=interfaces=$TORTURE_INTERFACES $CONFIGURATION" -export TORTURE_OPTIONS + if [ -n "$SMBD_TEST_LOG" -a -z "$smbd_log_size" ]; then + smbd_log_size=`wc -l < $SMBD_TEST_LOG`; + fi + + if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then + echo "--==--==--==--==--==--==--==--==--==--==--" + echo "Running test $name (level 0 stdout)" + echo "--==--==--==--==--==--==--==--==--==--==--" + date + echo "Testing $name" + else + nf="`expr $failed + $totalfailed`"; + if [ "$nf" = "0" ]; then + echo "[$current/$total] Testing $name" + else + echo "[$current/$total, $nf failures] Testing $name" + fi + fi + + smbd_check_only && SMBD_IS_UP="yes" + if [ x"$SMBD_IS_UP" != x"yes" ];then + if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then + echo "SMBD is down! Skipping: $cmdline" + echo "==========================================" + echo "TEST SKIPPED: $name (reason SMBD is down)" + echo "==========================================" + else + echo "TEST SKIPPED: $name (reason SMBD is down)" + fi + return 1 + fi + + if [ x"$MAKE_TEST_ENABLE_PCAP" = x"yes" ];then + SOCKET_WRAPPER_PCAP_FILE=$TEST_PCAP + export SOCKET_WRAPPER_PCAP_FILE + fi + + ( $cmdline > $TEST_LOG 2>&1 ) + status=$? + # show any additional output from smbd that has happened in this test + smbd_have_test_log && { + new_log_size=`wc -l < $SMBD_TEST_LOG`; + test "$new_log_size" = "$smbd_log_size" || { + echo "SMBD OUTPUT:"; + incr_log_size=`expr $new_log_size - $smbd_log_size`; + tail -$incr_log_size $SMBD_TEST_LOG; + smbd_log_size=$new_log_size; + } + } + if [ x"$status" != x"0" ]; then + echo "TEST OUTPUT:" + cat $TEST_LOG; + rm -f $TEST_LOG; + if [ x"$MAKE_TEST_ENABLE_PCAP" = x"yes" ];then + echo "TEST PCAP: $TEST_PCAP" + fi + if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then + echo "==========================================" + echo "TEST FAILED: $name (status $status)" + echo "==========================================" + else + echo "TEST FAILED: $cmdline (status $status)" + fi + trap "" EXIT + return 1; + fi + rm -f $TEST_LOG; + if [ x"$MAKE_TEST_KEEP_PCAP" = x"yes" ];then + echo "TEST PCAP: $TEST_PCAP" + else + rm -f $TEST_PCAP; + fi + if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then + echo "ALL OK: $cmdline" + echo "==========================================" + echo "TEST PASSED: $name" + echo "==========================================" + fi + trap "" EXIT + return 0; +} START=`date` ( @@ -199,29 +232,59 @@ START=`date` bin/nmblookup $CONFIGURATION $NETBIOSNAME bin/nmblookup $CONFIGURATION -U $SERVER $NETBIOSNAME - failed=0 - - . script/tests/tests_$TESTS.sh - exit $failed +# start off with 0 failures +totalfailed=0 +export totalfailed + +. script/tests/tests_$TESTS.sh > $PREFIX/recipe +total=`grep "TEST --" $PREFIX/recipe | wc -l` +current=0 +cat $PREFIX/recipe | ( + while read LINE + do + if [ "$LINE" = "-- TEST --" ]; then + read NAME + read CMDLINE + current=`expr $current + 1` + runtest "$NAME" "$CMDLINE" || totalfailed=`expr $totalfailed + $?` + else + echo "$LINE" + fi + done + exit $totalfailed +) +exit $? ) 9>$SMBD_TEST_FIFO -failed=$? - -kill `cat $PIDDIR/smbd.pid` +totalfailed=$? + +smbd_PID=`cat $PIDDIR/smbd.pid` +waitforpid $smbd_PID 20 || { + echo "smbd process $1 took more than 20 seconds to exit, killing" + kill -9 $smbd_PID +} + +if [ "$TEST_LDAP"x = "yesx" ]; then + if test -z "$FEDORA_DS_PREFIX"; then + kill `cat $PIDDIR/slapd.pid` + else + $LDAPDIR/slapd-samba4/stop-slapd + fi +fi END=`date` -echo "START: $START ($0)"; -echo "END: $END ($0)"; +echo "START: $START ($ARG0)"; +echo "END: $END ($ARG0)"; # 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 + if [ -s $f ] && grep -v DWARF2.CFI.reader $f > /dev/null; then echo "VALGRIND FAILURE"; - failed=`expr $failed + 1` + totalfailed=`expr $totalfailed + 1` cat $f fi done fi -teststatus $0 $failed +teststatus $ARG0 $totalfailed