]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix Client problem with two drive tests
authorKern Sibbald <kern@sibbald.com>
Tue, 27 May 2008 14:47:52 +0000 (14:47 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 27 May 2008 14:47:52 +0000 (14:47 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7038 91ce42f0-d328-0410-95d8-f526ca767f89

13 files changed:
regress/scripts/bacula-dir-2client.conf.in [new file with mode: 0644]
regress/scripts/bacula-dir-tape.conf.in
regress/scripts/copy-2client-confs [new file with mode: 0755]
regress/scripts/do_sed
regress/tests/2drive-2disk
regress/tests/2drive-2job-test
regress/tests/2drive-3pool-test
regress/tests/2drive-concurrent-test
regress/tests/2drive-incremental-2disk
regress/tests/2drive-offline-test [new file with mode: 0755]
regress/tests/2drive-swap-test
regress/tests/three-pool-test
regress/tests/virtual-changer-test

diff --git a/regress/scripts/bacula-dir-2client.conf.in b/regress/scripts/bacula-dir-2client.conf.in
new file mode 100644 (file)
index 0000000..05bfa5b
--- /dev/null
@@ -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
+}
index 05bfa5b38eb4644e0abcc4691cc2a01eccec950b..dd192c68a6c57e20093a096efb0b4f631369198c 100644 (file)
@@ -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 (executable)
index 0000000..4b67450
--- /dev/null
@@ -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
index 7a69beea57cf11075bd0839b22acba334160ad26..0f2df3ab4aa21b763e59c398b2117c5fb9e5f817 100755 (executable)
@@ -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
index d28258aa86fee51b2e72fa7e838554d7a7149381..ae84936dbf17c17e28c97bf98ec3cf40bbc61ace 100755 (executable)
@@ -13,6 +13,8 @@ scripts/cleanup
 scripts/copy-2disk-drive-confs
 scripts/prepare-two-disks
 
+CLIENT=2drive2disk
+
 change_jobname localhost-fd $JobName
 start_test
 
index 0b4e0684232807561b1c4c41ad636e9f2e958cbe..89a8c2cb471eb46a87a22ff76e31a65351b8a1cc 100755 (executable)
@@ -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
index 3cb13a578d04ed9e14d877b8246e8c0483f133c8..5bc6259f560d15e13eeff1ab99a783aa0f2ebe0e 100755 (executable)
@@ -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
index e074754a6faa025c6a90c498d46bcd10a4483096..dfd752e6d24df765b98a4305edc6d64ad01ae4a3 100755 (executable)
@@ -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
index 684965c2c5aba961d5ff5ac72ef29b942abcbf30..ef2ee7dd74a51013515b061a1d8ce878b0c2560a 100755 (executable)
@@ -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 (executable)
index 0000000..3f16b9a
--- /dev/null
@@ -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 <<END_OF_DATA >${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 <<END_OF_DATA >${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
index a1eb027c113b962a5d406ef8066ddb776c49e7b7..33d446543b5890dddd615249a0c267739cd7b5ff 100755 (executable)
@@ -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
index 2f72ee42b9f0aed7e2a2734cf963992c4af6bde0..ba4597f3765693fcccfc8772a97d87d6d74bc36b 100755 (executable)
@@ -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
index 134447ebfad6d01bc039ee707bb53292f2cc6d90..46a50c28219d1ecc120f973b5349651398d16eea 100755 (executable)
@@ -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