3 # Copyright (C) 2000-2017 Kern Sibbald
4 # License: BSD 2-Clause; see file LICENSE-FOSS
6 # Test truncate command (replaces old purge action=truncate ...)
8 # We run several jobs on different volumes, than during the last job
9 # we run a truncate command.
12 TestName="truncate2-test"
18 scripts/copy-2disk-virtual-confs
20 echo $src > $tmp/file-list
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")'
27 cat >tmp/bconcmds <<END_OF_DATA
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
38 @#########################################################
39 @# Run a second job on TestVolume002
40 @#########################################################
42 label storage=vDrive-1 volume=TestVolume002 drive=0 slot=0 pool=Default
43 update volume=TestVolume001 volstatus=Used
46 run level=full job=$JobName storage=vDrive-1 yes
49 @#########################################################
50 @# Run a 3th job on TestVolume003
51 @#########################################################
53 update volume=TestVolume002 volstatus=Used
54 label storage=vDrive-1 volume=TestVolume003 drive=0 slot=0 pool=Default
57 run level=full job=$JobName storage=vDrive-1 yes
60 @#########################################################
62 @#########################################################
64 update volume=TestVolume003 volstatus=Used
65 label storage=vDrive-1 volume=TestVolume004 drive=0 slot=0 pool=Default
68 run level=full job=$JobName storage=vDrive-1 yes
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
79 @#########################################################
81 @#########################################################
82 update volume=TestVolume002 actiononpurge=none
83 purge volume=TestVolume001
84 purge volume=TestVolume002
85 purge volume=TestVolume003
86 purge volume=TestVolume004
89 select VolumeName, VolStatus, ActionOnPurge FROM Media;
91 setdebug level=100 director
97 if test "$debug" -eq 1 ; then
98 echo "Volume sizes before truncate ..."
104 print_debug "Check all media"
105 for i in 1 2 3 4 5 ; do
106 size=`du -b ${tmp}/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 ${tmp}/TestVolume00$i
114 cat <<EOF > $tmp/bconcmds
116 truncate volume=TestVolume001 storage=vDrive-1 allpools
118 truncate volume=TestVolume001 storage=vDrive-2 allpools
123 if test "$debug" -eq 1 ; then
124 echo "Volume TestVolume001 should be truncated ..."
130 for i in 2 3 4 5 ; do
131 size=`du -b ${tmp}/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 ${tmp}/TestVolume00$i
139 size=`du -b ${tmp}/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 ${tmp}/TestVolume00$i
147 echo "truncate volume storage=vDrive-2 allpools" > $tmp/bconcmds
150 if test "$debug" -eq 1 ; then
151 echo "Volumes 001, 003, and 004 should be truncated ..."
153 ls -l ${tmp}/TestVolume*
158 size=`du -b ${tmp}/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 ${tmp}/TestVolume00$i
166 size=`du -b ${tmp}/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 ${tmp}/TestVolume00$i
175 cat <<END_OF_DATA > $tmp/bconcmds
178 setbandwidth limit="1000000 kb/s" client
182 restore jobid=5 all done yes where=$tmp/bacula-restores
185 @#########################################################
186 @# Display catalog settings for Pool and Media
187 @#########################################################
189 setdebug level=0 director
191 select VolumeName, ActionOnPurge FROM Media;
192 select Name, ActionOnPurge FROM Pool;
200 check_for_zombie_jobs storage=File
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)"
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"
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"