]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/duplicate-job-test
regress: tweak duplicate-job-test to run 30 jobs in // at the end
[bacula/bacula] / regress / tests / duplicate-job-test
1 #!/bin/sh
2 #
3 #
4 TestName="duplicate-job-test"
5 . scripts/functions
6
7 scripts/cleanup
8 scripts/copy-test-confs
9 echo "${cwd}/build/technotes" >${cwd}/tmp/file-list
10
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)'
15
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
20
21 outf="$tmp/sed_tmp"
22 echo 's%CompressedTest%AllowDuplicateYes%' > $outf
23 echo 's%Backup%Backup; AllowDuplicateJobs = yes%' >> $outf
24 sed -f $outf $tmp/1 >> $conf/bacula-dir.conf
25
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
29
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
33
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
37
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
41
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
47 done
48
49 when=`perl -Mscripts::functions -e "get_time(300)"`
50
51 start_test
52       
53 cat <<END_OF_DATA >${cwd}/tmp/bconcmds
54 @$out /dev/null
55 messages
56 @$out ${cwd}/tmp/log1.out
57 messages
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
65 @sleep 2
66 @# comment="Should work"
67 run  level=Full job=AllowDuplicateYes yes
68 wait
69 messages
70 @$out $tmp/log3.out
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
76 @sleep 2
77 @# comment="Should fail"
78 run  level=Full job=CancelLowerLevelDuplicatesYes yes
79 wait
80 messages
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
86 @sleep 2
87 @# comment="Should work"
88 run  level=Full job=CancelLowerLevelDuplicatesYes yes
89 wait
90 messages
91 @# comment="Should fail"
92 run  level=Differential job=CancelLowerLevelDuplicatesYes yes
93 @sleep 2
94 @# comment="Should work"
95 run  level=Full job=CancelLowerLevelDuplicatesYes yes
96 wait
97 messages
98 @# comment="Should work"
99 run  level=Differential job=CancelLowerLevelDuplicatesYes yes
100 @sleep 2
101 @# comment="Should fail"
102 run  level=Incremental job=CancelLowerLevelDuplicatesYes yes
103 wait
104 messages
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
110 @sleep 2
111 @# comment="Should fail"
112 run  level=Incremental job=CancelLowerLevelDuplicatesYes yes
113 wait
114 messages
115 @$out $tmp/log4.out
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
121 @sleep 2
122 @# comment="Should fail"
123 run  level=Full job=CancelQueueDuplicatesYes yes
124 wait
125 messages
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
131 @sleep 2
132 @# comment="Should work"
133 run  level=Full job=CancelQueueDuplicatesYes yes
134 wait
135 messages
136 @$out $tmp/log5.out
137 @########################################
138 @# The second job will kill the first one
139 @########################################
140 @# comment="Should fail"
141 run  level=Full job=CancelRunningDuplicatesYes yes
142 @sleep 2
143 @# comment="Should work"
144 run  level=Full job=CancelRunningDuplicatesYes yes
145 wait
146 messages
147 @$out $tmp/log6.out
148 @##########################
149 @# The second job won't run
150 @##########################
151 @# comment="Should work"
152 run  level=Full job=CancelRunningDuplicatesNo yes
153 @sleep 2
154 @# comment="Should fail"
155 run  level=Full job=CancelRunningDuplicatesNo yes
156 wait
157 messages
158 @$out $tmp/log61.out
159 @##########################
160 @# run a bunch of job
161 @##########################
162 END_OF_DATA
163
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
167 EOF
168 done
169
170 echo "wait" >> ${cwd}/tmp/bconcmds
171 echo "messages" >> ${cwd}/tmp/bconcmds
172
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
176 EOF
177 done
178
179 echo "@sleep 5" >> ${cwd}/tmp/bconcmds
180
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
184 EOF
185 done
186
187 echo "wait" >> ${cwd}/tmp/bconcmds
188 echo "messages" >> ${cwd}/tmp/bconcmds
189
190 cat <<END_OF_DATA >>${cwd}/tmp/bconcmds
191 @$out $tmp/log7.out
192 sql
193 SELECT JobId, Job FROM Job WHERE JobId IN (1,2,3,6,8,9,11,13,16,18,19) AND JobStatus != 'T';
194
195 @$out $tmp/log8.out
196 sql
197 SELECT JobId, Job FROM Job WHERE JobId IN (4,5,7,10,12,14,15,17,20) AND JobStatus = 'T';
198
199 @$out $tmp/log9.out
200 sql
201 SELECT JobId, Name, Level, Comment, JobStatus from Job order by JobId;
202
203 quit
204 END_OF_DATA
205
206 run_bacula
207 check_for_zombie_jobs storage=File
208 stop_bacula
209
210 touch $tmp/log2.out
211 check_two_logs
212
213 grep '^| *[0-9]' $tmp/log7.out > /dev/null
214 if [ $? = 0 ]; then
215     print_debug "ERROR: Found errors in $tmp/log7.out"
216     print_debug `cat $tmp/log7.out`
217     estat=1
218 fi
219
220 grep '^| *[0-9]' $tmp/log8.out > /dev/null
221 if [ $? = 0 ]; then
222     print_debug "ERROR: Found errors in $tmp/log8.out"
223     print_debug `cat $tmp/log8.out`
224     estat=1
225 fi
226
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`
231     estat=1
232 fi
233
234 end_test