summaryrefslogtreecommitdiff
path: root/source4/script/tests/selftest.sh
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2007-03-05 21:28:55 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:49:15 -0500
commit72d88d158a6e82392116bab09ce8704115072d07 (patch)
tree784921beb62ef9299515fb6910a3de3bff4ebbc0 /source4/script/tests/selftest.sh
parentd18afd6aeec0831a46d75470383e7eb7bdfd8de5 (diff)
downloadsamba-72d88d158a6e82392116bab09ce8704115072d07.tar.gz
samba-72d88d158a6e82392116bab09ce8704115072d07.tar.bz2
samba-72d88d158a6e82392116bab09ce8704115072d07.zip
r21707: Finally merge my (long-living) perlselftest branch.
This changes the main selftest code to be in perl rather than in shell script. The selftest script is now no longer a black box but a regular executable that takes --help. This adds the following features: * "make test TESTS=foo" will run only the tests that match the regex "foo" * ability to deal with expected failures. the suite will not warn about tests that fail and are known to fail, but will warn about other failing tests and tests that are succeeding tests but incorrectly marked as failing. * ability to print a summary with all failures at the end of the run It also opens up the way to the following features, which I hope to implement later: * "environments", for example having a complete domains with DCs and domain members in a testenvironment * only set up smbd if necessary (not when running LOCAL tests, for example) * different mktestsetup scripts per target. except for the mktestsetup script, we can use the same infrastructure for samba 3 or windows. (This used to be commit 38f867880beb40c691e9713f854426031310629c)
Diffstat (limited to 'source4/script/tests/selftest.sh')
-rwxr-xr-xsource4/script/tests/selftest.sh290
1 files changed, 0 insertions, 290 deletions
diff --git a/source4/script/tests/selftest.sh b/source4/script/tests/selftest.sh
deleted file mode 100755
index fa94412136..0000000000
--- a/source4/script/tests/selftest.sh
+++ /dev/null
@@ -1,290 +0,0 @@
-#!/bin/sh
-# Bootstrap Samba and run a number of tests against it.
-
-if [ $# -lt 1 ]
-then
- echo "$0 PREFIX TESTS"
- exit
-fi
-
-ARG0=$0
-ARG1=$1
-ARG2=$2
-ARG3=$3
-
-if [ -z "$TORTURE_MAXTIME" ]; then
- TORTURE_MAXTIME=1200
-fi
-
-# disable rpc validation when using valgrind - its way too slow
-if [ -z "$VALGRIND" ]; then
- VALIDATE="validate";
-else
- VALIDATE="";
-fi
-
-OLD_PWD=`pwd`
-PREFIX=$ARG1
-PREFIX=`echo $PREFIX | sed s+//+/+`
-export PREFIX
-
-# allow selection of the test lists
-TESTS=$ARG2
-
-if [ $TESTS = "all" ]; then
- TLS_ENABLED="yes"
-else
- TLS_ENABLED="no"
-fi
-export TLS_ENABLED
-
-LD_LDB_MODULE_PATH=$OLD_PWD/bin/modules/ldb
-export LD_LDB_MODULE_PATH
-
-LD_SAMBA_MODULE_PATH=$OLD_PWD/bin/modules
-export LD_SAMBA_MODULE_PATH
-
-LD_LIBRARY_PATH=$OLD_PWD/bin/shared:$LD_LIBRARY_PATH
-export LD_LIBRARY_PATH
-
-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
-
-PATH=bin:$PATH
-export PATH
-
-DO_SOCKET_WRAPPER=$ARG3
-if [ x"$DO_SOCKET_WRAPPER" = x"SOCKET_WRAPPER" ];then
- SOCKET_WRAPPER_DIR="$PREFIX/w"
- export SOCKET_WRAPPER_DIR
- echo "SOCKET_WRAPPER_DIR=$SOCKET_WRAPPER_DIR"
-else
- echo "NOT USING SOCKET_WRAPPER"
-fi
-
-incdir=`dirname $ARG0`
-. $incdir/test_functions.sh
-
-#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
-
-SMBD_TEST_FIFO="$PREFIX/smbd_test.fifo"
-export SMBD_TEST_FIFO
-SMBD_TEST_LOG="$PREFIX/smbd_test.log"
-export SMBD_TEST_LOG
-
-SOCKET_WRAPPER_DEFAULT_IFACE=1
-export SOCKET_WRAPPER_DEFAULT_IFACE
-smbd_check_or_start
-
-SOCKET_WRAPPER_DEFAULT_IFACE=6
-export SOCKET_WRAPPER_DEFAULT_IFACE
-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'
-TORTURE_OPTIONS="--option=interfaces=$TORTURE_INTERFACES $CONFIGURATION"
-# ensure any one smbtorture call doesn't run too long
-TORTURE_OPTIONS="$TORTURE_OPTIONS --maximum-runtime=$TORTURE_MAXTIME"
-TORTURE_OPTIONS="$TORTURE_OPTIONS --target=samba4"
-export TORTURE_OPTIONS
-
-if [ x"$RUN_FROM_BUILD_FARM" = x"yes" ];then
- TORTURE_OPTIONS="$TORTURE_OPTIONS --option=torture:progress=no"
-fi
-
- runtest() {
- if [ -z "$PREFIX" ]; then
- PREFIX=test_prefix
- mkdir -p $PREFIX
- fi
- name=$1
- shift 1
- cmdline="$*"
-
- SMBD_IS_UP="no"
-
- shname=`echo $name | \
- sed -e 's%[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\-]%_%g'`
-
- 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
-
- 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`
-(
- # 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 $SERVER
- bin/nmblookup $CONFIGURATION -U $SERVER $SERVER
- bin/nmblookup $CONFIGURATION $SERVER
- bin/nmblookup $CONFIGURATION -U $SERVER $NETBIOSNAME
- bin/nmblookup $CONFIGURATION $NETBIOSNAME
- bin/nmblookup $CONFIGURATION -U $SERVER $NETBIOSNAME
-
-# 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
-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 ($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 ] && grep -v DWARF2.CFI.reader $f > /dev/null; then
- echo "VALGRIND FAILURE";
- totalfailed=`expr $totalfailed + 1`
- cat $f
- fi
- done
-fi
-
-teststatus $ARG0 $totalfailed