ADD_TEST(disk:2drive-3pool-test "@regressdir@/tests/2drive-3pool-test")
ADD_TEST(disk:2drive-concurrent-test "@regressdir@/tests/2drive-concurrent-test")
ADD_TEST(disk:2drive-incremental-2disk "@regressdir@/tests/2drive-incremental-2disk")
+ADD_TEST(disk:2drive-swap-test "@regressdir@/tests/2drive-swap-test")
ADD_TEST(disk:2drive-2job-test "@regressdir@/tests/2drive-2job-test")
ADD_TEST(disk:three-pool-test "@regressdir@/tests/three-pool-test")
ADD_TEST(disk:tls-test "@regressdir@/tests/tls-test")
nice tests/incremental-2media
nice tests/three-pool-test
nice tests/2drive-3pool-test
+nice tests/2drive-swap-test
echo "End non-root virtual disk autochanger tests"
echo "End non-root virtual disk autochanger tests" >>test.out
--- /dev/null
+#!/bin/sh
+#
+# Set prefer mounted volumes to no to try to force use of
+# the drive swap code.
+#
+# This script uses the virtual disk autochanger and two drives
+#
+TestName="2drive-swap"
+JobName="2drive-swap"
+. scripts/functions
+
+scripts/cleanup
+scripts/copy-2disk-drive-confs
+scripts/prepare-two-disks
+
+change_jobname NightlySave $JobName
+start_test
+
+echo "${cwd}/build" >${cwd}/tmp/file-list
+
+# Turn off Prefer Mounted Volumes so we use 2 drives
+outf="${cwd}/tmp/sed_tmp"
+echo "s%# Prefer Mounted Volumes% Prefer Mounted Volumes%g" >${outf}
+cp ${cwd}/bin/bacula-dir.conf ${cwd}/tmp/1
+# Comment the next line out to write everything to one drive
+# otherwise, it writes the two jobs to different drives
+sed -f ${outf} ${cwd}/tmp/1 >${cwd}/bin/bacula-dir.conf
+
+# Write out bconsole commands
+cat <<END_OF_DATA >${cwd}/tmp/bconcmds
+@output /dev/null
+messages
+@$out ${cwd}/tmp/log1.out
+label storage=DDS-4 volume=TestVolume001 slot=1 Pool=Default drive=0
+label storage=DDS-4 volume=TestVolume002 slot=2 Pool=Default drive=1
+status storage=DDS-4
+@#setdebug level=120 storage=DDS-4
+run job=$JobName level=Full yes
+@sleep 2
+run job=$JobName level=Full yes
+wait
+list volumes
+list jobs
+update volume=TestVolume001 maxvolbytes=40123123
+setdebug level=150 storage=DDS-4
+run job=$JobName level=Full yes
+wait
+list volumes
+list jobs
+messages
+quit
+END_OF_DATA
+
+run_bacula
+
+cat <<END_OF_DATA >${cwd}/tmp/bconcmds
+@$out /dev/null
+messages
+@# now do a restore
+@#
+@$out ${cwd}/tmp/log2.out
+restore where=${cwd}/tmp/bacula-restores select all storage=DDS-4 done
+yes
+wait
+messages
+@$out
+quit
+END_OF_DATA
+
+run_bconsole
+check_for_zombie_jobs storage=DDS-4
+stop_bacula
+
+check_two_logs
+check_restore_diff
+
+end_test
#!/bin/sh
+rm -rf tmp/disk-changer
+mkdir tmp/disk-changer
+touch tmp/disk-changer/conf
echo "Unload drive 0"
bin/disk-changer tmp/disk-changer/conf unload 1 tmp/disk-changer/drive0 0
echo "rtn=$?"
echo "Load Slot 2 in drive 0 -- error"
bin/disk-changer tmp/disk-changer/conf load 2 tmp/disk-changer/drive0 0
echo "rtn=$?"
+echo "Unload drive 0"
+bin/disk-changer tmp/disk-changer/conf unload 1 tmp/disk-changer/drive0 0
+echo "rtn=$?"
+echo "Load Slot 2 in drive 0 -- should fail"
+bin/disk-changer tmp/disk-changer/conf load 2 tmp/disk-changer/drive0 0
+echo "rtn=$?"