From a893b78725a277379f3d6bce4c9dde90a0ee8415 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Wed, 5 Jul 2006 20:27:04 +0000 Subject: [PATCH] Add migration job test git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3125 91ce42f0-d328-0410-95d8-f526ca767f89 --- regress/scripts/bacula-dir-migration.conf.in | 180 +++++++++++++++++++ regress/scripts/bacula-sd-2disk.conf | 1 + regress/scripts/bacula-sd-2disk.conf.in | 1 + regress/scripts/cleanup | 1 + regress/scripts/copy-2disk-confs | 4 +- regress/scripts/copy-migration-confs | 8 + regress/scripts/do_sed | 2 + regress/scripts/functions | 4 +- regress/scripts/prepare-two-disks | 2 +- regress/tests/incremental-2disk | 4 - regress/tests/migration-job-test | 66 +++++++ regress/tests/migration-test | 62 +++++++ 12 files changed, 328 insertions(+), 7 deletions(-) create mode 100644 regress/scripts/bacula-dir-migration.conf.in create mode 100755 regress/scripts/copy-migration-confs create mode 100755 regress/tests/migration-job-test create mode 100755 regress/tests/migration-test diff --git a/regress/scripts/bacula-dir-migration.conf.in b/regress/scripts/bacula-dir-migration.conf.in new file mode 100644 index 0000000000..088ad3e8dc --- /dev/null +++ b/regress/scripts/bacula-dir-migration.conf.in @@ -0,0 +1,180 @@ +# +# Default Bacula Director Configuration file +# +# The only thing that MUST be changed is to add one or more +# file or directory names in the Include directive of the +# FileSet resource. +# +# For Bacula release 1.39 +# +# You might also want to change the default email address +# from root to your address. See the "mail" and "operator" +# directives in the Messages resource. +# + +Director { # define myself + Name = @hostname@-dir + DIRport = 8101 # where we listen for UA connections + QueryFile = "@scriptdir@/query.sql" + WorkingDirectory = "@working_dir@" + PidDirectory = "@piddir@" + Maximum Concurrent Jobs = 4 + Password = "pNvX1WiXnwv2C/F7E52LGvw6rKjbbPvu2kyuPa9pVaL3" + Messages = Daemon +} + +# +# Define the main nightly save backup job +# By default, this job will back up to disk in /tmp +Job { + Name = "NightlySave" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = File + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +# Prefer Mounted Volumes = no +} + +Job { + Name = "migrate" + Type = Migrate + Level = Full + Client=@hostname@-fd + FileSet="Full Set" + Messages = Standard + Storage = DiskChanger + Write Bootstrap = "@working_dir@/migrate.bsr" + Pool = Default + Maximum Concurrent Jobs = 4 + Selection Type = Job + Selection Pattern = ".*Save" +} + +# Standard Restore template, to be changed by Console program +Job { + Name = "RestoreFiles" + Type = Restore + Client=@hostname@-fd + FileSet="Full Set" + Storage = File + Messages = Standard + Pool = Default + Where = /tmp/bacula-restores +} + + +# List of files to be backed up +FileSet { + Name = "Full Set" + Include { Options { signature=MD5 } + File = ${outf} cp bin/bacula-dir.conf tmp/1 sed -f ${outf} tmp/1 >bin/bacula-dir.conf - diff --git a/regress/scripts/copy-migration-confs b/regress/scripts/copy-migration-confs new file mode 100755 index 0000000000..c7680bc40e --- /dev/null +++ b/regress/scripts/copy-migration-confs @@ -0,0 +1,8 @@ +#!/bin/sh +# +# Setup for using the Virtual Disk Changer (simulates tape changer) +# +/bin/cp -f scripts/bacula-dir-migration.conf bin/bacula-dir.conf +/bin/cp -f scripts/bacula-sd-migration.conf bin/bacula-sd.conf +/bin/cp -f scripts/test-bacula-fd.conf bin/bacula-fd.conf +/bin/cp -f scripts/test-console.conf bin/bconsole.conf diff --git a/regress/scripts/do_sed b/regress/scripts/do_sed index 8357611c50..d59606e52b 100755 --- a/regress/scripts/do_sed +++ b/regress/scripts/do_sed @@ -42,9 +42,11 @@ sed -f ${out} ${cwd}/scripts/test-bacula-sd.conf.in >${cwd}/scripts/test-bacula- sed -f ${out} ${cwd}/scripts/test-console.conf.in >${cwd}/scripts/test-console.conf sed -f ${out} ${cwd}/scripts/crypto-bacula-fd.conf.in >${cwd}/scripts/crypto-bacula-fd.conf sed -f ${out} ${cwd}/scripts/bacula-dir-tape.conf.in >${cwd}/scripts/bacula-dir-tape.conf +sed -f ${out} ${cwd}/scripts/bacula-dir-migration.conf.in >${cwd}/scripts/bacula-dir-migration.conf sed -f ${out} ${cwd}/scripts/win32-bacula-dir-tape.conf.in >${cwd}/scripts/win32-bacula-dir-tape.conf sed -f ${out} ${cwd}/scripts/bacula-sd-tape.conf.in >${cwd}/scripts/bacula-sd-tape.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2tape.conf.in >${cwd}/scripts/bacula-sd-2tape.conf +sed -f ${out} ${cwd}/scripts/bacula-sd-migration.conf.in >${cwd}/scripts/bacula-sd-migration.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2disk.conf.in >${cwd}/scripts/bacula-sd-2disk.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2drive.conf.in >${cwd}/scripts/bacula-sd-2drive.conf sed -f ${out} ${cwd}/scripts/bacula-sd-2disk-drive.conf.in >${cwd}/scripts/bacula-sd-2disk-drive.conf diff --git a/regress/scripts/functions b/regress/scripts/functions index 12d05f4ccc..33dd28d86a 100644 --- a/regress/scripts/functions +++ b/regress/scripts/functions @@ -115,7 +115,9 @@ end_test() else echo " ===== $TestName Bacula source OK `date +%R:%S` ===== " echo " ===== $TestName OK `date +%R:%S` ===== " >>test.out - scripts/cleanup + if test "$debug" -eq 0 ; then + scripts/cleanup + fi fi } diff --git a/regress/scripts/prepare-two-disks b/regress/scripts/prepare-two-disks index d7d97bdbb0..1a8c6db46d 100755 --- a/regress/scripts/prepare-two-disks +++ b/regress/scripts/prepare-two-disks @@ -1,6 +1,6 @@ #!/bin/sh # -# Create two blank tapes +# Cread fresh virtual disk changer directory # rm -rf tmp/disk-changer mkdir tmp/disk-changer diff --git a/regress/tests/incremental-2disk b/regress/tests/incremental-2disk index 9294c33686..68eb9f452d 100755 --- a/regress/tests/incremental-2disk +++ b/regress/tests/incremental-2disk @@ -11,10 +11,6 @@ JobName=Inc2disk set_debug 0 . config.out -if test x${AUTOCHANGER} = x/dev/null ; then - echo "incremental-2disk test skipped. No autochanger." - exit -fi stop_bacula cd bin diff --git a/regress/tests/migration-job-test b/regress/tests/migration-job-test new file mode 100755 index 0000000000..dc8dff7a5a --- /dev/null +++ b/regress/tests/migration-job-test @@ -0,0 +1,66 @@ +#!/bin/sh +# +# Run a simple backup of the Bacula build directory then migrate it +# to another device. +# +# This script uses the virtual disk autochanger +# +TestName="migration-job-test" +JobName=MigrationJobSave +. scripts/functions +set_debug 0 + +. config.out + +scripts/copy-migration-confs +scripts/prepare-two-disks +scripts/cleanup +echo "${cwd}/build" >/tmp/file-list + +change_jobname NightlySave $JobName +start_test + +# +# Note, we first backup into Pool Default, +# then Migrate into Pool Full. +# Pool Default uses Storage=File +# Pool Full uses Storage=DiskChanger + +# Write out bconsole commands +cat <tmp/bconcmds +@output +messages +@$out tmp/log1.out +label storage=File volume=FileVolume001 Pool=Default +label storage=DiskChanger volume=ChangerVolume001 slot=1 Pool=Full drive=0 +label storage=DiskChanger volume=ChangerVolume002 slot=2 Pool=Full drive=0 +list volumes +run job=$JobName yes +wait +list volumes +run job=migrate yes +list volumes +wait +messages +@# +@# now do a restore +@# +@$out tmp/log2.out +restore where=${cwd}/tmp/bacula-restores select storage=DiskChanger +unmark * +mark * +done +yes +wait +messages +@output +quit +END_OF_DATA + +run_bacula +check_for_zombie_jobs storage=File +stop_bacula + +check_two_logs +check_restore_diff +end_test diff --git a/regress/tests/migration-test b/regress/tests/migration-test new file mode 100755 index 0000000000..21bf7642ad --- /dev/null +++ b/regress/tests/migration-test @@ -0,0 +1,62 @@ +#!/bin/sh +# +# Run a simple backup of the Bacula build directory then migrate it +# to another device. +# +# This script uses the virtual disk autochanger +# +TestName="migration-test" +JobName=MigrationSave +. scripts/functions +set_debug 1 + +. config.out + +scripts/copy-migration-confs +scripts/prepare-two-disks +scripts/cleanup +echo "${cwd}/build" >/tmp/file-list + +change_jobname NightlySave $JobName +start_test + +# +# Note, we first backup into Pool Default, then Migrate into +# Pool Full. Pool Default uses Storage=File +# Pool Full uses Storage=DiskChanger + +# Write out bconsole commands +cat <tmp/bconcmds +@$out /dev/null +messages +@$out tmp/log1.out +label storage=File volume=FileVolume001 Pool=Default +label storage=DiskChanger volume=ChangerVolume001 slot=1 Pool=Full drive=0 +label storage=DiskChanger volume=ChangerVolume002 slot=2 Pool=Full drive=0 +list volumes +run job=$JobName yes +list volumes +run job=migrate +list volumes +@# +@# now do a restore +@# +@$out tmp/log2.out +restore where=${cwd}/tmp/bacula-restores select storage=DiskChanger +unmark * +mark * +done +yes +wait +messages +@output +quit +END_OF_DATA + +run_bacula +check_for_zombie_jobs storage=File +stop_bacula + +check_two_logs +check_restore_diff +end_test -- 2.39.5