@# Run a 3th job on TestVolume003
@#########################################################
@$out $tmp/log3.out
-update volume=TestVolume002 volstatus=Full
+update volume=TestVolume002 volstatus=Used
label storage=File volume=TestVolume003
messages
show pool
@$out $tmp/log7.out
@#########################################################
@# test that we cannot truncate a volume that is not purged
-@# TestVolume001 - Used
-@# TestVolume002 - Full
-@# TestVolume005 - Append
@#########################################################
-llist volume=TestVolume001
-llist volume=TestVolume002
-llist volume=TestVolume005
@exec "du -s -b $tmp/TestVolume001"
-truncate volume=TestVolume001 storage=File
-truncate volume=TestVolume002 storage=File
-truncate volume=TestVolume005 storage=File
+truncate volume=TestVolume001 storage=File
@exec "du -s -b $tmp/TestVolume001"
messages
+@$out $tmp/log6.out
@#########################################################
@# tests
@#########################################################
select VolumeName, VolStatus, ActionOnPurge FROM Media;
setdebug level=100 director
-messages
wait
quit
END_OF_DATA
check_for_zombie_jobs storage=File
cd $tmp
-
-# First check if volumes which were not purged were truncated
-TV1=`grep "The volume \"TestVolume001\" has been truncated" $tmp/log7.out`
-TV2=`grep "The volume \"TestVolume002\" has been truncated" $tmp/log7.out`
-TV3=`grep "The volume \"TestVolume005\" has been truncated" $tmp/log7.out`
-if test "x$TV1" != "x" -o "x$TV2" != "x" -o "x$TV3" != "x"
-then
- # error, the volumes in non purge status should not be truncated
- dstat=1
- print_debug "ERROR 1: Volumes not in Purged status Truncated!!!"
-fi
-
if test "$debug" -eq 1 ; then
echo "Volume sizes before truncate ..."
ls -l TestVolume*
fi
done
+if ! grep "No Volumes found to perform the command" log7.out > /dev/null ; then
+ print_debug "ERROR 10: Should not be able to truncate TestVolum001 that holds bakcups"
+ estat=1
+else
+ before=`grep $tmp/TestVolume001 log7.out | grep -v exec | head -n 1`
+ after=`grep $tmp/TestVolume001 log7.out | grep -v exec | tail -n 1`
+ if [ -z "$before" -o \( "$before" != "$after" \) ] ; then
+ print_debug "ERROR 11: TestVolum001 has been truncated while it was holding bakcups"
+ estat=1
+ fi
+fi
+
cd $cwd
cat <<END_OF_DATA > $tmp/bconcmds
select Name, ActionOnPurge FROM Pool;
wait
-messages
quit
END_OF_DATA
estat=7
fi
-# Now test if the truncate command truncates labeled Volumes
-cat >tmp/bconcmds <<END_OF_DATA
-truncate allpools storage=File
-messages
-wait
-@$out $tmp/log6.out
-@# These truncates should not truncate any Volumes
-truncate allpools storage=File
-truncate allpools storage=File
-truncate allpools storage=File
-wait
-messages
-quit
-END_OF_DATA
-
-run_bacula
-stop_bacula
-
-grep "has been truncated" $tmp/log6.out >$tmp/log8.out
-if [ $? = 0 ] ; then
- cat $tmp/log8.out
- print_debug "ERROR 8: truncated volumes are truncated multiple times"
- estat=8
-fi
-
end_test