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';
62 echo $PWD/build/po > tmp/file-list
64 cat <<EOF > ${cwd}/tmp/bconcmds
65 @$out ${cwd}/tmp/log2.out
67 @# Pool + Append + Enabled + InChanger
68 run level=full pool=Test NightlySave yes
73 @# Pool + Recycled + Enabled + InChanger
74 run level=full pool=Test NightlySave yes
79 @# Pool + Purged + Enabled + InChanger
80 run level=full pool=Test NightlySave yes
85 @# Pool + Full + Recycle + Enabled + InChanger
86 run level=full pool=Test NightlySave yes
91 @# No more in Test pool, get from scratch
92 @# vol52 is Append, but have 1 job and MaxJob
93 @# Scratch + Recycle + Enabled + InChanger
94 run level=full pool=Test NightlySave yes
99 @# Scratch + Purged + Enabled + InChanger + LastW
100 run level=full pool=Test NightlySave yes
105 @# Scratch + Purged + Enabled + InChanger + LastW
106 run level=full pool=Test NightlySave yes
111 @# Scratch + Purged + Enabled + InChanger + LastW
112 run level=full pool=Test NightlySave yes
116 restore fileset="Full Set" pool=Test where=${cwd}/tmp/bacula-restores select all done
123 @#run level=full pool=Test NightlySave yes
131 awk '/Must choose/ { print $4 } ' tmp/log2.out > tmp/normal
132 awk '/Volume name.+:/ { print $3 } ' tmp/log2.out > tmp/real
133 if [ "$debug" -eq 1 ]; then
134 diff -ur tmp/normal tmp/real
136 diff tmp/normal tmp/real > /dev/null
142 # so some tests with File media
143 cat <<EOF > ${cwd}/tmp/bconcmds
144 @$out ${cwd}/tmp/log3.out
145 label volume=file1 storage=File pool=Test
146 label volume=file2 storage=File pool=Test
147 label volume=file3 storage=File pool=Test
148 label volume=file4 storage=File pool=Scratch
149 label volume=file5 storage=File pool=Test
150 label volume=file6 storage=File pool=Test
151 label volume=file7 storage=File pool=Scratch
152 label volume=file8 storage=File pool=Test
153 label volume=file9 storage=File pool=Scratch
154 label volume=file10 storage=File pool=Scratch
155 label volume=file11 storage=File pool=Test
157 update Media SET FirstWritten='2006-01-01 01:00:00', LastWritten='2006-01-01 01:00:00';
159 update volume=file2 enabled=no
160 update volume=file3 volstatus=Recycle
163 update volume=file5 recycle=no volretention=1
164 update volume=file6 volstatus=Full volretention=15
165 update volume=file7 volstatus=Full volretention=15
167 update volume=file8 pool=Test VolRetention=1
168 update volume=file9 volstatus=Recycle
171 update Media SET VolJobs=1 WHERE VolumeName='file9';
172 update Media SET LastWritten='2006-01-01 01:00:01' WHERE VolumeName='file4';
173 update Media SET LastWritten='2006-01-01 01:00:02' WHERE VolumeName='file7';
176 @$out ${cwd}/tmp/log4.out
180 @# Pool + Append + Lowest MediaId
181 run level=full pool=Test storage=File NightlySave yes
186 @# Pool + Append + Lowest MediaId (only once)
187 run level=full pool=Test storage=File NightlySave yes
192 @# Pool + Append + Lowest MediaId
193 run level=full pool=Test storage=File NightlySave yes
199 run level=full pool=Test storage=File NightlySave yes
203 @# Must choose file11
205 run level=full pool=Test storage=File NightlySave yes
210 @# Pool + Full (prunable)
211 setdebug level=50 director
212 run level=full pool=Test storage=File NightlySave yes
215 setdebug level=0 director
219 @# Pool + Full (prunable)
220 run level=full pool=Test storage=File NightlySave yes
223 update volume=file8 enabled=no
225 @# Must choose file10
226 @# (no more Pool) Scratch + Append
227 run level=full pool=Test storage=File NightlySave yes
232 @# (no more Pool) Scratch + Recycle
233 run level=full pool=Test storage=File NightlySave yes
239 @# Used (prunable) + Pool
240 run level=full pool=Test storage=File NightlySave yes
245 @# Used (prunable) + oldest + Scratch
246 run level=full pool=Test storage=File NightlySave yes
251 @# Used (prunable) + oldest + Scratch
252 run level=full pool=Test storage=File NightlySave yes
261 awk '/Must choose/ { print $4 } ' tmp/log4.out > tmp/normal4
262 awk '/Volume name.+:/ { print $3 } ' tmp/log4.out > tmp/real4
263 if [ "$debug" -eq 1 ]; then
264 diff -ur tmp/normal4 tmp/real4
266 diff tmp/normal4 tmp/real4 > /dev/null
269 dstat=`expr $? + $dstat`
271 # try to break the old code
272 # in this situation, we have 1 available volume (vol50) and bacula will try to use
273 # vol47, vol48 and vol49 and will stop without using vol50.
275 cat <<EOF > ${cwd}/tmp/bconcmds
276 @$out ${cwd}/tmp/log1.out
277 update volume=vol47 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test
278 update volume=vol48 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test
279 update volume=vol49 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test
280 update volume=vol50 pool=Test VolStatus=Used VolRetention=10s inchanger=yes RecyclePool=Test
282 update Media SET FirstWritten='2005-01-01 01:00:00', LastWritten='2005-01-01 01:00:00'
283 WHERE VolumeName IN ('vol47', 'vol48', 'vol49');
286 run level=full pool=Test NightlySave yes
293 grep "Invalid slot=0 defined in catalog for Volume" tmp/log1.out > /dev/null
294 if [ $? -ne 0 ]; then
298 check_for_zombie_jobs storage=LTO3