#!/bin/sh
#
# Copyright (C) 2000-2022 Kern Sibbald
# License: BSD 2-Clause; see file LICENSE-FOSS
#

#
# This script uses the virtual disk autochanger
#
TestName="multi-storage-test"
JobName=backup
. scripts/functions

scripts/cleanup
scripts/copy-2disk-confs
scripts/prepare-disk-changer

# create a new bacula-sd.conf
perl -ne '
if (/SDPort = /) { $_ =~ s/(\d+)/1$1/;}
if (/Name = .+?-sd/) { $_ =~ s/-sd/-sd2/;}
if (/WorkingDirectory/) { $_ =~ s/"$/2"/; }
print;
' $conf/bacula-sd.conf > $conf/bacula-sd2.conf

mkdir -p ${working}2

perl -ne '
if (/^Storage \{/) { $in=1; $nb++; }
if (/^}/) { $in=0 }
if (/SDPort = (\d+)/ && $in) {if ($nb == 2) { $_ = "  SDPort = 1$1\n"; }}
print;
' $conf/bacula-dir.conf > $tmp/1
cp $tmp/1 $conf/bacula-dir.conf


sed 's/bacula-sd.conf/bacula-sd2.conf/' $scripts/bacula-ctl-sd \
    > $tmp/bacula-ctl-sd
chmod +x $tmp/bacula-ctl-sd

disable_plugins

echo "${cwd}/build" >${cwd}/tmp/file-list

change_jobname $JobName
start_test

# Write out bconsole commands
cat <<END_OF_DATA >${cwd}/tmp/bconcmds
@output /dev/null
messages
@$out ${cwd}/tmp/log1.out
label storage=tape volume=TestVolume001 Pool=Default slot=1 drive=0
label storage=File  volume=TestVolume002 Pool=Default
run job=$JobName storage=tape yes
wait
messages
quit
END_OF_DATA

$tmp/bacula-ctl-sd start &> /dev/null
run_bacula

echo "ficheriro1.txt" >${cwd}/build/po/ficheriro1.txt
echo "ficheriro2.txt" >${cwd}/build/po/ficheriro2.txt


cat <<END_OF_DATA >${cwd}/tmp/bconcmds
@output /dev/null
messages
@$out ${cwd}/tmp/log1.out
@# Force Incremental on the second Volume
run level=Incremental storage=File job=$JobName yes
wait
messages
@# 
@# now do a restore
@#
@$out ${cwd}/tmp/log2.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
quit
END_OF_DATA

run_bconsole

check_for_zombie_jobs storage=File
check_for_zombie_jobs storage=tape
stop_bacula
$tmp/bacula-ctl-sd stop &> /dev/null

check_two_logs
check_restore_diff

end_test
