]> git.sur5r.net Git - bacula/bacula/blobdiff - regress/tests/duplicate-job-test
Backport from Bacula Enterprise
[bacula/bacula] / regress / tests / duplicate-job-test
index 7be175e9e0568cca824e98e360cdd337aec49ea3..2405ecf3e39d4fa5a3773c946184078398aad072 100755 (executable)
@@ -1,4 +1,9 @@
 #!/bin/sh
+#
+# Copyright (C) 2000-2015 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
+
 #
 #
 TestName="duplicate-job-test"
@@ -6,13 +11,19 @@ TestName="duplicate-job-test"
 
 scripts/cleanup
 scripts/copy-test-confs
-echo "${cwd}/build/technotes" >${cwd}/tmp/file-list
 
 
+echo "${cwd}/build/ChangeLog" >${cwd}/tmp/file-list
+
+# increase the maximum concurrent jobs for FD, SD and DIR
+perl -Mscripts::functions -e 'set_maximum_concurrent_jobs("$conf/bacula-dir.conf",100)'
+perl -Mscripts::functions -e 'set_maximum_concurrent_jobs("$conf/bacula-sd.conf",100)'
+perl -Mscripts::functions -e 'set_maximum_concurrent_jobs("$conf/bacula-fd.conf",100)'
+
 # extract a Job and add a runscript on it
 perl -Mscripts::functions \
     -e "extract_resource('$conf/bacula-dir.conf', 'Job', 'CompressedTest')" \
-    | sed 's%Standard%Standard; ClientRunBeforeJob="sleep 10"%' > $tmp/1
+    | sed 's%Standard%Standard; ClientRunBeforeJob="sleep 6"%' > $tmp/1
 
 
 outf="$tmp/sed_tmp"
@@ -36,69 +47,106 @@ echo 's%CompressedTest%CancelRunningDuplicatesNo%' > $outf
 echo 's%Backup%Backup; AllowDuplicateJobs = no;CancelLowerLevelDuplicates=no;CancelQueuedDuplicates=no; CancelRunningDuplicates=no%' >> $outf
 sed -f $outf $tmp/1 >> $conf/bacula-dir.conf
 
-when=`perl -MPOSIX -e "print strftime('%F %T', localtime(time+300))"`
+when=`perl -Mscripts::functions -e "get_time(300)"`
 
 start_test
       
 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
-@$out /dev/null
+@output /dev/null
 messages
 @$out ${cwd}/tmp/log1.out
 messages
-label storage=File volume=TestVolume001
+label storage=File volume=TestVolume001 slot=1 drive=0
+@#setdebug level=100 storage=File
+@##############################################
+@# AllowDuplicates = Yes, both jobs should work
+@##############################################
 run comment="Should work" level=Full job=AllowDuplicateYes yes
 @sleep 2
 run comment="Should work" level=Full job=AllowDuplicateYes yes
 wait
 messages
 @$out $tmp/log3.out
+@###############################################################
+@# Run two jobs with the same level and see wich one is canceled
+@###############################################################
 run comment="Should work" level=Full job=CancelLowerLevelDuplicatesYes yes
 @sleep 2
 run comment="Should fail" level=Full job=CancelLowerLevelDuplicatesYes yes
 wait
 messages
+@####################################################################
+@# Run two jobs with the different level and see wich one is canceled
+@####################################################################
 run comment="Should fail" level=Incremental job=CancelLowerLevelDuplicatesYes yes
 @sleep 2
 run comment="Should work" level=Full job=CancelLowerLevelDuplicatesYes yes
 wait
 messages
+run comment="Should fail" level=Differential job=CancelLowerLevelDuplicatesYes yes
+@sleep 2
+run comment="Should work" level=Full job=CancelLowerLevelDuplicatesYes yes
+wait
+messages
+run comment="Should work" level=Differential job=CancelLowerLevelDuplicatesYes yes
+@sleep 2
+run comment="Should fail" level=Incremental job=CancelLowerLevelDuplicatesYes yes
+wait
+messages
+@#####################################################################################
+@# Run two jobs with the different level and see wich one is canceled (reversed order)
+@#####################################################################################
 run comment="Should work" level=Full job=CancelLowerLevelDuplicatesYes yes
 @sleep 2
 run comment="Should fail" level=Incremental job=CancelLowerLevelDuplicatesYes yes
 wait
 messages
 @$out $tmp/log4.out
+@####################################################################
+@# Run two jobs, the second one can't cancel the 1st, and should fail
+@####################################################################
 run comment="Should work" level=Full job=CancelQueueDuplicatesYes yes
 @sleep 2
 run comment="Should fail" level=Full job=CancelQueueDuplicatesYes yes
 wait
 messages
+@#################################################################
+@# The first job should stay queued, the second one will cancel it
+@#################################################################
 run comment="Should fail" level=Full job=CancelQueueDuplicatesYes when="$when" yes
 @sleep 2
 run comment="Should work" level=Full job=CancelQueueDuplicatesYes yes
 wait
 messages
 @$out $tmp/log5.out
-run comment="Should work" level=Full job=CancelRunningDuplicatesYes yes
-@sleep 2
+@########################################
+@# The second job will kill the first one
+@########################################
 run comment="Should fail" level=Full job=CancelRunningDuplicatesYes yes
+@sleep 2
+run comment="Should work" level=Full job=CancelRunningDuplicatesYes yes
 wait
 messages
 @$out $tmp/log6.out
+@##########################
+@# The second job won't run
+@##########################
 run comment="Should work" level=Full job=CancelRunningDuplicatesNo yes
 @sleep 2
 run comment="Should fail" level=Full job=CancelRunningDuplicatesNo yes
 wait
 messages
-@$out $tmp/log2.out
+@$out $tmp/log7.out
 sql
 SELECT JobId, Name, Level, Comment, JobStatus from Job 
-WHERE Comment='Should fail' and JobStatus='T';
+WHERE Comment='Should fail' and JobStatus='T' ORDER By JobId;
 
+@$out $tmp/log8.out
 sql
-SELECT JobId, Name, Level, Comment, JobStatus from Job order by JobId
-WHERE Comment="Should work' and JobStatus != 'T';
+SELECT JobId, Name, Level, Comment, JobStatus from Job
+WHERE Comment='Should work' and JobStatus != 'T' ORDER By JobId;
 
+@$out $tmp/log9.out
 sql
 SELECT JobId, Name, Level, Comment, JobStatus from Job order by JobId;
 
@@ -109,6 +157,28 @@ run_bacula
 check_for_zombie_jobs storage=File
 stop_bacula
 
+touch $tmp/log2.out
 check_two_logs
-check_restore_diff
+
+grep '^| *[0-9]' $tmp/log7.out > /dev/null
+if [ $? = 0 ]; then
+    print_debug "ERROR: Found errors in $tmp/log7.out"
+    print_debug `cat $tmp/log7.out`
+    estat=1
+fi
+
+grep '^| *[0-9]' $tmp/log8.out > /dev/null
+if [ $? = 0 ]; then
+    print_debug "ERROR: Found errors in $tmp/log8.out"
+    print_debug `cat $tmp/log8.out`
+    estat=1
+fi
+
+nb=`grep '^| *[0-9]' $tmp/log9.out | wc -l`
+if [ $nb -lt 10 ]; then
+    print_debug "ERROR: less than 10 lines of SQL output in $tmp/log9.out"
+    print_debug `cat $tmp/log9.out`
+    estat=1
+fi
+
 end_test