3 # This script will test next vol algo with
6 # TODO: Test Pool with RecyclePool
7 # Test Pool without RecyclePool
8 # Test with enabled=false
14 TestName="next-vol-test"
19 scripts/copy-tape-confs
20 cp scripts/bacula-dir-vtape.conf bin/bacula-dir.conf
21 cp scripts/bacula-sd-vtape.conf bin/bacula-sd.conf
22 scripts/prepare-fake-autochanger
27 cat <<EOF > ${cwd}/tmp/bconcmds
28 @$out ${cwd}/tmp/log.out
29 label barcodes storage=LTO3 slots=46-59 drive=0 pool=Scratch
32 update Media SET FirstWritten='2006-01-01 01:00:00', LastWritten='2006-01-01 01:00:00';
34 update volume=vol47 pool=Test inchanger=no RecyclePool=Test
35 update volume=vol59 pool=Test enabled=no
36 update volume=vol58 pool=Test volstatus=Recycle
38 update volume=vol56 pool=Test
39 update volume=vol55 pool=Test volstatus=Full
40 update volume=vol46 volstatus=Full volretention=15
42 update volume=vol46 pool=Test
43 update volume=vol54 volstatus=Recycle
45 update volume=vol52 MaxVolJobs=1 volretention=15
46 update volume=vol51 inchanger=no volstatus=Recycle
48 update volume=vol50 inchanger=no
49 update volume=vol49 inchanger=no
50 update volume=vol48 inchanger=no pool=Test
51 update volume AllFromPool=Test
53 update Media SET VolJobs=1 WHERE VolumeName='vol52';
54 update Media SET LastWritten='2006-01-01 01:00:01' WHERE VolumeName='vol57';
55 update Media SET LastWritten='2006-01-01 01:00:02' WHERE VolumeName='vol53';
64 echo $PWD/build/po > tmp/file-list
66 cat <<EOF > ${cwd}/tmp/bconcmds
67 @$out ${cwd}/tmp/log2.out
69 @# Pool + Append + Enabled + InChanger
70 run level=full pool=Test NightlySave yes
75 @# Pool + Recycled + Enabled + InChanger
76 run level=full pool=Test NightlySave yes
81 @# Pool + Purged + Enabled + InChanger
82 run level=full pool=Test NightlySave yes
87 @# Pool + Full + Recycle + Enabled + InChanger
88 run level=full pool=Test NightlySave yes
93 @# No more in Test pool, get from scratch
94 @# vol52 is Append, but have 1 job and MaxJob
95 @# Scratch + Recycle + Enabled + InChanger
96 run level=full pool=Test NightlySave yes
101 @# Scratch + Purged + Enabled + InChanger + LastW
102 run level=full pool=Test NightlySave yes
107 @# Scratch + Purged + Enabled + InChanger + LastW
108 run level=full pool=Test NightlySave yes
113 @# Scratch + Purged + Enabled + InChanger + LastW
114 run level=full pool=Test NightlySave yes
118 restore fileset="Full Set" pool=Test where=${cwd}/tmp/bacula-restores select all done
125 @#run level=full pool=Test NightlySave yes
134 awk '/Must choose/ { print $4 } ' tmp/log2.out > tmp/normal
135 awk '/Volume name.+:/ { print $3 } ' tmp/log2.out > tmp/real
136 if [ "$debug" -eq 1 ]; then
137 diff -ur tmp/normal tmp/real
139 diff tmp/normal tmp/real > /dev/null
144 # so some tests with File media
145 cat <<EOF > ${cwd}/tmp/bconcmds
146 @$out ${cwd}/tmp/log3.out
147 label volume=file1 storage=File pool=Test
148 label volume=file2 storage=File pool=Test
149 label volume=file3 storage=File pool=Test
150 label volume=file4 storage=File pool=Scratch
151 label volume=file5 storage=File pool=Test
152 label volume=file6 storage=File pool=Test
153 label volume=file7 storage=File pool=Scratch
154 label volume=file8 storage=File pool=Test
155 label volume=file9 storage=File pool=Scratch
156 label volume=file10 storage=File pool=Scratch
157 label volume=file11 storage=File pool=Test
159 update Media SET FirstWritten='2006-01-01 01:00:00', LastWritten='2006-01-01 01:00:00';
161 update volume=file2 enabled=no
162 update volume=file3 volstatus=Recycle
165 update volume=file5 recycle=no volretention=1
166 update volume=file6 volstatus=Full volretention=15
167 update volume=file7 volstatus=Full volretention=15
169 update volume=file8 pool=Test VolRetention=1
170 update volume=file9 volstatus=Recycle
173 update Media SET VolJobs=1 WHERE VolumeName='file9';
174 update Media SET LastWritten='2006-01-01 01:00:01' WHERE VolumeName='file4';
175 update Media SET LastWritten='2006-01-01 01:00:02' WHERE VolumeName='file7';
178 @$out ${cwd}/tmp/log4.out
182 @# Pool + Append + Lowest MediaId
183 run level=full pool=Test storage=File NightlySave yes
188 @# Pool + Append + Lowest MediaId (only once)
189 run level=full pool=Test storage=File NightlySave yes
194 @# Pool + Append + Lowest MediaId
195 run level=full pool=Test storage=File NightlySave yes
201 run level=full pool=Test storage=File NightlySave yes
205 @# Must choose file11
207 run level=full pool=Test storage=File NightlySave yes
212 @# Pool + Full (prunable)
213 setdebug level=50 director
214 run level=full pool=Test storage=File NightlySave yes
217 setdebug level=0 director
221 @# Pool + Full (prunable)
222 run level=full pool=Test storage=File NightlySave yes
225 update volume=file8 enabled=no
227 @# Must choose file10
228 @# (no more Pool) Scratch + Append
229 run level=full pool=Test storage=File NightlySave yes
234 @# (no more Pool) Scratch + Recycle
235 run level=full pool=Test storage=File NightlySave yes
241 @# Used (prunable) + Pool
242 run level=full pool=Test storage=File NightlySave yes
247 @# Used (prunable) + oldest + Scratch
248 run level=full pool=Test storage=File NightlySave yes
253 @# Used (prunable) + oldest + Scratch
254 run level=full pool=Test storage=File NightlySave yes
264 awk '/Must choose/ { print $4 } ' tmp/log4.out > tmp/normal4
265 awk '/Volume name.+:/ { print $3 } ' tmp/log4.out > tmp/real4
266 if [ "$debug" -eq 1 ]; then
267 diff -ur tmp/normal4 tmp/real4
269 diff tmp/normal4 tmp/real4 > /dev/null
271 if [ $dstat -eq 0 ] ; then
273 if [ $dstat -ne 0 ] ; then
274 echo "normal4 and real4 differ!!!!!"
275 echo "normal4 and real4 differ!!!!!" >>test.out
279 # try to break the old code
280 # in this situation, we have 1 available volume (vol50) and bacula will try to use
281 # vol47, vol48 and vol49 and will stop without using vol50.
283 cat <<EOF > ${cwd}/tmp/bconcmds
284 @$out ${cwd}/tmp/log1.out
285 update volume=vol47 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test
286 update volume=vol48 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test
287 update volume=vol49 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test
288 update volume=vol50 pool=Test VolStatus=Used VolRetention=10s inchanger=yes RecyclePool=Test
290 update Media SET FirstWritten='2005-01-01 01:00:00', LastWritten='2005-01-01 01:00:00'
291 WHERE VolumeName IN ('vol47', 'vol48', 'vol49');
294 run level=full pool=Test NightlySave yes
301 grep "Invalid slot=0 defined in catalog for Volume" tmp/log1.out > /dev/null
302 if [ $? -ne 0 ]; then
306 check_for_zombie_jobs storage=LTO3 client=${HOST}-fd