# create a new bacula-sd.confs
for i in 2 3 4; do
perl -ne "\$i='$i';\$tmp='$tmp';"'
+ if (/Name =/ ) { $_ =~ s/-sd/-$i-sd/}
if (/SDPort = /) { $_ =~ s/(\d+)/1810$i/}
- if (/Name = /) { $_ =~ s/FileStorage/FileStorage$i/}
- if (/mediatype = /) { $_ =~ s/FileMedia/FileMedia$1/}
+ if (/mediatype = /) { $_ =~ s/FileMedia/FileMedia$i/}
if (/WorkingDirectory/) { $_ =~ s:working:tmp/$i:}
if (/Pid Directory/) { $_ =~ s:working:tmp/$i:}
if (/(Archive|Changer) Device/) { $_ =~ s:$tmp:$tmp/$i:}
print;
' $conf/bacula-sd.conf > $conf/bacula-sd$i.conf
- mkdir -p ${working}$i
+ mkdir -p ${tmp}/$i
sed "s/bacula-sd.conf/bacula-sd${i}.conf/" $scripts/bacula-ctl-sd \
> $tmp/bacula-ctl-sd$i
chmod +x $tmp/bacula-ctl-sd$i
change_jobname $JobName
start_test
+# Stop SDs
+for sd in 2 3 4; do
+ $tmp/bacula-ctl-sd$sd stop &> /dev/null
+done
+
+sleep 2
+
+# Start SDs
+for sd in 2 3 4; do
+ $tmp/bacula-ctl-sd$sd start &> /dev/null
+done
+
# Write out bconsole commands
cat <<END_OF_DATA >${cwd}/tmp/bconcmds
@out /dev/null
run job=$JobName storage=tape yes
wait
messages
+@exec "touch $cwd/build/po/fr.po"
run job=$JobName storage=File yes
wait
messages
+@exec "touch $cwd/build/po/de.po"
run job=$JobName storage=File2 yes
wait
messages
+@exec "touch $cwd/build/po/it.po"
run job=$JobName storage=File3 yes
wait
messages
+@exec "touch $cwd/build/po/es.po"
run job=$JobName storage=File4 yes
wait
messages
quit
END_OF_DATA
-# Start SDs
-for sd in 2 3 4; do
- $tmp/bacula-ctl-sd$sd start &> /dev/null
-done
-
run_bacula
echo "ficheriro1.txt" >${cwd}/build/po/ficheriro1.txt
messages
@$out ${cwd}/tmp/log1.out
@# Force Incremental on the second Volume
+@exec "touch $cwd/build/po/fi.po"
run level=Incremental storage=File job=$JobName yes
wait
messages
+@exec "touch $cwd/build/po/uk.po"
run level=Incremental storage=File2 job=$JobName yes
wait
messages
+@exec "touch $cwd/build/po/sv.po $cwd/build/po/test.po"
run level=Incremental storage=File3 job=$JobName yes
wait
messages
+@exec "touch $cwd/build/po/README"
run level=Incremental storage=File4 job=$JobName yes
wait
messages
@#
@# now do a restore
@#
-@$out ${cwd}/tmp/log2.out
+@$out ${cwd}/tmp/log22.out
setdebug trace=1 level=110 client
setdebug trace=1 level=110 director
restore where=${cwd}/tmp/bacula-restores select all done yes
wait
messages
+@$out ${cwd}/tmp/status.out
+status all
+@exec "touch $cwd/build/po/POTFILES"
+@$out ${cwd}/tmp/log1.out
+run level=Incremental storage=File4 job=$JobName yes
+wait
+messages
+@# run a job that will wait for a volume
+@$out ${cwd}/tmp/log23.out
+@exec "touch $cwd/build/po/ChangeLog"
+run level=Incremental pool=Special storage=File3 job=$JobName yes
+@sleep 5
+messages
+status dir
+status storage=File3
+@sleep 3
+@#
+@# now do a restore with a backup that takes a drive
+@#
+setdebug trace=1 level=110 client
+setdebug trace=1 level=110 director
+restore where=${cwd}/tmp/bacula-restores select all done yes
+@sleep 10
+messages
+status dir
+label storage=File3 volume=test3 pool=Special
+mount storage=File3
+wait
+messages
show storage
sql
select * FROM Storage;
run_bconsole
check_for_zombie_jobs storage=File
+check_for_zombie_jobs storage=File2
+check_for_zombie_jobs storage=File3
+check_for_zombie_jobs storage=File4
check_for_zombie_jobs storage=tape
stop_bacula
$tmp/bacula-ctl-sd$sd stop &> /dev/null
done
+# we have two restore to test
+cp $tmp/log22.out $tmp/log2.out
+check_two_logs
+cp $tmp/log23.out $tmp/log2.out
check_two_logs
+
check_restore_diff
end_test