X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=regress%2Fscripts%2Ffunctions;h=28f9912bcdf870de97a7fa5088196377be04f372;hb=72f8983beb4839ad6cd2840ece946913c4975b69;hp=f62807d1dbd0fbb6ae8c375cebca43a2b284e810;hpb=513c127b691667302c65270daf2b26785cf6b6b6;p=bacula%2Fbacula diff --git a/regress/scripts/functions b/regress/scripts/functions index f62807d1db..28f9912bcd 100644 --- a/regress/scripts/functions +++ b/regress/scripts/functions @@ -3,20 +3,37 @@ # +check_encoding() +{ + ${bin}/bacula-dir -d50 -t -c ${conf}/bacula-dir.conf 2>&1 | grep 'Wanted SQL_ASCII, got UTF8' >/dev/null + if [ $? = 0 ]; then + echo "Found database encoding problem, please modify the database encoding (SQL_ASCII)" + exit 1 + fi +} + start_test() { + check_encoding # Turn off email - outf="tmp/sed_tmp" + outf="${tmp}/sed_tmp" echo "s% mail =%# mail = %g" >${outf} echo "s% operator =%# operator =%g" >>${outf} - cp bin/bacula-dir.conf tmp/1 - sed -f ${outf} tmp/1 >bin/bacula-dir.conf + cp ${conf}/bacula-dir.conf ${tmp}/1 + sed -f ${outf} ${tmp}/1 > ${conf}/bacula-dir.conf echo " " echo " " echo " === Starting $TestName at `date +%R:%S` ===" - echo " === Starting $TestName at `date +%R:%S` ===" >>working/log + echo " === Starting $TestName at `date +%R:%S` ===" >> ${working}/log echo " " + export TestName export zstat + export estat + estat=0 + zstat=0 + bstat=0 + rstat=0 + dstat=0 } require_root() @@ -93,6 +110,10 @@ set_debug() print_debug() { + echo $* | grep ERROR > /dev/null + if test $? -eq 0; then + echo $* >> $tmp/err.log + fi if test "$debug" -eq 1 ; then echo $* fi @@ -105,7 +126,7 @@ check_files_written() FILES=`awk '/FD Files Written:/ { last=$4 } END { print last }' $LOG` if [ "$NB" != "$FILES" ]; then - print_debug "Expect $NB files, get $FILES" + print_debug "ERROR: Expect $NB files, get $FILES" bstat=2 fi } @@ -114,10 +135,10 @@ check_files_written() # Get information from logs get_mig_info() { - # index of the job in the log (start from 0) - IDX=$1 + # Prev Backup JobId + JOBID=$1 LOG=$2 - RET=`awk -v idx=$IDX -F: '/Prev Backup JobId/ { pbid[j++]=$2 } /New Backup JobId/ { nbid[i++]=$2 } END { print pbid[idx] " " nbid[idx] }' $LOG` + RET=`awk -F: "BEGIN { jobid=$JOBID } "'/Prev Backup JobId/ { cjid=$2 } /New Backup JobId/ { if (cjid == jobid) { print $2 } }' $LOG` } get_duration() @@ -143,43 +164,45 @@ run_bacula() { debug_wait zstat=0 + estat=0 if test "$debug" -eq 1 ; then - bin/bacula-ctl-sd start - bin/bacula-ctl-fd start $1 - bin/bacula-ctl-dir start - cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf + ${scripts}/bacula-ctl-sd start -m + ${scripts}/bacula-ctl-fd start -m $1 + ${scripts}/bacula-ctl-dir start -m + cat ${tmp}/bconcmds | ${bin}/bconsole -c ${conf}/bconsole.conf return $? else - bin/bacula start 2>&1 >/dev/null - cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf 2>&1 >/dev/null + ${scripts}/bacula start >/dev/null 2>&1 + cat ${tmp}/bconcmds | ${bin}/bconsole -c ${conf}/bconsole.conf >/dev/null 2>&1 return $? fi } run_bconsole() { + bconsole_file=${1:-${tmp}/bconcmds} if test "$debug" -eq 1 ; then - cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf + cat $bconsole_file | ${bin}/bconsole -c ${conf}/bconsole.conf else - cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf 2>&1 >/dev/null + cat $bconsole_file | ${bin}/bconsole -c ${conf}/bconsole.conf 2>&1 >/dev/null fi } run_btape() { if test "$debug" -eq 1 ; then - cat tmp/bconcmds | bin/btape -c bin/bacula-sd.conf DDS-4 | tee tmp/log1.out + cat ${tmp}/bconcmds | ${bin}/btape -c ${conf}/bacula-sd.conf tape | tee ${tmp}/log1.out else - cat tmp/bconcmds | bin/btape -c bin/bacula-sd.conf DDS-4 2>&1 >tmp/log1.out + cat ${tmp}/bconcmds | ${bin}/btape -c ${conf}/bacula-sd.conf tape >${tmp}/log1.out 2>&1 fi } run_bscan() { if test "$debug" -eq 1 ; then - bin/bscan $* | tee tmp/log.out + ${bin}/bscan $* | tee ${tmp}/log.out else - bin/bscan $* 2>&1 >/dev/null + ${bin}/bscan $* 2>&1 >/dev/null fi } @@ -201,12 +224,16 @@ bscan_libdbi() stop_bacula() { - bin/bacula stop 2>&1 >/dev/null + if test "$debug" -eq 1 ; then + ${scripts}/bacula stop + else + ${scripts}/bacula stop 2>&1 >/dev/null + fi } check_for_zombie_jobs() { - scripts/check_for_zombie_jobs $* + ${rscripts}/check_for_zombie_jobs $* } change_jobname() @@ -218,62 +245,106 @@ change_jobname() oldname=$1 newname=$2 fi - rm -f bin/1 - mv bin/bacula-dir.conf bin/1 - echo "s%${oldname}%${newname}%g" >tmp/1 - sed -f tmp/1 bin/1 >bin/bacula-dir.conf + rm -f $tmp/1 $tmp/2 + mv ${conf}/bacula-dir.conf $tmp/1 + echo "s%${oldname}%${newname}%g" >$tmp/2 + sed -f $tmp/2 $tmp/1 >$conf/bacula-dir.conf # echo "Job ${oldname} changed to ${newname}" } check_two_logs() { - grep "^ Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null - bstat=${bstat-$?} - grep "^ Termination: .*Backup Error" tmp/log1.out 2>&1 >/dev/null + grep "^ Termination: *Backup OK" ${tmp}/log1.out 2>&1 >/dev/null + bstat=${bstat:-$?} + grep "^ Termination: .*Backup Error" ${tmp}/log1.out 2>&1 >/dev/null if test $? -eq 0; then bstat=2 fi - grep "^ Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null - rstat=${rstat-$?} - grep "^ Termination: .*Restore Error" tmp/log2.out 2>&1 >/dev/null + grep "^ Termination: *Restore OK" ${tmp}/log2.out 2>&1 >/dev/null + rstat=${rstat:-$?} + grep "^ Termination: .*Restore Error" ${tmp}/log2.out 2>&1 >/dev/null if test $? -eq 0; then rstat=2 fi - grep "^ Termination: *Restore OK -- warning file count mismatch" tmp/log2.out 2>&1 >/dev/null + grep "^ Termination: *Restore OK -- warning file count mismatch" ${tmp}/log2.out 2>&1 >/dev/null if test $? -eq 0; then rstat=3 fi - grep "^ Termination: .*Verify Differences" tmp/log2.out 2>&1 >/dev/null + grep "^ Termination: .*Verify Differences" ${tmp}/log2.out 2>&1 >/dev/null if test $? -eq 0; then rstat=4 fi + grep "Encoding error for database" ${tmp}/log1.out > /dev/null + if test $? -eq 0; then + print_debug "Found database encoding error" + bstat=2 + fi } check_restore_diff() { if test "$debug" -eq 1 ; then - diff -ur build tmp/bacula-restores${cwd}/build + $rscripts/diff.pl -s ${src} -d ${tmp}/bacula-restores${src} + diff -ur ${src} ${tmp}/bacula-restores${src} + else + diff -ur ${src} ${tmp}/bacula-restores${src} 2>&1 >/dev/null + fi + dstat=$? +} + +check_restore_bin_diff() +{ + if test "$debug" -eq 1 ; then + $rscripts/diff.pl -s ${bin} -d ${tmp}/bacula-restores${bin} + diff -ur ${bin} ${tmp}/bacula-restores${bin} else - diff -ur build tmp/bacula-restores${cwd}/build 2>&1 >/dev/null + diff -ur ${bin} ${tmp}/bacula-restores${bin} 2>&1 >/dev/null fi dstat=$? } + check_restore_tmp_build_diff() { if test "$debug" -eq 1 ; then - diff -ur tmp/build tmp/bacula-restores${cwd}/tmp/build + $rscripts/diff.pl -s ${tmpsrc} -d ${tmp}/bacula-restores${tmpsrc} + diff -ur ${tmpsrc} ${tmp}/bacula-restores${tmpsrc} else - diff -ur tmp/build tmp/bacula-restores${cwd}/tmp/build 2>&1 >/dev/null + diff -ur ${tmpsrc} ${tmp}/bacula-restores${tmpsrc} 2>&1 >/dev/null fi dstat=$? } +# bstat is backup error +# dstat is diff difference +# estat is special error status (shown by print_debug message) +# rstat is restore status +# zstat is zombie job(s) +# end_test() { + if [ x$notracedump != xyes ]; then + cat ${working}/bacula.*.traceback 2>/dev/null + cp -f ${working}/bacula.*.traceback ${dumps} 2>/dev/null + cat ${working}/*.bactrace 2>/dev/null + cp -f ${working}/*.bactrace ${dumps} 2>/dev/null + fi + if [ -f $tmp/err.log ]; then + cat $tmp/err.log + fi + if [ $estat != 0 ] ; then + echo " " + echo " !!!!! $TestName failed!!! `date +%R:%S` !!!!! " + echo " Status: estat=$estat zombie=$zstat backup=$bstat restore=$rstat diff=$dstat" + echo " !!!!! $TestName failed!!! `date +%R:%S` !!!!! " >>test.out + echo " Status: estat=$estat zombie=$zstat backup=$bstat restore=$rstat diff=$dstat" >>test.out + echo " " + exit 1 + fi if [ $zstat != 0 ] ; then echo " " echo " !!!!! $TestName failed!!! `date +%R:%S` !!!!! " + echo " Status: zombie=$zstat backup=$bstat restore=$rstat diff=$dstat" echo " !!!!! $TestName failed!!! `date +%R:%S` !!!!! " >>test.out echo " Status: zombie=$zstat backup=$bstat restore=$rstat diff=$dstat" >>test.out echo " " @@ -283,7 +354,9 @@ end_test() echo " " echo " " echo " !!!!! $TestName failed!!! `date +%R:%S` !!!!! " + echo " Status: zombie=$zstat backup=$bstat restore=$rstat diff=$dstat" echo " !!!!! $TestName failed!!! `date +%R:%S` !!!!! " >>test.out + echo " Status: zombie=$zstat backup=$bstat restore=$rstat diff=$dstat" >>test.out if [ $bstat != 0 -o $rstat != 0 ] ; then echo " !!!!! Bad termination status !!!!! " echo " !!!!! Bad termination status !!!!! " >>test.out @@ -293,27 +366,48 @@ end_test() fi echo " Status: backup=$bstat restore=$rstat diff=$dstat" echo " Status: backup=$bstat restore=$rstat diff=$dstat" >>test.out + echo " Test owner of $SITE_NAME is $EMAIL" + echo " Test owner of $SITE_NAME is $EMAIL" >>test.out echo " " exit 1 else echo " ===== $TestName OK `date +%R:%S` ===== " echo " ===== $TestName OK `date +%R:%S` ===== " >>test.out if test "$debug" -eq 0 ; then - scripts/cleanup + ${rscripts}/cleanup fi fi } copy_tape_confs() { - scripts/copy-tape-confs - scripts/cleanup-tape + ${rscripts}/copy-tape-confs + ${rscripts}/cleanup-tape } copy_test_confs() { - scripts/copy-test-confs - scripts/cleanup + ${rscripts}/copy-test-confs + ${rscripts}/cleanup +} + +disable_pluguins() +{ + for i in ${conf}/bacula-fd.conf; do + sed 's/Plugin/#Plugin/' $i > $tmp/1 + cp -f $tmp/1 $i + done +} + +update_win32() +{ + if [ -d $cwd/build/src/win32/release32 \ + -a -d $cwd/build/src/win32/release64 ] \ + || [ -d $cwd/release32 -a -d $cwd/release64 ] + then + echo -ne "Try to upgrade the FileDaemon:\t" + wget -qO - "$WIN32_ADDR:8091/install" + fi } debug_wait() @@ -331,6 +425,9 @@ init_slot() if test -n "$DRIVE" -a -n "$SLOT"; then if test ! -c $DRIVE -a ! -b $DRIVE -a x$USE_VTAPE != x ; then dir=`dirname $DRIVE` + if [ ! -d "$dir" ]; then + mkdir -p "$dir" + fi touch $dir/slot$SLOT fi fi @@ -356,10 +453,10 @@ rewind_drive() load_slot1() { # Get a tape from slot1 -slot=`bin/$MTX ${AUTOCHANGER} loaded 0 ${TAPE_DRIVE} $DRIVE1` +slot=`${scripts}/$MTX ${AUTOCHANGER} loaded 0 ${TAPE_DRIVE} $DRIVE1` case $slot in 0) - bin/$MTX ${AUTOCHANGER} load $SLOT1 ${TAPE_DRIVE} $DRIVE1 + ${scripts}/$MTX ${AUTOCHANGER} load $SLOT1 ${TAPE_DRIVE} $DRIVE1 slot=$SLOT1 ;; $SLOT1) @@ -367,8 +464,8 @@ case $slot in ;; *) rewind_drive ${TAPE_DRIVE} - bin/$MTX ${AUTOCHANGER} unload $slot ${TAPE_DRIVE} $DRIVE1 - bin/$MTX ${AUTOCHANGER} load $SLOT1 ${TAPE_DRIVE} $DRIVE1 + ${scripts}/$MTX ${AUTOCHANGER} unload $slot ${TAPE_DRIVE} $DRIVE1 + ${scripts}/$MTX ${AUTOCHANGER} load $SLOT1 ${TAPE_DRIVE} $DRIVE1 slot=$SLOT1 ;; esac @@ -383,17 +480,17 @@ load_other_slot() rewind_drive ${TAPE_DRIVE} case $1 in 0) - bin/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} load $SLOT1 ${TAPE_DRIVE} $DRIVE1 + ${scripts}/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} load $SLOT1 ${TAPE_DRIVE} $DRIVE1 slot=1 ;; $SLOT1) - bin/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} unload $1 ${TAPE_DRIVE} $DRIVE1 - bin/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} load $SLOT2 ${TAPE_DRIVE} $DRIVE1 + ${scripts}/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} unload $1 ${TAPE_DRIVE} $DRIVE1 + ${scripts}/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} load $SLOT2 ${TAPE_DRIVE} $DRIVE1 slot=2 ;; $SLOT2) - bin/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} unload $1 ${TAPE_DRIVE} $DRIVE1 - bin/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} load $SLOT1 ${TAPE_DRIVE} $DRIVE1 + ${scripts}/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} unload $1 ${TAPE_DRIVE} $DRIVE1 + ${scripts}/${AUTOCHANGER_SCRIPT} ${AUTOCHANGER} load $SLOT1 ${TAPE_DRIVE} $DRIVE1 slot=1 ;; *) @@ -418,26 +515,66 @@ fi db_name=${db_name:-"regress"} db_user=${db_user:-"regress"} db_password=${db_password:-""} +working=${working:-"$cwd/working"} +dumps=${dumps:-"$cwd/dumps"} +bin=${bin:-"$cwd/bin"} + +# Bacula scripts +scripts=${scripts:-"$cwd/bin"} + +# Bacula conf files +conf=${conf:-"$cwd/bin"} + +# Regress scripts +rscripts=${rscripts:-"$cwd/scripts"} + +tmp=${tmp:-"$cwd/tmp"} + +# Bacula source directory when copied here +# also build directory +src=${src:-"$cwd/build"} + +# Temp source directory so we don't mess up $src +tmpsrc=${tmpsrc:-"$cwd/tmp/build"} + +export bin +export conf +export working +export dumps +export scripts +export rscripts +export tmp +export src +export tmpsrc + +bperl="perl -Mscripts::functions" +export bperl + +mkdir -p ${tmp} +touch ${tmp}/dir.out ${tmp}/fd.out ${tmp}/sd.out CLIENT=${HOST}-fd if [ x$USE_VTAPE = xyes ]; then - mkdir -p $cwd/working/ach + mkdir -p $working/ach SLOT1=1 SLOT2=2 - TAPE_DRIVE=$cwd/working/ach/drive1 - TAPE_DRIVE1=$cwd/working/ach/drive1 - AUTOCHANGER=$cwd/working/ach/config + TAPE_DRIVE=$working/ach/drive0 + TAPE_DRIVE1=$working/ach/drive1 + AUTOCHANGER=$working/ach/config AUTOCHANGER_SCRIPT=disk-changer DRIVE1=0 DRIVE2=1 + cp /dev/null $working/ach/slot$SLOT1 + cp /dev/null $working/ach/slot$SLOT2 cat > $AUTOCHANGER <