]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/truncate2-test
33ba0bd5fca3769086f5aa6a24e64143d3b7e8bc
[bacula/bacula] / regress / tests / truncate2-test
1 #!/bin/sh
2 #
3 # Copyright (C) 2000-2017 Kern Sibbald
4 # License: BSD 2-Clause; see file LICENSE-FOSS
5 #
6 # Test truncate command (replaces old purge action=truncate ...)
7 #
8 # We run several jobs on different volumes, than during the last job
9 # we run a truncate command.
10 #
11 #
12 TestName="truncate2-test"
13 JobName=NightlySave
14 . scripts/functions
15
16 cwd=`pwd`
17 scripts/cleanup
18 scripts/copy-2disk-virtual-confs
19
20 echo $src > $tmp/file-list
21
22 $bperl -e 'add_attribute("$conf/bacula-dir.conf", "ActionOnPurge", "Truncate", "Pool")'
23 $bperl -e 'add_attribute("$conf/bacula-dir.conf", "SpoolData", "No", "Job")'
24 $bperl -e 'add_attribute("$conf/bacula-sd.conf", "Maximum Volume Size", "500M", "Device")'
25 start_test
26
27 cat >tmp/bconcmds <<END_OF_DATA
28 @$out /dev/null
29 messages
30 @$out $tmp/log1.out
31 label storage=vDrive-1 volume=TestVolume001 drive=0 slot=0 pool=Default
32 @########################################################
33 @# Run a first job on TestVolume001
34 @########################################################
35 run level=full job=$JobName storage=vDrive-1 yes
36 wait
37 messages
38 @#########################################################
39 @# Run a second job on TestVolume002
40 @#########################################################
41 @$out $tmp/log3.out
42 label storage=vDrive-1 volume=TestVolume002 drive=0 slot=0 pool=Default
43 update volume=TestVolume001 volstatus=Used
44 messages
45 @$out $tmp/log1.out
46 run level=full job=$JobName storage=vDrive-1 yes
47 wait
48 messages
49 @#########################################################
50 @# Run a 3th job on TestVolume003
51 @#########################################################
52 @$out $tmp/log3.out
53 update volume=TestVolume002 volstatus=Used
54 label storage=vDrive-1 volume=TestVolume003 drive=0 slot=0 pool=Default
55 messages
56 @$out $tmp/log1.out
57 run level=full job=$JobName storage=vDrive-1 yes
58 wait
59 messages
60 @#########################################################
61 @# Run a 4th job
62 @#########################################################
63 @$out $tmp/log5.out
64 update volume=TestVolume003 volstatus=Used
65 label storage=vDrive-1 volume=TestVolume004 drive=0 slot=0 pool=Default
66 messages
67 @$out $tmp/log1.out
68 run level=full job=$JobName storage=vDrive-1 yes
69 wait
70 messages
71 list volume
72 @$out $tmp/log1.out
73 update volume=TestVolume004 volstatus=Used
74 label storage=vDrive-1 volume=TestVolume005 drive=0 slot=0 pool=Default
75 setbandwidth limit="10000 kb/s" client
76 run level=full job=$JobName storage=vDrive-1 yes
77 @sleep 5
78 @$out $tmp/log6.out
79 @#########################################################
80 @# tests
81 @#########################################################
82 update volume=TestVolume002 actiononpurge=none
83 purge volume=TestVolume001
84 purge volume=TestVolume002
85 purge volume=TestVolume003
86 purge volume=TestVolume004
87 list volume
88 sql
89 select VolumeName, VolStatus, ActionOnPurge FROM Media;
90
91 setdebug level=100 director
92 quit
93 END_OF_DATA
94
95 run_bacula
96
97 if test "$debug" -eq 1 ; then
98   echo "Volume sizes before truncate ..."
99   cd ${tmp}
100   ls -l TestVolume*
101   cd ${cwd}
102 fi
103
104 print_debug "Check all media"
105 for i in 1 2 3 4 5 ; do
106   size=`du -b TestVolume00$i|cut -f1`
107   if test $size -lt 5000 ; then
108      print_debug "ERROR 2: Volume TestVolum00$i is too small $size"
109      ls -l TestVolume00$i
110      estat=2
111   fi
112 done
113
114 cat <<EOF  > $tmp/bconcmds
115 @$out $tmp/log.err
116 truncate volume=TestVolume001 storage=vDrive-1 allpools
117 @$out $tmp/log3.out
118 truncate volume=TestVolume001 storage=vDrive-2 allpools
119 EOF
120
121 run_bconsole
122
123 if test "$debug" -eq 1 ; then
124   echo "Volume TestVolume001 should be truncated ..."
125   cd ${tmp}
126   ls -l TestVolume*
127   cd ${cwd}
128 fi
129
130 for i in  2 3 4 5 ; do
131   size=`du -b TestVolume00$i|cut -f1`
132   if test $size -lt 5000 ; then
133      print_debug "ERROR 3: Volume TestVolum00$i is too small $size"
134      ls -l TestVolume00$i
135      estat=3
136   fi
137 done
138 for i in 1 ; do
139   size=`du -b TestVolume00$i|cut -f1`
140   if test $size -gt 5000 ; then
141      print_debug "ERROR 4: Volume TestVolum00$i is not truncated (too big) $size"
142      ls -l TestVolume00$i
143      estat=4
144   fi
145 done
146
147 echo "truncate volume storage=vDrive-2 allpools" > $tmp/bconcmds
148 run_bconsole
149
150 if test "$debug" -eq 1 ; then
151   echo "Volumes 001, 003, and 004 should be truncated ..."
152   cd ${tmp}
153   ls -l TestVolume*
154   cd ${cwd}
155 fi
156
157 for i in 2 5 ; do
158   size=`du -b TestVolume00$i|cut -f1`
159   if test $size -lt 5000 ; then
160      print_debug "ERROR 5: Volume TestVolum00$i is too small $size"
161      ls -l TestVolume00$i
162      estat=5
163   fi
164 done
165 for i in 1 3 4 ; do
166   size=`du -b TestVolume00$i|cut -f1`
167   if test $size -gt 5000 ; then
168      print_debug "ERROR 6: Volume TestVolum00$i is not truncated (too big) $size"
169      ls -l TestVolume00$i
170      estat=6
171   fi
172 done
173
174
175 cat <<END_OF_DATA > $tmp/bconcmds
176 @$out $tmp/log1.out
177 setdebug level=0 dir
178 setbandwidth limit="1000000 kb/s" client
179 wait
180 messages
181 @$out $tmp/log2.out
182 restore jobid=5 all done yes where=$tmp/bacula-restores
183 wait
184 messages
185 @#########################################################
186 @# Display catalog settings for Pool and Media
187 @#########################################################
188 @$out $tmp/log4.out
189 setdebug level=0 director
190 sql
191 select VolumeName, ActionOnPurge FROM Media;
192 select Name, ActionOnPurge FROM Pool;
193
194 wait
195 quit
196 END_OF_DATA
197
198 run_bconsole
199
200 check_for_zombie_jobs storage=File
201
202 stop_bacula
203
204 check_two_logs
205
206 check_restore_diff
207
208 print_debug "Test if Pool record is ok"
209 r=`awk '/Default/ { print $4 }' $tmp/log4.out`
210 if [ "$r" != 1 ]; then
211     print_debug "ActionOnPurge on Pool record should be 1 ($r)"
212     estat=2
213 fi
214
215 print_debug "Test TestVolume001 if Media record is ok"
216 r=`awk '/TestVolume001/ { print $4 }' $tmp/log4.out`
217 if [ "$r" != 1 ]; then
218     print_debug "ActionOnPurge on Media record should be 1"
219     estat=2
220 fi
221
222 print_debug "Test TestVolume002 if Media record is ok"
223 r=`awk '/TestVolume002/ { print $4 }' $tmp/log4.out`
224 if [ "$r" != 0 ]; then
225     print_debug "ActionOnPurge on Media record should be 0"
226     estat=2
227 fi
228
229 end_test