[GLUE] Rsync SAMBA_3_2_0 SVN r25598 in order to create the v3-2-test branch.
[samba.git] / source / script / tests / test_functions.sh
index f263677bfcfc2e0a1f0d8fa8a49f186d114434b1..1cc9ea12643ee90529d1c627687d9b2ec5036535 100644 (file)
@@ -40,11 +40,14 @@ samba3_check_or_start() {
                rm -f $NMBD_TEST_LOG
                echo -n "STARTING NMBD..."
                ((
-                       if ! test -n "$NMBD_MAXTIME"; then
+                       if test x"$NMBD_MAXTIME" = x; then
                            NMBD_MAXTIME=2700
                        fi
-                       timelimit $NMBD_MAXTIME $NMBD_VALGRIND $SRCDIR/bin/nmbd -F -S --no-process-group -d0 -s $SERVERCONFFILE > $NMBD_TEST_LOG 2>&1 &
+                       MAKE_TEST_BINARY=$BINDIR/nmbd
+                       export MAKE_TEST_BINARY
+                       timelimit $NMBD_MAXTIME $NMBD_VALGRIND $BINDIR/nmbd -F -S --no-process-group -d0 -s $SERVERCONFFILE > $NMBD_TEST_LOG 2>&1 &
                        TIMELIMIT_NMBD_PID=$!
+                       MAKE_TEST_BINARY=
                        echo $TIMELIMIT_NMBD_PID > $PIDDIR/timelimit.nmbd.pid
                        wait $TIMELIMIT_NMBD_PID
                        ret=$?;
@@ -69,11 +72,14 @@ samba3_check_or_start() {
                rm -f $SMBD_TEST_LOG
                echo -n "STARTING SMBD..."
                ((
-                       if ! test -n "$SMBD_MAXTIME"; then
+                       if test x"$SMBD_MAXTIME" = x; then
                            SMBD_MAXTIME=2700
                        fi
-                       timelimit $SMBD_MAXTIME $SMBD_VALGRIND $SRCDIR/bin/smbd -F -S --no-process-group -d0 -s $SERVERCONFFILE > $SMBD_TEST_LOG 2>&1 &
+                       MAKE_TEST_BINARY=$BINDIR/smbd
+                       export MAKE_TEST_BINARY
+                       timelimit $SMBD_MAXTIME $SMBD_VALGRIND $BINDIR/smbd -F -S --no-process-group -d0 -s $SERVERCONFFILE > $SMBD_TEST_LOG 2>&1 &
                        TIMELIMIT_SMBD_PID=$!
+                       MAKE_TEST_BINARY=
                        echo $TIMELIMIT_SMBD_PID > $PIDDIR/timelimit.smbd.pid
                        wait $TIMELIMIT_SMBD_PID
                        ret=$?;
@@ -133,11 +139,26 @@ testit() {
        fi
        name=$1
        shift 1
-       SERVERS_ARE_UP="no"
-       TEST_LOG="$PREFIX/test_log.$$"
-       trap "rm -f $TEST_LOG" EXIT
+       binary=$1
        cmdline="$*"
 
+       SERVERS_ARE_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 [ -z "$nmbd_log_size" ]; then
+               nmbd_log_size=`wc -l < $NMBD_TEST_LOG`;
+       fi
+       if [ -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)"
@@ -160,17 +181,44 @@ testit() {
                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
+
+       MAKE_TEST_BINARY=$binary
+       export MAKE_TEST_BINARY
        ( $cmdline > $TEST_LOG 2>&1 )
        status=$?
+       MAKE_TEST_BINARY=
+       # show any additional output from smbd that has happened in this test
+       samba3_nmbd_test_log && {
+               new_log_size=`wc -l < $NMBD_TEST_LOG`;
+               test "$new_log_size" = "$nmbd_log_size" || {
+                       echo "NMBD OUTPUT:";
+                       incr_log_size=`expr $new_log_size - $nmbd_log_size`;
+                       tail -$incr_log_size $NMBD_TEST_LOG;
+                       nmbd_log_size=$new_log_size;
+               }
+       }
+       samba3_smbd_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;
-               samba3_nmbd_test_log && echo "NMBD OUTPUT:";
-               samba3_nmbd_test_log && cat $NMBD_TEST_LOG;
-               samba3_smbd_test_log && echo "SMBD OUTPUT:";
-               samba3_smbd_test_log && cat $SMBD_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)"
@@ -178,15 +226,22 @@ testit() {
                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;
 }