From 9ae63babdc27956ca179bd6b13f1ef4345b1a463 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Tue, 27 May 2008 14:47:52 +0000 Subject: [PATCH] Fix Client problem with two drive tests git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7038 91ce42f0-d328-0410-95d8-f526ca767f89 --- regress/scripts/bacula-dir-2client.conf.in | 299 +++++++++++++++++++++ regress/scripts/bacula-dir-tape.conf.in | 35 +-- regress/scripts/copy-2client-confs | 9 + regress/scripts/do_sed | 1 + regress/tests/2drive-2disk | 2 + regress/tests/2drive-2job-test | 1 + regress/tests/2drive-3pool-test | 1 + regress/tests/2drive-concurrent-test | 2 + regress/tests/2drive-incremental-2disk | 1 + regress/tests/2drive-offline-test | 81 ++++++ regress/tests/2drive-swap-test | 1 + regress/tests/three-pool-test | 1 + regress/tests/virtual-changer-test | 2 + 13 files changed, 403 insertions(+), 33 deletions(-) create mode 100644 regress/scripts/bacula-dir-2client.conf.in create mode 100755 regress/scripts/copy-2client-confs create mode 100755 regress/tests/2drive-offline-test diff --git a/regress/scripts/bacula-dir-2client.conf.in b/regress/scripts/bacula-dir-2client.conf.in new file mode 100644 index 0000000000..05bfa5b38e --- /dev/null +++ b/regress/scripts/bacula-dir-2client.conf.in @@ -0,0 +1,299 @@ +# +# 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.33 +# +# 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 = @dirport@ # where we listen for UA connections + QueryFile = "@scriptdir@/query.sql" + WorkingDirectory = "@working_dir@" + PidDirectory = "@piddir@" + Maximum Concurrent Jobs = 4 + Password = "pNvX1WiXnwv2C/F7E52LGvw6rKjbbPvu2kyuPa9pVaL3" + Messages = Daemon + FD Connect Timeout = 2min +} + +# +# Define the main nightly save backup job +# By default, this job will back up to disk in @tmpdir@ +Job { + Name = "NightlySave" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = DDS-4 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +# Prefer Mounted Volumes = no +} + +# +# Note, this client does not exist so the job will +# fail +# +Job { + Name = "Offline" + Type = Backup + Client=@hostname@-fd1 + FileSet="Full Set" + Storage = DDS-4 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +# Prefer Mounted Volumes = no +} + + +Job { + Name = "NightlySave1" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = DDS-4 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +# Prefer Mounted Volumes = no + Client Run Before Job = "/bin/sleep 10" +} + +Job { + Name = "NightlySave2" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = DDS-4 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +# Prefer Mounted Volumes = no +} + +Job { + Name = "VerifyTape" + Type = Verify + Level = VolumeToCatalog + Client=@hostname@-fd + FileSet="Verify Set" + Storage = DDS-4 + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +# Prefer Mounted Volumes = no +} + +Job { + Name = "Virtual" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = Virtual + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 + SpoolData = yes +# Prefer Mounted Volumes = no +} + + + +# Standard Restore template, to be changed by Console program +Job { + Name = "RestoreFiles" + Type = Restore + Client=@hostname@-fd + FileSet="Full Set" + Storage = DDS-4 + Messages = Standard + Pool = Default + Where = @tmpdir@/bacula-restores +} + + +# List of files to be backed up +FileSet { + Name = "Full Set" + Include { Options { signature=MD5 } + File = <@tmpdir@/file-list + } +} + +FileSet { + Name = "Verify Set" + Include { + Options { + signature=MD5 + verify=pins1 + } + File = <@tmpdir@/file-list + } +} + + + +# +# When to do the backups, full backup on first sunday of the month, +# differential (i.e. incremental since full) every other sunday, +# and incremental backups other days +Schedule { + Name = "WeeklyCycle" + Run = Full 1st sun at 1:05 + Run = Differential 2nd-5th sun at 1:05 + Run = Incremental mon-sat at 1:05 +} + +# Client (File Services) to backup +Client { + Name = @hostname@-fd + Address = @hostname@ + FDPort = @fdport@ + Catalog = MyCatalog + Password = "xevrjURYoCHhn26RaJoWbeWXEY/a3VqGKp/37tgWiuHc" # password for FileDaemon + File Retention = 30d # 30 days + Job Retention = 180d # six months + AutoPrune = yes # Prune expired Jobs/Files + Maximum Concurrent Jobs = 4 +} + +Client { + Name = @hostname@-fd1 + Address = @hostname@ + FDPort = 1@fdport@ # nothing should be on this port!!!!! + Catalog = MyCatalog + Password = "xevrjURYoCHhn26RaJoWbeWXEY/a3VqGKp/37tgWiuHc" # password for FileDaemon + File Retention = 30d # 30 days + Job Retention = 180d # six months + AutoPrune = yes # Prune expired Jobs/Files + Maximum Concurrent Jobs = 4 +} + + +# Definition of DDS tape storage device +Storage { + Name = DDS-4 + Address = @hostname@ # N.B. Use a fully qualified name here + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon + Device = DDS-4 # must be same as Device in Storage daemon + Media Type = DDS-4 # must be same as MediaType in Storage daemon + Maximum Concurrent Jobs = 4 +# Autochanger = yes +} + + +# Definition of File storage device +Storage { + Name = File + Address = @hostname@ # N.B. Use a fully qualified name here + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon + Device = FileStorage # must be same as Device in Storage daemon + Media Type = FileMedia # must be same as MediaType in Storage daemon + Maximum Concurrent Jobs = 4 +} + +# Definition of Virtual storage device +Storage { + Name = Virtual + Address = @hostname@ # N.B. Use a fully qualified name here + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" # password for Storage daemon + Device = Virtual # must be same as Device in Storage daemon + Media Type = Disk # must be same as MediaType in Storage daemon + Maximum Concurrent Jobs = 4 +} + + + + +# Generic catalog service +Catalog { + Name = MyCatalog + @libdbi@ + dbname = regress; user = regress; password = "" +} + +# Reasonable message delivery -- send most everything to email address +# and to the console +Messages { + Name = Standard + mailcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula regression Job %j\) %r\" -s \"Regression: %t %e of %c %l\" %r" + operatorcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula regression Job %j\) %r\" -s \"Regression: Intervention needed for %j\" %r" +# MailOnError = @job_email@ = all, !terminate +# operator = @job_email@ = mount + console = all, !skipped, !terminate, !restored +# +# WARNING! the following will create a file that you must cycle from +# time to time as it will grow indefinitely. However, it will +# also keep all your messages if the scroll off the console. +# + append = "@working_dir@/log" = all, !skipped +} + +# +# Message delivery for daemon messages (no job). +Messages { + Name = Daemon + mailcommand = "@sbindir@/bsmtp -h @smtp_host@ -f \"\(Bacula regression\) %r\" -s \"Regression daemon message\" %r" +# mail = @job_email@ = all, !skipped + console = all, !skipped, !saved + append = "@working_dir@/log" = all, !skipped +} + + +# Default pool definition +Pool { + Name = Default + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year +} + +Pool { + Name = Full + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year +} + +Pool { + Name = Inc + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year +} + +Pool { + Name = Scratch + Pool Type = Backup + Recycle = yes # Bacula can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365d # one year + Recycle Pool = Scratch # recycle back here +} diff --git a/regress/scripts/bacula-dir-tape.conf.in b/regress/scripts/bacula-dir-tape.conf.in index 05bfa5b38e..dd192c68a6 100644 --- a/regress/scripts/bacula-dir-tape.conf.in +++ b/regress/scripts/bacula-dir-tape.conf.in @@ -30,25 +30,7 @@ Director { # define myself Job { Name = "NightlySave" Type = Backup - Client=@hostname@-fd - FileSet="Full Set" - Storage = DDS-4 - Messages = Standard - Pool = Default - Write Bootstrap = "@working_dir@/NightlySave.bsr" - Maximum Concurrent Jobs = 4 - SpoolData = yes -# Prefer Mounted Volumes = no -} - -# -# Note, this client does not exist so the job will -# fail -# -Job { - Name = "Offline" - Type = Backup - Client=@hostname@-fd1 + Client = @hostname@-fd FileSet="Full Set" Storage = DDS-4 Messages = Standard @@ -63,7 +45,7 @@ Job { Job { Name = "NightlySave1" Type = Backup - Client=@hostname@-fd + Client = @hostname@-fd FileSet="Full Set" Storage = DDS-4 Messages = Standard @@ -178,19 +160,6 @@ Client { Maximum Concurrent Jobs = 4 } -Client { - Name = @hostname@-fd1 - Address = @hostname@ - FDPort = 1@fdport@ # nothing should be on this port!!!!! - Catalog = MyCatalog - Password = "xevrjURYoCHhn26RaJoWbeWXEY/a3VqGKp/37tgWiuHc" # password for FileDaemon - File Retention = 30d # 30 days - Job Retention = 180d # six months - AutoPrune = yes # Prune expired Jobs/Files - Maximum Concurrent Jobs = 4 -} - - # Definition of DDS tape storage device Storage { Name = DDS-4 diff --git a/regress/scripts/copy-2client-confs b/regress/scripts/copy-2client-confs new file mode 100755 index 0000000000..4b674508fe --- /dev/null +++ b/regress/scripts/copy-2client-confs @@ -0,0 +1,9 @@ +#!/bin/sh +/bin/cp -f scripts/bacula-dir-2client.conf bin/bacula-dir.conf +/bin/cp -f scripts/bacula-sd-2disk-drive.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 +outf="tmp/sed_tmp" +echo "s%# Autochanger = yes% Autochanger = yes%g" >${outf} +cp bin/bacula-dir.conf tmp/1 +sed -f ${outf} tmp/1 >bin/bacula-dir.conf diff --git a/regress/scripts/do_sed b/regress/scripts/do_sed index 7a69beea57..0f2df3ab4a 100755 --- a/regress/scripts/do_sed +++ b/regress/scripts/do_sed @@ -22,6 +22,7 @@ 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-2client.conf.in >${cwd}/scripts/bacula-dir-2client.conf sed -f ${out} ${cwd}/scripts/bacula-dir-fifo.conf.in >${cwd}/scripts/bacula-dir-fifo.conf sed -f ${out} ${cwd}/scripts/bacula-dir-strip.conf.in >${cwd}/scripts/bacula-dir-strip.conf sed -f ${out} ${cwd}/scripts/bacula-dir-migration.conf.in >${cwd}/scripts/bacula-dir-migration.conf diff --git a/regress/tests/2drive-2disk b/regress/tests/2drive-2disk index d28258aa86..ae84936dbf 100755 --- a/regress/tests/2drive-2disk +++ b/regress/tests/2drive-2disk @@ -13,6 +13,8 @@ scripts/cleanup scripts/copy-2disk-drive-confs scripts/prepare-two-disks +CLIENT=2drive2disk + change_jobname localhost-fd $JobName start_test diff --git a/regress/tests/2drive-2job-test b/regress/tests/2drive-2job-test index 0b4e068423..89a8c2cb47 100755 --- a/regress/tests/2drive-2job-test +++ b/regress/tests/2drive-2job-test @@ -12,6 +12,7 @@ JobName="2drive2job" scripts/cleanup scripts/copy-2disk-drive-confs scripts/prepare-two-disks +CLIENT=2drive2disk change_jobname NightlySave $JobName start_test diff --git a/regress/tests/2drive-3pool-test b/regress/tests/2drive-3pool-test index 3cb13a578d..5bc6259f56 100755 --- a/regress/tests/2drive-3pool-test +++ b/regress/tests/2drive-3pool-test @@ -14,6 +14,7 @@ JobName="2dr3pooldisk" scripts/cleanup scripts/copy-2disk-drive-confs scripts/prepare-two-disks +CLIENT=2drive2disk echo "${cwd}/build" >${cwd}/tmp/file-list change_jobname NightlySave $JobName diff --git a/regress/tests/2drive-concurrent-test b/regress/tests/2drive-concurrent-test index e074754a6f..dfd752e6d2 100755 --- a/regress/tests/2drive-concurrent-test +++ b/regress/tests/2drive-concurrent-test @@ -12,6 +12,8 @@ JobName=Four-concurrent-jobs scripts/cleanup scripts/copy-2disk-drive-confs scripts/prepare-two-disks +CLIENT=2drive2disk + echo "${cwd}/build" >${cwd}/tmp/file-list change_jobname NightlySave $JobName diff --git a/regress/tests/2drive-incremental-2disk b/regress/tests/2drive-incremental-2disk index 684965c2c5..ef2ee7dd74 100755 --- a/regress/tests/2drive-incremental-2disk +++ b/regress/tests/2drive-incremental-2disk @@ -12,6 +12,7 @@ JobName="2drive2disk" scripts/cleanup scripts/copy-2disk-drive-confs scripts/prepare-two-disks +CLIENT=2drive2disk change_jobname localhost-fd $JobName start_test diff --git a/regress/tests/2drive-offline-test b/regress/tests/2drive-offline-test new file mode 100755 index 0000000000..3f16b9adef --- /dev/null +++ b/regress/tests/2drive-offline-test @@ -0,0 +1,81 @@ +#!/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 +# +# It tests starting job 1, which will not complete because FD is +# offline, then starting job 2, which wants to swap the volume. +# +TestName="2drive-offline" +JobName="2driveoffline" +. scripts/functions + +scripts/cleanup +scripts/copy-2disk-drive-confs +scripts/prepare-two-disks +CLIENT=2drive2disk + +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 <${cwd}/tmp/bconcmds +@output /dev/null +messages +@$out ${cwd}/tmp/log1.out +label storage=DDS-4 volume=TestVolume001 slot=2 Pool=Default drive=0 +label storage=DDS-4 volume=TestVolume002 slot=1 Pool=Default drive=1 +status storage=DDS-4 +setdebug level=120 storage=DDS-4 +run job=Offline level=Full yes +@sleep 2 +run job=$JobName level=Full yes +status storage=DDS-4 +wait +list volumes +list jobs +status storage=DDS-4 +messages +quit +END_OF_DATA + +run_bacula + +cat <${cwd}/tmp/bconcmds +@$out /dev/null +messages +@# now do a restore +@# +@$out ${cwd}/tmp/log2.out +@#unmount storage=DDS-4 drive=0 +@#unmount storage=DDS-4 drive=1 +@#mount storage=DDS-4 slot=1 drive=0 +@#mount storage=DDS-4 slot=2 drive=1 +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 diff --git a/regress/tests/2drive-swap-test b/regress/tests/2drive-swap-test index a1eb027c11..33d446543b 100755 --- a/regress/tests/2drive-swap-test +++ b/regress/tests/2drive-swap-test @@ -12,6 +12,7 @@ JobName="2drive-swap" scripts/cleanup scripts/copy-2disk-drive-confs scripts/prepare-two-disks +CLIENT=2drive2disk change_jobname NightlySave $JobName start_test diff --git a/regress/tests/three-pool-test b/regress/tests/three-pool-test index 2f72ee42b9..ba4597f376 100755 --- a/regress/tests/three-pool-test +++ b/regress/tests/three-pool-test @@ -14,6 +14,7 @@ JobName="threepooldisk" scripts/cleanup scripts/copy-2disk-drive-confs scripts/prepare-two-disks +CLIENT=2drive2disk echo "${cwd}/build" >${cwd}/tmp/file-list change_jobname NightlySave $JobName diff --git a/regress/tests/virtual-changer-test b/regress/tests/virtual-changer-test index 134447ebfa..46a50c2821 100755 --- a/regress/tests/virtual-changer-test +++ b/regress/tests/virtual-changer-test @@ -15,6 +15,8 @@ scripts/cleanup scripts/copy-2disk-drive-confs scripts/prepare-two-disks +CLIENT=2drive2disk + echo "${cwd}/build" >${cwd}/tmp/file-list #change_jobname Virtual $JobName start_test -- 2.39.5