]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/next-vol-test
Fix xattr/acl regression.
[bacula/bacula] / regress / tests / next-vol-test
1 #!/bin/sh
2 #
3 # This script will test next vol algo with
4 # vtape
5 #
6 # TODO: Test Pool with RecyclePool
7 #       Test Pool without RecyclePool
8 #       Test with enabled=false
9 #       Test with recycle=no
10 #       Track scratch usage
11 #
12 . scripts/functions
13
14 TestName="next-vol-test"
15 JobName=backup
16
17 require_linux
18 scripts/cleanup
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
23
24
25 start_test
26
27 cat <<EOF > ${cwd}/tmp/bconcmds
28 @$out ${cwd}/tmp/log.out
29 label barcodes storage=LTO3 slots=46-59 drive=0 pool=Scratch
30 yes
31 sql
32 update Media SET FirstWritten='2006-01-01 01:00:00', LastWritten='2006-01-01 01:00:00';
33
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
37 purge  volume=vol57
38 update volume=vol56 pool=Test
39 update volume=vol55 pool=Test volstatus=Full
40 update volume=vol46 volstatus=Full volretention=15 
41 purge volume=vol46
42 update volume=vol46 pool=Test
43 update volume=vol54 volstatus=Recycle
44 purge  volume=vol53
45 update volume=vol52 MaxVolJobs=1 volretention=15
46 update volume=vol51 inchanger=no volstatus=Recycle
47 purge  volume=vol50
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
52 sql
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';
56
57 list volumes
58 wait
59 quit
60 EOF
61
62 run_bacula
63
64 echo $PWD/build/po > tmp/file-list
65
66 cat <<EOF > ${cwd}/tmp/bconcmds
67 @$out ${cwd}/tmp/log2.out
68 @# Must choose vol56
69 @# Pool + Append + Enabled + InChanger
70 run level=full pool=Test NightlySave yes
71 wait
72 message
73 list volumes
74 @# Must choose vol58
75 @# Pool + Recycled + Enabled + InChanger
76 run level=full pool=Test NightlySave yes
77 wait
78 message
79 list volume
80 @# Must choose vol46
81 @# Pool + Purged + Enabled + InChanger
82 run level=full pool=Test NightlySave yes
83 wait
84 message
85 list volumes
86 @# Must choose vol55
87 @# Pool + Full + Recycle + Enabled + InChanger
88 run level=full pool=Test NightlySave yes
89 wait
90 message
91 list volumes
92 @# Must choose vol54
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
97 wait
98 message
99 list volume
100 @# Must choose vol52
101 @# Scratch + Purged + Enabled + InChanger + LastW
102 run level=full pool=Test NightlySave yes
103 wait
104 message
105 list volume
106 @# Must choose vol57
107 @# Scratch + Purged + Enabled + InChanger + LastW
108 run level=full pool=Test NightlySave yes
109 wait
110 message
111 list volumes
112 @# Must choose vol53
113 @# Scratch + Purged + Enabled + InChanger + LastW
114 run level=full pool=Test NightlySave yes
115 wait
116 messages
117 list volumes
118 restore fileset="Full Set" pool=Test where=${cwd}/tmp/bacula-restores select all done
119 yes
120 wait
121 messages
122 wait
123 messages
124 @# Must Wait
125 @#run level=full pool=Test NightlySave yes
126 @#wait
127 @#message
128 @#list volume
129 quit
130 EOF
131
132 run_bconsole
133
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
138 else
139    diff tmp/normal tmp/real > /dev/null
140 fi
141 dstat=$?
142
143
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
158 sql
159 update Media SET FirstWritten='2006-01-01 01:00:00', LastWritten='2006-01-01 01:00:00';
160
161 update volume=file2 enabled=no
162 update volume=file3 volstatus=Recycle
163 @# volstatus=Purged
164 purge  volume=file4
165 update volume=file5 recycle=no volretention=1
166 update volume=file6 volstatus=Full volretention=15 
167 update volume=file7 volstatus=Full volretention=15 
168 purge volume=file7
169 update volume=file8 pool=Test VolRetention=1
170 update volume=file9 volstatus=Recycle
171 purge volume=file11
172 sql
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';
176
177 messages
178 @$out ${cwd}/tmp/log4.out
179 list volume
180 messages
181 @# Must choose file1
182 @# Pool + Append + Lowest MediaId
183 run level=full pool=Test storage=File NightlySave yes
184 wait
185 message
186 list volume
187 @# Must choose file5
188 @# Pool + Append + Lowest MediaId (only once)
189 run level=full pool=Test storage=File NightlySave yes
190 wait
191 message
192 list volume
193 @# Must choose file8
194 @# Pool + Append + Lowest MediaId
195 run level=full pool=Test storage=File NightlySave yes
196 wait
197 message
198 list volume
199 @# Must choose file3
200 @# Pool + Recycle
201 run level=full pool=Test storage=File NightlySave yes
202 wait
203 message
204 list volume
205 @# Must choose file11
206 @# Pool + Purged
207 run level=full pool=Test storage=File NightlySave yes
208 wait
209 message
210 list volume
211 @# Must choose file6
212 @# Pool + Full (prunable)
213 setdebug level=50 director
214 run level=full pool=Test storage=File NightlySave yes
215 wait
216 message
217 setdebug level=0 director
218 list volume
219 @sleep 5
220 @# Must choose file8
221 @# Pool + Full (prunable)
222 run level=full pool=Test storage=File NightlySave yes
223 wait
224 message
225 update volume=file8 enabled=no
226 list volume
227 @# Must choose file10
228 @# (no more Pool) Scratch + Append
229 run level=full pool=Test storage=File NightlySave yes
230 wait
231 message
232 list volume
233 @# Must choose file9
234 @# (no more Pool) Scratch + Recycle
235 run level=full pool=Test storage=File NightlySave yes
236 wait
237 message
238 list volume
239 @sleep 10
240 @# Must choose file6
241 @# Used (prunable) + Pool
242 run level=full pool=Test storage=File NightlySave yes
243 wait
244 message
245 list volume
246 @# Must choose file4
247 @# Used (prunable) + oldest + Scratch
248 run level=full pool=Test storage=File NightlySave yes
249 wait
250 message
251 list volume
252 @# Must choose file7
253 @# Used (prunable) + oldest + Scratch
254 run level=full pool=Test storage=File NightlySave yes
255 wait
256 message
257 list volume
258 wait
259 quit
260 EOF
261
262 run_bconsole
263
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
268 else
269    diff tmp/normal4 tmp/real4 > /dev/null
270 fi
271 if [ $dstat -eq 0 ] ; then
272    dstat=$?
273    if [ $dstat -ne 0 ] ; then
274       echo "normal4 and real4 differ!!!!!"
275       echo "normal4 and real4 differ!!!!!"  >>test.out
276    fi
277 fi
278
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.
282
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
289 sql
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');
292
293 list volume
294 run level=full pool=Test NightlySave yes
295 wait
296 messages
297 quit
298 EOF
299
300 run_bconsole
301 grep "Invalid slot=0 defined in catalog for Volume" tmp/log1.out > /dev/null
302 if [ $? -ne 0 ]; then
303    bstat=$?
304 fi
305
306 check_for_zombie_jobs storage=LTO3 client=${HOST}-fd
307 stop_bacula
308
309 check_two_logs
310
311 end_test