#!/bin/sh # # This script will test next vol algo with # vtape # # TODO: Test Pool with RecyclePool # Test Pool without RecyclePool # Test with enabled=false # Test with recycle=no # Track scratch usage # . scripts/functions TestName="next-vol-test" JobName=backup require_linux scripts/cleanup scripts/copy-tape-confs cp scripts/bacula-dir-vtape.conf bin/bacula-dir.conf cp scripts/bacula-sd-vtape.conf bin/bacula-sd.conf scripts/prepare-fake-autochanger start_test cat < ${cwd}/tmp/bconcmds @$out ${cwd}/tmp/log.out label barcodes storage=LTO3 slots=47-59 drive=0 pool=Scratch yes update volume=vol47 pool=Test inchanger=no RecyclePool=Test update volume=vol59 pool=Test enabled=no update volume=vol58 pool=Test volstatus=Recycle purge volume=vol57 update volume=vol56 pool=Test update volume=vol55 pool=Test volstatus=Full volretention=15 update volume=vol54 volstatus=Recycle purge volume=vol53 update volume=vol52 MaxVolJobs=1 update volume=vol51 inchanger=no volstatus=Recycle purge volume=vol50 update volume=vol50 inchanger=no update volume=vol49 inchanger=no update volume=vol48 inchanger=no pool=Test update volume AllFromPool=Test sql update Media SET VolJobs=1 WHERE VolumeName='vol52'; update Media SET LastWritten='2006-01-01 01:00:00'; list volume EOF run_bacula echo $PWD/build/po > tmp/file-list cat < ${cwd}/tmp/bconcmds @$out ${cwd}/tmp/log2.out list volume @# Must choose vol56 run level=full pool=Test NightlySave yes wait message list volume @# Must choose vol58 run level=full pool=Test NightlySave yes wait message list volume @# Must choose vol55 run level=full pool=Test NightlySave yes wait message list volume @# Must choose vol54 run level=full pool=Test NightlySave yes wait message list volume @# Must choose vol52 run level=full pool=Test NightlySave yes wait message list volume @# Must choose vol53 run level=full pool=Test NightlySave yes wait message list volume @# Must choose vol57 run level=full pool=Test NightlySave yes wait message list volume restore fileset="Full Set" pool=Test where=${cwd}/tmp/bacula-restores select all done yes wait messages wait messages @# Must Wait @#run level=full pool=Test NightlySave yes @#wait @#message @#list volume EOF run_bconsole awk '/Must choose/ { print $4 } ' tmp/log2.out > tmp/normal awk '/Volume name.+:/ { print $3 } ' tmp/log2.out > tmp/real if test "$debug" -eq 1; then diff -ur tmp/normal tmp/real else diff tmp/normal tmp/real > /dev/null fi export dstat=$? # try to break the old code # in this situation, we have 1 available volume (vol50) and bacula will try to use # vol47, vol48 and vol49 and will stop without using vol50. cat < ${cwd}/tmp/bconcmds @$out ${cwd}/tmp/log1.out update volume=vol47 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test update volume=vol48 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test update volume=vol49 pool=Test VolStatus=Used VolRetention=10s inchanger=no RecyclePool=Test update volume=vol50 pool=Test VolStatus=Used VolRetention=10s inchanger=yes RecyclePool=Test sql update Media SET LastWritten='2005-01-01 01:00:00' WHERE VolumeName IN ('vol47', 'vol48', 'vol49'); list volume run level=full pool=Test NightlySave yes wait messages quit EOF run_bconsole check_for_zombie_jobs storage=LTO3 stop_bacula grep "Invalid slot=0 defined in catalog for Volume" tmp/log1.out > /dev/null if [ $? -ne 0 ]; then bstat=$? fi check_two_logs end_test