4 TestName="duplicate-job-test"
8 scripts/copy-test-confs
9 echo "${cwd}/build/technotes" >${cwd}/tmp/file-list
11 # increase the maximum concurrent jobs for FD, SD and DIR
12 perl -Mscripts::functions -e 'set_maximum_concurent_jobs("$conf/bacula-dir.conf",100)'
13 perl -Mscripts::functions -e 'set_maximum_concurent_jobs("$conf/bacula-sd.conf",100)'
14 perl -Mscripts::functions -e 'set_maximum_concurent_jobs("$conf/bacula-fd.conf",100)'
16 # extract a Job and add a runscript on it
17 perl -Mscripts::functions \
18 -e "extract_resource('$conf/bacula-dir.conf', 'Job', 'CompressedTest')" \
19 | sed 's%Standard%Standard; ClientRunBeforeJob="sleep 6"%' > $tmp/1
22 echo 's%CompressedTest%AllowDuplicateYes%' > $outf
23 echo 's%Backup%Backup; AllowDuplicateJobs = yes%' >> $outf
24 sed -f $outf $tmp/1 >> $conf/bacula-dir.conf
26 echo 's%CompressedTest%CancelLowerLevelDuplicatesYes%' > $outf
27 echo 's%Backup%Backup; AllowDuplicateJobs = no; CancelLowerLevelDuplicates=yes%' >> $outf
28 sed -f $outf $tmp/1 >> $conf/bacula-dir.conf
30 echo 's%CompressedTest%CancelQueueDuplicatesYes%' > $outf
31 echo 's%Backup%Backup; AllowDuplicateJobs = no;CancelLowerLevelDuplicates=no;CancelQueuedDuplicates=yes %' >> $outf
32 sed -f $outf $tmp/1 >> $conf/bacula-dir.conf
34 echo 's%CompressedTest%CancelRunningDuplicatesYes%' > $outf
35 echo 's%Backup%Backup; AllowDuplicateJobs = no;CancelLowerLevelDuplicates=no;CancelQueuedDuplicates=no; CancelRunningDuplicates=yes%' >> $outf
36 sed -f $outf $tmp/1 >> $conf/bacula-dir.conf
38 echo 's%CompressedTest%CancelRunningDuplicatesNo%' > $outf
39 echo 's%Backup%Backup; AllowDuplicateJobs = no;CancelLowerLevelDuplicates=no;CancelQueuedDuplicates=no; CancelRunningDuplicates=no%' >> $outf
40 sed -f $outf $tmp/1 >> $conf/bacula-dir.conf
42 for i in `seq 1 40`; do
43 echo "s%CompressedTest%CancelLowerLevelDuplicatesYes-$i%" > $outf
44 echo 's%Backup%Backup; AllowDuplicateJobs = no; CancelLowerLevelDuplicates=yes%' >> $outf
45 echo 's%sleep 6%sleep 20%' >> $outf
46 sed -f $outf $tmp/1 >> $conf/bacula-dir.conf
49 when=`perl -Mscripts::functions -e "get_time(300)"`
53 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
56 @$out ${cwd}/tmp/log1.out
58 label storage=File volume=TestVolume001
59 @#setdebug level=100 storage=File
60 @##############################################
61 @# AllowDuplicates = Yes, both jobs should work
62 @##############################################
63 @# comment="Should work"
64 run level=Full job=AllowDuplicateYes yes
66 @# comment="Should work"
67 run level=Full job=AllowDuplicateYes yes
71 @###############################################################
72 @# Run two jobs with the same level and see wich one is canceled
73 @###############################################################
74 @# comment="Should work"
75 run level=Full job=CancelLowerLevelDuplicatesYes yes
77 @# comment="Should fail"
78 run level=Full job=CancelLowerLevelDuplicatesYes yes
81 @####################################################################
82 @# Run two jobs with the different level and see wich one is canceled
83 @####################################################################
84 @# comment="Should fail"
85 run level=Incremental job=CancelLowerLevelDuplicatesYes yes
87 @# comment="Should work"
88 run level=Full job=CancelLowerLevelDuplicatesYes yes
91 @# comment="Should fail"
92 run level=Differential job=CancelLowerLevelDuplicatesYes yes
94 @# comment="Should work"
95 run level=Full job=CancelLowerLevelDuplicatesYes yes
98 @# comment="Should work"
99 run level=Differential job=CancelLowerLevelDuplicatesYes yes
101 @# comment="Should fail"
102 run level=Incremental job=CancelLowerLevelDuplicatesYes yes
105 @#####################################################################################
106 @# Run two jobs with the different level and see wich one is canceled (reversed order)
107 @#####################################################################################
108 @# comment="Should work"
109 run level=Full job=CancelLowerLevelDuplicatesYes yes
111 @# comment="Should fail"
112 run level=Incremental job=CancelLowerLevelDuplicatesYes yes
116 @####################################################################
117 @# Run two jobs, the second one can't cancel the 1st, and should fail
118 @####################################################################
119 @# comment="Should work"
120 run level=Full job=CancelQueueDuplicatesYes yes
122 @# comment="Should fail"
123 run level=Full job=CancelQueueDuplicatesYes yes
126 @#################################################################
127 @# The first job should stay queued, the second one will cancel it
128 @#################################################################
129 @# comment="Should fail"
130 run level=Full job=CancelQueueDuplicatesYes when="$when" yes
132 @# comment="Should work"
133 run level=Full job=CancelQueueDuplicatesYes yes
137 @########################################
138 @# The second job will kill the first one
139 @########################################
140 @# comment="Should fail"
141 run level=Full job=CancelRunningDuplicatesYes yes
143 @# comment="Should work"
144 run level=Full job=CancelRunningDuplicatesYes yes
148 @##########################
149 @# The second job won't run
150 @##########################
151 @# comment="Should work"
152 run level=Full job=CancelRunningDuplicatesNo yes
154 @# comment="Should fail"
155 run level=Full job=CancelRunningDuplicatesNo yes
159 @##########################
160 @# run a bunch of job
161 @##########################
164 for i in `seq 1 30`; do
165 cat <<EOF >>${cwd}/tmp/bconcmds
166 run comment="Should work" level=Full job=CancelLowerLevelDuplicatesYes-$i yes
170 echo "wait" >> ${cwd}/tmp/bconcmds
171 echo "messages" >> ${cwd}/tmp/bconcmds
173 for i in `seq 1 30`; do
174 cat <<EOF >>${cwd}/tmp/bconcmds
175 run comment="Should fail" level=Incremental job=CancelLowerLevelDuplicatesYes-$i yes
179 echo "@sleep 5" >> ${cwd}/tmp/bconcmds
181 for i in `seq 1 30`; do
182 cat <<EOF >>${cwd}/tmp/bconcmds
183 run comment="Should work" level=Full job=CancelLowerLevelDuplicatesYes-$i yes
187 echo "wait" >> ${cwd}/tmp/bconcmds
188 echo "messages" >> ${cwd}/tmp/bconcmds
190 cat <<END_OF_DATA >>${cwd}/tmp/bconcmds
193 SELECT JobId, Job FROM Job WHERE JobId IN (1,2,3,6,8,9,11,13,16,18,19) AND JobStatus != 'T';
197 SELECT JobId, Job FROM Job WHERE JobId IN (4,5,7,10,12,14,15,17,20) AND JobStatus = 'T';
201 SELECT JobId, Name, Level, Comment, JobStatus from Job order by JobId;
207 check_for_zombie_jobs storage=File
213 grep '^| *[0-9]' $tmp/log7.out > /dev/null
215 print_debug "ERROR: Found errors in $tmp/log7.out"
216 print_debug `cat $tmp/log7.out`
220 grep '^| *[0-9]' $tmp/log8.out > /dev/null
222 print_debug "ERROR: Found errors in $tmp/log8.out"
223 print_debug `cat $tmp/log8.out`
227 nb=`grep '^| *[0-9]' $tmp/log9.out | wc -l`
228 if [ $nb -lt 80 ]; then
229 print_debug "ERROR: no enough results in $tmp/log9.out"
230 print_debug `cat $tmp/log9.out`