]> git.sur5r.net Git - bacula/bacula/commitdiff
Update
authorKern Sibbald <kern@sibbald.com>
Tue, 14 Feb 2006 13:57:02 +0000 (13:57 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 14 Feb 2006 13:57:02 +0000 (13:57 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@2783 91ce42f0-d328-0410-95d8-f526ca767f89

17 files changed:
regress/all-non-root-tests
regress/scripts/.cvsignore
regress/scripts/bacula-dir-win32-tape.conf.in [new file with mode: 0644]
regress/scripts/bacula-sd-2disk-drive.conf [new file with mode: 0644]
regress/scripts/bacula-sd-2disk-drive.conf.in [new file with mode: 0644]
regress/scripts/bacula-sd-2disk.conf [new file with mode: 0644]
regress/scripts/bacula-sd-2disk.conf.in [new file with mode: 0644]
regress/scripts/copy-2disk-confs [new file with mode: 0755]
regress/scripts/copy-2disk-drive-confs [new file with mode: 0755]
regress/scripts/do_sed
regress/scripts/prepare-two-disks [new file with mode: 0755]
regress/tests/2drive-incremental-2disk [new file with mode: 0755]
regress/tests/backup-win32-tape [new file with mode: 0755]
regress/tests/incremental-2disk [new file with mode: 0755]
regress/tests/two-pool-test [new file with mode: 0755]
regress/tests/two-volume-test [new file with mode: 0755]
regress/tests/weird-files-test

index be1bf010458c9ae90a5ebe7e016ad15439451e38..26122a5b743786a310009e1cc2bc498d2ac5373c 100755 (executable)
@@ -29,6 +29,12 @@ tests/two-vol-test
 tests/verify-vol-test
 tests/weird-files2-test
 tests/weird-files-test
+# 
+# The following are Virtual Disk Autochanger tests
+tests/two-pool-test
+tests/two-volume-disk
+tests/incremental-2disk
+tests/2drive-incremental-2disk
 echo " "
 echo "Test results"
 cat test.out
index 1b7289039811cf8d59a9d6a031e9b8771a179955..640b3a16415048b4ac4394641a73d8b37a335f83 100644 (file)
@@ -1,3 +1,4 @@
+crypto-bacula-fd.conf
 new-test-bacula-dir.conf
 bacula-dir.conf
 bacula-fd.conf
diff --git a/regress/scripts/bacula-dir-win32-tape.conf.in b/regress/scripts/bacula-dir-win32-tape.conf.in
new file mode 100644 (file)
index 0000000..919edc4
--- /dev/null
@@ -0,0 +1,145 @@
+#
+# 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 = 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=Tibs
+  FileSet="Full Set"
+  Storage = DDS-4
+  Messages = Standard
+  Pool = Default
+  Write Bootstrap = "@working_dir@/NightlySave.bsr"
+  Maximum Concurrent Jobs = 4
+  SpoolData = yes
+}
+
+
+# Standard Restore template, to be changed by Console program
+Job {
+  Name = "RestoreFiles"
+  Type = Restore
+  Client=Tibs
+  FileSet="Full Set"
+  Storage = DDS-4
+  Messages = Standard
+  Pool = Default
+  Where = /tmp/bacula-restores
+}
+
+
+# List of files to be backed up
+FileSet {
+  Name = "Full Set"
+  Enable VSS = yes
+  Include { Options { signature=MD5 }
+    File =  "c:"
+  }
+}
+
+
+#
+# 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 = Tibs
+  Address = tibs
+  FDPort = 9102
+  Catalog = MyCatalog
+  Password = "xBzFq+a9llZyGyfMaNO9e3outP86/1AUAT8P34RoT62G"
+  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 = 192.168.68.112            # N.B. Use a fully qualified name here
+  SDPort = 8103
+  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
+  AutoChanger = yes
+  Maximum Concurrent Jobs = 4
+}
+
+
+# Generic catalog service
+Catalog {
+  Name = MyCatalog
+  dbname = bacula; user = bacula; 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\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
+  operatorcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula Regression\) %r\" -s \"Bacula: 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\) %r\" -s \"Bacula 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
+  Accept Any Volume = yes             # write on any volume in the pool
+}
diff --git a/regress/scripts/bacula-sd-2disk-drive.conf b/regress/scripts/bacula-sd-2disk-drive.conf
new file mode 100644 (file)
index 0000000..1d56020
--- /dev/null
@@ -0,0 +1,75 @@
+#
+# Default Bacula Storage Daemon Configuration file
+#
+#  For Bacula release 1.39
+#
+# You may need to change the name of your tape drive
+#   on the "Archive Device" directive in the Device
+#   resource.  If you change the Name and/or the 
+#   "Media Type" in the Device resource, please ensure
+#   that dird.conf has corresponding changes.
+#
+
+Storage {                             # definition of myself
+  Name = localhost-sd
+  SDPort = 8103                  # Director's port      
+  WorkingDirectory = "/home/kern/bacula/regress/working"
+  Pid Directory = "/home/kern/bacula/regress/working"
+  Subsys Directory = "/home/kern/bacula/regress/working"
+}
+
+#
+# List Directors who are permitted to contact Storage daemon
+#
+Director {
+  Name = localhost-dir
+  Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9"
+}
+
+#
+# Devices supported by this Storage daemon
+# To connect, the Director's bacula-dir.conf must have the
+#  same Name and MediaType. 
+#
+Autochanger {
+  Name = DDS-4
+  Changer Device = /home/kern/bacula/regress/tmp/disk-changer/conf
+  Changer Command ="/home/kern/bacula/regress/bin/disk-changer %c %o %S %a %d"
+  Device = Drive-0, Drive-1
+}
+
+Device {
+  Name = Drive-0
+  Device Type = File
+  Media Type = DDS-4
+  Archive Device = /home/kern/bacula/regress/tmp/disk-changer/drive0
+  AutomaticMount = yes;               # when device opened, read it
+  Autochanger = yes
+  Drive Index = 0
+  AlwaysOpen = yes;
+  RemovableMedia = yes;
+# Maximum File Size = 1000000
+}
+
+Device {
+  Name = Drive-1
+  Device Type = File
+  Media Type = DDS-4
+  Archive Device = /home/kern/bacula/regress/tmp/disk-changer/drive1
+  AutomaticMount = yes;               # when device opened, read it
+  Autochanger = yes
+  Drive Index = 1
+  AlwaysOpen = yes;
+  RemovableMedia = yes;
+# Maximum File Size = 1000000
+}
+
+
+# 
+# Send all messages to the Director, 
+# mount messages also are sent to the email address
+#
+Messages {
+  Name = Standard
+  director = localhost-dir = all, !terminate
+}
diff --git a/regress/scripts/bacula-sd-2disk-drive.conf.in b/regress/scripts/bacula-sd-2disk-drive.conf.in
new file mode 100644 (file)
index 0000000..6f6acce
--- /dev/null
@@ -0,0 +1,75 @@
+#
+# Default Bacula Storage Daemon Configuration file
+#
+#  For Bacula release 1.39
+#
+# You may need to change the name of your tape drive
+#   on the "Archive Device" directive in the Device
+#   resource.  If you change the Name and/or the 
+#   "Media Type" in the Device resource, please ensure
+#   that dird.conf has corresponding changes.
+#
+
+Storage {                             # definition of myself
+  Name = @hostname@-sd
+  SDPort = 8103                  # Director's port      
+  WorkingDirectory = "@working_dir@"
+  Pid Directory = "@piddir@"
+  Subsys Directory = "@subsysdir@"
+}
+
+#
+# List Directors who are permitted to contact Storage daemon
+#
+Director {
+  Name = @hostname@-dir
+  Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9"
+}
+
+#
+# Devices supported by this Storage daemon
+# To connect, the Director's bacula-dir.conf must have the
+#  same Name and MediaType. 
+#
+Autochanger {
+  Name = DDS-4
+  Changer Device = @disk_drive@/conf
+  Changer Command ="@scriptdir@/disk-changer %c %o %S %a %d"
+  Device = Drive-0, Drive-1
+}
+
+Device {
+  Name = Drive-0
+  Device Type = File
+  Media Type = DDS-4
+  Archive Device = @disk_drive@/drive0
+  AutomaticMount = yes;               # when device opened, read it
+  Autochanger = yes
+  Drive Index = 0
+  AlwaysOpen = yes;
+  RemovableMedia = yes;
+# Maximum File Size = 1000000
+}
+
+Device {
+  Name = Drive-1
+  Device Type = File
+  Media Type = DDS-4
+  Archive Device = @disk_drive@/drive1
+  AutomaticMount = yes;               # when device opened, read it
+  Autochanger = yes
+  Drive Index = 1
+  AlwaysOpen = yes;
+  RemovableMedia = yes;
+# Maximum File Size = 1000000
+}
+
+
+# 
+# Send all messages to the Director, 
+# mount messages also are sent to the email address
+#
+Messages {
+  Name = Standard
+  director = @hostname@-dir = all, !terminate
+}
diff --git a/regress/scripts/bacula-sd-2disk.conf b/regress/scripts/bacula-sd-2disk.conf
new file mode 100644 (file)
index 0000000..154d3d3
--- /dev/null
@@ -0,0 +1,61 @@
+#
+# Default Bacula Storage Daemon Configuration file
+#
+#  For Bacula release 1.39
+#
+# You may need to change the name of your tape drive
+#   on the "Archive Device" directive in the Device
+#   resource.  If you change the Name and/or the 
+#   "Media Type" in the Device resource, please ensure
+#   that dird.conf has corresponding changes.
+#
+
+Storage {                             # definition of myself
+  Name = localhost-sd
+  SDPort = 8103                  # Director's port      
+  WorkingDirectory = "/home/kern/bacula/regress/working"
+  Pid Directory = "/home/kern/bacula/regress/working"
+  Subsys Directory = "/home/kern/bacula/regress/working"
+}
+
+#
+# List Directors who are permitted to contact Storage daemon
+#
+Director {
+  Name = localhost-dir
+  Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9"
+}
+
+#
+# Devices supported by this Storage daemon
+# To connect, the Director's bacula-dir.conf must have the
+#  same Name and MediaType. 
+#
+Autochanger {
+  Name = DDS-4
+  Changer Device = /home/kern/bacula/regress/tmp/disk-changer/conf
+  Changer Command ="/home/kern/bacula/regress/bin/disk-changer %c %o %S %a %d"
+  Device = Drive-0
+}
+
+Device {
+  Name = Drive-0                   # 
+  Device Type = File
+  Media Type = DDS-4
+  Archive Device = /home/kern/bacula/regress/tmp/disk-changer/drive0
+  AutomaticMount = yes;               # when device opened, read it
+  Autochanger = yes
+  Drive Index = 0
+  AlwaysOpen = yes;
+  RemovableMedia = yes;
+# Maximum File Size = 1000000
+}
+
+# 
+# Send all messages to the Director, 
+# mount messages also are sent to the email address
+#
+Messages {
+  Name = Standard
+  director = localhost-dir = all, !terminate
+}
diff --git a/regress/scripts/bacula-sd-2disk.conf.in b/regress/scripts/bacula-sd-2disk.conf.in
new file mode 100644 (file)
index 0000000..313dfe4
--- /dev/null
@@ -0,0 +1,61 @@
+#
+# Default Bacula Storage Daemon Configuration file
+#
+#  For Bacula release 1.39
+#
+# You may need to change the name of your tape drive
+#   on the "Archive Device" directive in the Device
+#   resource.  If you change the Name and/or the 
+#   "Media Type" in the Device resource, please ensure
+#   that dird.conf has corresponding changes.
+#
+
+Storage {                             # definition of myself
+  Name = @hostname@-sd
+  SDPort = 8103                  # Director's port      
+  WorkingDirectory = "@working_dir@"
+  Pid Directory = "@piddir@"
+  Subsys Directory = "@subsysdir@"
+}
+
+#
+# List Directors who are permitted to contact Storage daemon
+#
+Director {
+  Name = @hostname@-dir
+  Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9"
+}
+
+#
+# Devices supported by this Storage daemon
+# To connect, the Director's bacula-dir.conf must have the
+#  same Name and MediaType. 
+#
+Autochanger {
+  Name = DDS-4
+  Changer Device = @disk_drive@/conf
+  Changer Command ="@scriptdir@/disk-changer %c %o %S %a %d"
+  Device = Drive-0
+}
+
+Device {
+  Name = Drive-0                   # 
+  Device Type = File
+  Media Type = DDS-4
+  Archive Device = @disk_drive@/drive0
+  AutomaticMount = yes;               # when device opened, read it
+  Autochanger = yes
+  Drive Index = 0
+  AlwaysOpen = yes;
+  RemovableMedia = yes;
+# Maximum File Size = 1000000
+}
+
+# 
+# Send all messages to the Director, 
+# mount messages also are sent to the email address
+#
+Messages {
+  Name = Standard
+  director = @hostname@-dir = all, !terminate
+}
diff --git a/regress/scripts/copy-2disk-confs b/regress/scripts/copy-2disk-confs
new file mode 100755 (executable)
index 0000000..40f1860
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+/bin/cp -f scripts/bacula-dir-tape.conf bin/bacula-dir.conf
+/bin/cp -f scripts/bacula-sd-2disk.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/copy-2disk-drive-confs b/regress/scripts/copy-2disk-drive-confs
new file mode 100755 (executable)
index 0000000..7a5dcd3
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+/bin/cp -f scripts/bacula-dir-tape.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 ddcc0388c56648730ab78be973709590d6fe2b2f..8357611c507075f7d263cdb57e75519c68477a24 100755 (executable)
@@ -9,9 +9,9 @@ if test $# != 6 ; then
    echo "  and the sixth must be the smtp or email host"
    exit 1
 fi
+cwd=`pwd`
 mkdir -p ${cwd}/bin
 out="/tmp/sed_tmp"
-cwd=`pwd`
 HOST="localhost"
 # Create sed command script
 echo "s%@sbindir@%${cwd}/bin%g" >${out}
@@ -27,6 +27,7 @@ echo "s%@hostname@%${HOST}%g" >>${out}
 echo "s%@changer_path@%${4}%g" >>${out}
 echo "s%@tape_drive1@%${5}%g" >>${out}
 echo "s%@smtp_host@%${6}%g" >>${out}
+echo "s%@disk_drive@%${cwd}/tmp/disk-changer%g" >>${out}
 
 echo "AUTOCHANGER=\"${3}\"" >config.out
 echo "TAPE_DRIVE1=\"${5}\"" >>config.out
@@ -44,7 +45,9 @@ sed -f ${out} ${cwd}/scripts/bacula-dir-tape.conf.in >${cwd}/scripts/bacula-dir-
 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-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
 sed -f ${out} ${cwd}/scripts/cleanup-tape.in >${cwd}/scripts/cleanup-tape
 sed -f ${out} ${cwd}/scripts/cleanup-2tape.in >${cwd}/scripts/cleanup-2tape
 sed -f ${out} ${cwd}/scripts/cleanup-2drive.in >${cwd}/scripts/cleanup-2drive
diff --git a/regress/scripts/prepare-two-disks b/regress/scripts/prepare-two-disks
new file mode 100755 (executable)
index 0000000..d7d97bd
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Create two blank tapes
+#
+rm -rf tmp/disk-changer
+mkdir tmp/disk-changer
diff --git a/regress/tests/2drive-incremental-2disk b/regress/tests/2drive-incremental-2disk
new file mode 100755 (executable)
index 0000000..b61bcd9
--- /dev/null
@@ -0,0 +1,135 @@
+#!/bin/sh
+#
+# Run a simple backup of the Bacula build directory then create some           
+#   new files, do an Incremental and restore those two files.
+#
+# This script uses the virtual disk autochanger and two drives
+#
+. config.out
+debug=0
+if test "$debug" -eq 1 ; then
+  out="tee"
+else
+  out="output"
+fi
+cwd=`pwd`
+bin/bacula stop  2>&1 >/dev/null
+cd bin
+./drop_bacula_tables >/dev/null 2>&1
+./make_bacula_tables >/dev/null 2>&1
+./grant_bacula_privileges 2>&1 >/dev/null
+cd ..
+
+scripts/copy-2disk-drive-confs
+scripts/prepare-two-disks
+echo "${cwd}/tmp/build" >/tmp/file-list
+if test ! -d ${cwd}/tmp/build ; then
+   mkdir ${cwd}/tmp/build
+fi
+cp -p ${cwd}/build/src/dird/*.c ${cwd}/tmp/build
+cd ${cwd}/tmp
+echo "${cwd}/tmp/build/ficheriro1.txt" >restore-list
+echo "${cwd}/tmp/build/ficheriro2.txt" >>restore-list
+cd ${cwd}
+
+# Turn off Prefer Mounted Volumes so we use 2 drives
+outf="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
+
+echo " "
+echo " "
+echo " === Starting 2drive-incremental-2disk test ==="
+echo " === Starting 2drive-incremental-2disk test ===" >>working/log
+echo " "
+
+# Write out bconsole commands
+cat <<END_OF_DATA >tmp/bconcmds
+@output /dev/null
+messages
+@$out 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
+@#setdebug level=100 storage=DDS-4
+run job=NightlySave yes
+run job=NightlySave yes
+run job=NightlySave yes
+run job=NightlySave yes
+run job=NightlySave yes
+@sleep 3
+status storage=DDS-4
+wait
+list volumes
+list jobs
+status storage=DDS-4
+messages
+quit
+END_OF_DATA
+
+if test "$debug" -eq 1 ; then
+  bin/bacula start
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf
+else
+  bin/bacula start 2>&1 >/dev/null
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf  2>&1 >/dev/null
+fi
+echo "ficheriro1.txt" >${cwd}/tmp/build/ficheriro1.txt
+echo "ficheriro2.txt" >${cwd}/tmp/build/ficheriro2.txt
+
+cat <<END_OF_DATA >tmp/bconcmds
+@$out /dev/null
+messages
+@$out tmp/log1.out
+@# Force Incremental on the second Volume
+update volume=TestVolume001 VolStatus=Used
+status storage=DDS-4
+@#setdebug level=400 storage=DDS-4
+run level=Incremental job=NightlySave yes
+wait
+list volumes
+status storage=DDS-4
+messages
+@# 
+@# now do a restore
+@#
+@$out tmp/log2.out
+restore where=${cwd}/tmp/bacula-restores 
+7
+<${cwd}/tmp/restore-list
+
+yes
+wait
+messages
+@$out
+quit
+END_OF_DATA
+if test "$debug" -eq 1 ; then
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf
+else
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf  2>&1 >/dev/null
+fi
+
+bin/bacula stop 2>&1 >/dev/null
+grep "^  Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null
+bstat=$?
+grep "^  Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null
+rstat=$?
+#
+# Delete .c files because we will only restored the txt files
+#
+rm -f tmp/build/*.c
+diff -r tmp/build tmp/bacula-restores${cwd}/tmp/build 2>&1 >/dev/null
+if [ $? != 0 -o $bstat != 0 -o $rstat != 0 ] ; then
+   echo " "
+   echo " "
+   echo "  !!!!! 2drive-incremental-2disk test Bacula source failed!!! !!!!! "
+   echo "  !!!!! 2drive-incremental-2disk test failed!!! !!!!! " >>test.out
+   echo " "
+else
+   echo "  ===== 2drive-incremental-2disk test Bacula source OK ===== "
+   echo "  ===== 2drive-incremental-2disk test OK ===== " >>test.out
+   scripts/cleanup
+fi
diff --git a/regress/tests/backup-win32-tape b/regress/tests/backup-win32-tape
new file mode 100755 (executable)
index 0000000..3723b53
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# Run a simple backup of the Bacula build directory 
+#   to a tape then restore it, we do that twice to ensure that
+#   we can correctly append to a tape.
+#
+cwd=`pwd`
+scripts/copy-win32-confs
+scripts/cleanup-tape
+
+echo "${cwd}/build" >/tmp/file-list
+
+echo " "
+echo " "
+echo " === Starting Backup Win32 tape test at `date +%R:%S` ==="
+echo " === Starting Backup Win32 tape test at `date +%R:%S` ===" >>working/log
+echo " "
+
+bin/bacula start 2>&1 >/dev/null
+bin/bconsole -c bin/bconsole.conf <<END_OF_DATA
+@output /dev/null
+messages
+@tee tmp/log1.out
+label storage=DDS-4 volume=TestVolume001 slot=0 pool=Default
+run job=NightlySave yes
+@sleep 10
+status storage=DDS-4
+@sleep 30
+messages
+wait
+messages
+@# 
+@# now do a restore
+@#
+@#output tmp/log2.out
+@#restore where=${cwd}/tmp/bacula-restores select all storage=DDS-4 done
+@#yes
+@#wait
+@#messages
+END_OF_DATA
+scripts/check_for_zombie_jobs storage=DDS-4
+
+bin/bacula stop 2>&1 >/dev/null
+grep "^  Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null
+bstat=$?
+if [ $bstat != 0 ] ; then
+   echo " "
+   echo " "
+   echo "  !!!!! Backup Win32 tape test failed!!! !!!!! "
+   echo "  !!!!! Backup Win32 tape test failed!!! !!!!! " >>test.out
+   echo " "
+else
+   echo "  ===== Backup Win32 tape test OK ===== "
+   echo "  ===== Backup Win32 tape test OK ===== " >>test.out
+   scripts/cleanup
+fi
diff --git a/regress/tests/incremental-2disk b/regress/tests/incremental-2disk
new file mode 100755 (executable)
index 0000000..c888635
--- /dev/null
@@ -0,0 +1,111 @@
+#!/bin/sh
+#
+# Run a simple backup of the Bacula build directory then create some           
+#   new files, do an Incremental and restore those two files.
+#
+# This script uses the virtual disk autochanger
+#
+. config.out
+if test x${AUTOCHANGER} = x/dev/null ; then
+   echo "incremental-2disk test skipped. No autochanger."
+   exit
+fi
+debug=0
+if test "$debug" -eq 1 ; then
+  out="tee"
+else
+  out="output"
+fi
+cwd=`pwd`
+bin/bacula stop  2>&1 >/dev/null
+cd bin
+./drop_bacula_tables >/dev/null 2>&1
+./make_bacula_tables >/dev/null 2>&1
+./grant_bacula_privileges 2>&1 >/dev/null
+cd ..
+
+scripts/copy-2disk-confs
+scripts/prepare-two-disks
+
+echo "${cwd}/tmp/build" >/tmp/file-list
+if test ! -d ${cwd}/tmp/build ; then
+   mkdir ${cwd}/tmp/build
+fi
+cp -p ${cwd}/build/src/dird/*.c ${cwd}/tmp/build
+cd ${cwd}/tmp
+echo "${cwd}/tmp/build/ficheriro1.txt" >restore-list
+echo "${cwd}/tmp/build/ficheriro2.txt" >>restore-list
+cd ${cwd}
+
+echo " "
+echo " "
+echo " === Starting incremental-2disk test ==="
+echo " === Starting incremental-2disk test ===" >>working/log
+echo " "
+
+# Write out bconsole commands
+cat <<END_OF_DATA >tmp/bconcmds
+@$out /dev/null
+messages
+@$out 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=0
+run job=NightlySave yes
+wait
+messages
+quit
+END_OF_DATA
+
+if test "$debug" -eq 1 ; then
+  bin/bacula start
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf
+else
+  bin/bacula start 2>&1 >/dev/null
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf  2>&1 >/dev/null
+fi
+echo "ficheriro1.txt" >${cwd}/tmp/build/ficheriro1.txt
+echo "ficheriro2.txt" >${cwd}/tmp/build/ficheriro2.txt
+bin/bconsole -c bin/bconsole.conf <<END_OF_DATA
+@$out /dev/null
+messages
+@$out tmp/log1.out
+@# Force Incremental on the second Volume
+update volume=TestVolume001 VolStatus=Used
+run level=Incremental job=NightlySave yes
+wait
+messages
+@# 
+@# now do a restore
+@#
+@$out tmp/log2.out
+restore where=${cwd}/tmp/bacula-restores 
+7
+<${cwd}/tmp/restore-list
+
+yes
+wait
+messages
+@$out
+quit
+END_OF_DATA
+bin/bacula stop 2>&1 >/dev/null
+grep "^  Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null
+bstat=$?
+grep "^  Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null
+rstat=$?
+#
+# Delete .c files because we will only restored the txt files
+#
+rm -f tmp/build/*.c
+diff -r tmp/build tmp/bacula-restores${cwd}/tmp/build 2>&1 >/dev/null
+if [ $? != 0 -o $bstat != 0 -o $rstat != 0 ] ; then
+   echo " "
+   echo " "
+   echo "  !!!!! incremental-2disk test Bacula source failed!!! !!!!! "
+   echo "  !!!!! incremental-2disk test failed!!! !!!!! " >>test.out
+   echo " "
+else
+   echo "  ===== incremental-2disk test Bacula source OK ===== "
+   echo "  ===== incremental-2disk test OK ===== " >>test.out
+   scripts/cleanup
+fi
diff --git a/regress/tests/two-pool-test b/regress/tests/two-pool-test
new file mode 100755 (executable)
index 0000000..9686b42
--- /dev/null
@@ -0,0 +1,106 @@
+#!/bin/sh
+#
+# This is Arno's test.  It uses two pools, two tapes, and
+#  an autochanger. Note, the Director has three Pools in its 
+#  conf:  Default, Full, and Inc.  Default is used in the
+#  NightlySave job by default.  What is backed up is what
+#  is in /tmp/file-list, which is by default the Bacula
+#  source code (i.e. the build directory).
+#
+#  Note, we use the virtual disk autochanger.
+#
+. config.out
+if test x${AUTOCHANGER} = x/dev/null ; then
+   echo "two-pool-test skipped. No autochanger."
+   exit
+fi
+debug=0
+if test "$debug" -eq 1 ; then
+  out="tee"
+else
+  out="output"
+fi
+cwd=`pwd`
+scripts/cleanup
+scripts/copy-2disk-confs
+scripts/prepare-two-disks
+# Make a relatively large backup set 5 x source code directory
+#  Reduced to 1 for portable
+echo "${cwd}/build" >/tmp/file-list
+
+echo " "
+echo " "
+echo " === Starting Two Pool Test at `date +%R:%S` ==="
+echo " === Starting Two Pool Test at `date +%R:%S` ===" >>working/log
+echo " "
+# Write out bconsole commands to a file
+cat <<END_OF_DATA >tmp/bconcmds
+@output /dev/null
+messages
+@$out tmp/log1.out
+label storage=DDS-4 volume=TestVolume001 slot=1 pool=Full drive=0
+label storage=DDS-4 volume=TestVolume002 slot=2 pool=Default drive=0
+list volumes
+@# Start job with Client run before and sleep
+run job=NightlySave1 level=Full pool=Default yes
+run job=NightlySave1 level=Full pool=Default yes
+run job=NightlySave1 level=Full pool=Default yes
+@# wait between starting jobs
+@sleep 60
+@#setdebug level=100 storage=DDS-4
+run job=NightlySave2 level=Full pool=Full yes
+run job=NightlySave2 level=Full pool=Full yes
+run job=NightlySave2 level=Full pool=Full yes
+@sleep 10
+messages
+@sleep 10
+messages
+@sleep 10
+status storage=DDS-4
+messages
+wait
+list volumes
+messages
+@# 
+@# now do a restore
+@#
+@$out tmp/log2.out
+restore where=${cwd}/tmp/bacula-restores select all storage=DDS-4 done
+yes
+wait
+messages
+@$out
+quit
+END_OF_DATA
+
+# start Bacula and run bconsole commands
+if test "$debug" -eq 1 ; then
+  bin/bacula start
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf
+else
+  bin/bacula start 2>&1 >/dev/null
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf  2>&1 >/dev/null
+fi
+# Make sure no jobs are still running (debug check)
+scripts/check_for_zombie_jobs storage=DDS-4
+
+# stop Bacula
+bin/bacula stop 2>&1 >/dev/null
+# Check if backup done correctly
+grep "^  Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null
+bstat=$?
+grep "^  Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null
+rstat=$?
+diff -r build tmp/bacula-restores${cwd}/build 2>&1 >/dev/null
+if [ $? != 0 -o $bstat != 0 -o $rstat != 0 ] ; then
+   echo " "
+   echo " "
+   echo "  !!!!! Two Pool Test Bacula source failed!!! !!!!! "
+   echo "  !!!!! Two Pool Test failed!!! !!!!! " >>test.out
+   echo " "
+else
+   echo "  ===== Two Pool Test Bacula source OK ===== "
+   echo "  ===== Two Pool Test OK ===== " >>test.out
+#  scripts/cleanup
+fi
diff --git a/regress/tests/two-volume-test b/regress/tests/two-volume-test
new file mode 100755 (executable)
index 0000000..dd75665
--- /dev/null
@@ -0,0 +1,87 @@
+#!/bin/sh
+#
+# Run a simple backup of the Bacula build directory 
+#  to two tapes where the maximum tape file size is set to 1M
+#  Note, this test simulates the tape filling and writing to
+#   the next tape.
+#
+#  Note we used the viritual disk autochanger
+#
+. config.out
+if test x${AUTOCHANGER} = x/dev/null ; then
+   echo "two-volume-test skipped. No autochanger."
+   exit
+fi
+debug=0
+if test "$debug" -eq 1 ; then
+  out="tee"
+else
+  out="output"
+fi
+cwd=`pwd`
+scripts/cleanup
+scripts/copy-2disk-confs
+scripts/prepare-two-disks
+echo "${cwd}/build" >/tmp/file-list
+
+outf="tmp/sed_tmp"
+echo "s%# Maximum File Size%  Maximum File Size%g" >${outf}
+cp ${cwd}/bin/bacula-sd.conf ${cwd}/tmp/1
+sed -f ${outf} ${cwd}/tmp/1 >${cwd}/bin/bacula-sd.conf
+
+echo " "
+echo " "
+echo " === Starting Two Volume Test at `date +%R:%S` ==="
+echo " === Starting Two Volume Test at `date +%R:%S` ===" >>working/log
+echo " "
+# Write out bconsole commands
+cat <<END_OF_DATA >tmp/bconcmds
+@$out /dev/null
+messages
+@$out 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=0
+update Volume=TestVolume001 MaxVolBytes=3000000 pool=Default drive=0
+@#setdebug level=1000 client 
+run job=NightlySave yes
+wait
+messages
+@# 
+@# now do a restore
+@#
+@$out tmp/log2.out
+restore where=${cwd}/tmp/bacula-restores select all storage=DDS-4 done
+yes
+wait
+messages
+@$out
+quit
+END_OF_DATA
+
+if test "$debug" -eq 1 ; then
+  bin/bacula start
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf
+else
+  bin/bacula start 2>&1 >/dev/null
+  cat tmp/bconcmds | bin/bconsole -c bin/bconsole.conf  2>&1 >/dev/null
+fi
+scripts/check_for_zombie_jobs storage=DDS-4
+
+bin/bacula stop 2>&1 >/dev/null
+grep "^  Termination: *Backup OK" tmp/log1.out 2>&1 >/dev/null
+bstat=$?
+grep "^  Termination: *Restore OK" tmp/log2.out 2>&1 >/dev/null
+rstat=$?
+diff -r build tmp/bacula-restores${cwd}/build 2>&1 >/dev/null
+if [ $? != 0 -o $bstat != 0 -o $rstat != 0 ] ; then
+   echo " "
+   echo " "
+   echo "  !!!!! Two Volume Test Bacula source failed!!! !!!!! "
+   echo "  !!!!! Two Volume Test failed!!! !!!!! " >>test.out
+   echo " "
+else
+   echo "  ===== Two Volume Test Bacula source OK ===== "
+   echo "  ===== Two Volume Test OK ===== " >>test.out
+#  scripts/cleanup
+fi
index c8d10aea70306d0fa66e4f66178dabc5095b98bf..5c1f44793e54761ef7bc122674a51cfe819ff558 100755 (executable)
@@ -3,7 +3,7 @@
 # Run a simple backup of the Bacula build directory
 #   then restore it.
 #
-debug=0
+debug=0 
 if test "$debug" -eq 1 ; then
   out="tee"
 else