#!/bin/sh
#
-# Test RunScript
+# Test MaxWaitTime, MaxRunTime and MaxStartDelay
#
TestName="maxtime-test"
JobName=backup
. scripts/functions
-set_debug 0
+
copy_test_confs
-rm -f bin/bacula-dir.conf
-rm -f tmp/RUN*log
-/bin/cp -f scripts/bacula-dir.conf.maxtime bin/bacula-dir.conf
-WHEN=$(date '+%Y-%m-%d %H:%M:%S')
+rm -f ${cwd}/tmp/RUN*log
+cp -f ${cwd}/scripts/bacula-dir.conf.maxtime ${cwd}/bin/bacula-dir.conf
+WHEN=`date '+%Y-%m-%d %H:%M:%S'`
-echo "${cwd}/build/po" >/tmp/file-list
+echo "${cwd}/build/po" >${cwd}/tmp/file-list
start_test
-cat <<END_OF_DATA >tmp/bconcmds
+cat <<END_OF_DATA >${cwd}/tmp/bconcmds
@$out /dev/null
messages
+@$out ${cwd}/tmp/log1.out
label volume=TestVolume001 pool=PoolA
-@$out tmp/RUN_MAXTIME.log
+@$out ${cwd}/tmp/RUN_MAXTIME.log
@# no media => have to wait
-run job=RUN_MAXWAITTIME pool=Default yes
+run job=RUN_MAXWAITTIME comment="Should fail" pool=Default yes
@sleep 2
@# storage is used by RUN_MAXWAITTIME => have to wait
-run job=RUN_MAXSTARTDELAY pool=PoolA when="$WHEN" yes
+run job=RUN_MAXSTARTDELAY comment="Should fail" pool=PoolA when="$WHEN" yes
+@sleep 2
+@# storage is used by the first MAXWAITTIME, but should work
+run job=RUN_MAXWAITTIME comment="Should work" pool=PoolA yes
+@sleep 60
+label volume=TestVolume002 pool=Default
+mount
+@sleep 2
+mount
wait
messages
-run job=RUN_MAXRUNTIME pool=PoolA yes
+run job=RUN_MAXRUNTIME comment="Should fail" pool=PoolA yes
wait
messages
st dir
quit
END_OF_DATA
-(mkfifo /tmp/fifo
- mkfifo /tmp/fifo2
- mkfifo /tmp/fifo3) 2> /dev/null
+(mkfifo ${cwd}/tmp/fifo
+ mkfifo ${cwd}/tmp/fifo2
+ mkfifo ${cwd}/tmp/fifo3) 2> /dev/null
-bin/bacula start
-cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf > /dev/null
+run_bacula
+check_for_zombie_jobs storage=File
stop_bacula
-rm /tmp/fifo /tmp/fifo2 /tmp/fifo3
+rm -f ${cwd}/tmp/fifo ${cwd}/tmp/fifo2 ${cwd}/tmp/fifo3
-export dstat=0
-export bstat=0
-export rstat=0
+dstat=0
+bstat=0
+rstat=0
+touch ${cwd}/tmp/log2.out
-if grep -q -e 'RUN_MAXWAITTIME.* Fatal error: Max wait time exceeded. Job canceled.' tmp/RUN_MAXTIME.log
+grep -e '1: Fatal error: Max wait time exceeded. Job canceled.' ${cwd}/tmp/RUN_MAXTIME.log >/dev/null
+if [ $? -eq 0 ]
then
[ "$debug" = 1 ] && echo MAXWAITTIME ok
else
echo "MAXWAITTIME in error"
- rstat=1
+ bstat=1
fi
-if grep -q -e 'RUN_MAXSTARTDELAY.* Fatal error: Job canceled because max start delay time exceeded.' tmp/RUN_MAXTIME.log
+grep -e '2: Fatal error: Job canceled because max start delay time exceeded.' ${cwd}/tmp/RUN_MAXTIME.log > /dev/null
+f=$?
+
+grep -e 'NEVER start this' ${cwd}/tmp/RUN_MAXTIME.log >/dev/null
+s=$?
+
+if [ $f -eq 0 -a $s -ne 0 ]
then
[ "$debug" = 1 ] && echo MAXSTARTDELAY ok
else
echo "MAXSTARTDELAY in error"
- rstat=1
+ bstat=1
fi
-if grep -q -e 'RUN_MAXRUNTIME.* Fatal error: Max run time exceeded. Job canceled.' tmp/RUN_MAXTIME.log
+grep -e '4: Fatal error: Max run time exceeded. Job canceled.' ${cwd}/tmp/RUN_MAXTIME.log >/dev/null
+if [ $? -eq 0 ]
then
[ "$debug" = 1 ] && echo MAXRUNTIME ok
else
echo "MAXRUNTIME in error"
- rstat=1
+ bstat=1
fi
-end_test
\ No newline at end of file
+grep 'Termination: *Backup OK' ${cwd}/tmp/RUN_MAXTIME.log >/dev/null
+if [ $? -eq 0 ]
+then
+ [ "$debug" = 1 ] && echo MAXRUNTIME2 ok
+else
+ echo "MAXRUNTIME2 in error"
+ bstat=1
+fi
+
+
+end_test