From 4b1ab3794f9335b9e1752b3b9d941175e78491a4 Mon Sep 17 00:00:00 2001 From: Kern Sibbald Date: Sat, 3 May 2008 09:06:38 +0000 Subject: [PATCH] Enhanced error detection of disk-changer and new 2drive-swap-test git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/branches/Branch-2.2@6883 91ce42f0-d328-0410-95d8-f526ca767f89 --- regress/DartTestfile.txt.in | 2 + regress/all-non-root-tests | 2 + regress/scripts/bacula-dir-strip.conf.in | 232 +++++++++++++++++++++++ regress/scripts/copy-strip-confs | 11 ++ regress/scripts/do_sed | 1 + regress/tests/2drive-swap-test | 77 ++++++++ regress/tests/strip-test | 59 ++++++ 7 files changed, 384 insertions(+) create mode 100644 regress/scripts/bacula-dir-strip.conf.in create mode 100755 regress/scripts/copy-strip-confs create mode 100755 regress/tests/2drive-swap-test create mode 100755 regress/tests/strip-test diff --git a/regress/DartTestfile.txt.in b/regress/DartTestfile.txt.in index 9d0691576f..5b0e20222a 100644 --- a/regress/DartTestfile.txt.in +++ b/regress/DartTestfile.txt.in @@ -35,6 +35,7 @@ ADD_TEST(disk:six-vol-test "@regressdir@/tests/six-vol-test") ADD_TEST(disk:span-vol-test "@regressdir@/tests/span-vol-test") ADD_TEST(disk:sparse-compressed-test "@regressdir@/tests/sparse-compressed-test") ADD_TEST(disk:sparse-test "@regressdir@/tests/sparse-test") +ADD_TEST(disk:strip-test "@regressdir@/tests/strip-test") ADD_TEST(disk:three-pool-test "@regressdir@/tests/three-pool-test") ADD_TEST(disk:tls-test "@regressdir@/tests/tls-test") ADD_TEST(disk:two-jobs-test "@regressdir@/tests/two-jobs-test") @@ -47,6 +48,7 @@ ADD_TEST(disk:virtual-changer-test "@regressdir@/tests/virtual-changer-test") ADD_TEST(disk:weird-files2-test "@regressdir@/tests/weird-files2-test") ADD_TEST(disk:weird-files-test "@regressdir@/tests/weird-files-test") ADD_TEST(disk:2drive-3pool-test "@regressdir@/tests/2drive-3pool-test") +ADD_TEST(disk:2drive-swap-test "@regressdir@/tests/2drive-swap-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(changer:incremental-2tape "@regressdir@/tests/incremental-2tape") diff --git a/regress/all-non-root-tests b/regress/all-non-root-tests index 2f88050a64..1dea0d4ea0 100755 --- a/regress/all-non-root-tests +++ b/regress/all-non-root-tests @@ -41,6 +41,7 @@ nice tests/maxvol-test nice tests/maxvol2-test nice tests/sparse-compressed-test nice tests/sparse-test +nice tests/strip-test nice tests/two-jobs-test nice tests/two-vol-test nice tests/verify-cat-test @@ -73,5 +74,6 @@ nice tests/2drive-concurrent-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 diff --git a/regress/scripts/bacula-dir-strip.conf.in b/regress/scripts/bacula-dir-strip.conf.in new file mode 100644 index 0000000000..d4f1cbfc5b --- /dev/null +++ b/regress/scripts/bacula-dir-strip.conf.in @@ -0,0 +1,232 @@ +# +# 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 +} + +# +# 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 = FileStorage + 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 = FileStorage + 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 120" +} + +Job { + Name = "NightlySave2" + Type = Backup + Client=@hostname@-fd + FileSet="Full Set" + Storage = FileStorage + 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 = FileStorage + 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 = FileStorage + Messages = Standard + Pool = Default + Where = @tmpdir@/bacula-restores +} + + +# List of files to be backed up +FileSet { + Name = "Full Set" + Include { Options { + strippath = 1 + compression = gzip + } + File = <@tmpdir@/file-list + } + Include { + File = /etc + } +} + +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 +} + +# Definition of DDS tape storage device +Storage { + Name = FileStorage + 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 = File # must be same as MediaType in Storage daemon + Maximum Concurrent Jobs = 4 +# Autochanger = yes +} + + +# Generic catalog service +Catalog { + Name = MyCatalog + 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 +} diff --git a/regress/scripts/copy-strip-confs b/regress/scripts/copy-strip-confs new file mode 100755 index 0000000000..71a0674538 --- /dev/null +++ b/regress/scripts/copy-strip-confs @@ -0,0 +1,11 @@ +#!/bin/sh +/bin/cp -f scripts/bacula-dir-strip.conf bin/bacula-dir.conf +/bin/cp -f scripts/test-bacula-sd.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 + +# get proper SD tape definitions +cp -f scripts/linux_tape_options bin/tape_options +if test x`uname` = xFreeBSD ; then + cp -f scripts/freebsd_tape_options bin/tape_options +fi diff --git a/regress/scripts/do_sed b/regress/scripts/do_sed index a11901ae61..902f989af4 100755 --- a/regress/scripts/do_sed +++ b/regress/scripts/do_sed @@ -22,6 +22,7 @@ sed -f ${out} ${cwd}/scripts/test-console.conf.in >${cwd}/scripts/test-console.c 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-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 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 diff --git a/regress/tests/2drive-swap-test b/regress/tests/2drive-swap-test new file mode 100755 index 0000000000..a1eb027c11 --- /dev/null +++ b/regress/tests/2drive-swap-test @@ -0,0 +1,77 @@ +#!/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 <${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 <${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 diff --git a/regress/tests/strip-test b/regress/tests/strip-test new file mode 100755 index 0000000000..68a3d68931 --- /dev/null +++ b/regress/tests/strip-test @@ -0,0 +1,59 @@ +#!/bin/sh +# +# Attempt to strip the path +# +TestName="strip-test" +JobName=stripTest +. scripts/functions + +scripts/cleanup +scripts/copy-strip-confs + + +echo "${cwd}/build/src/dird" >${cwd}/tmp/file-list + +change_jobname NightlySave $JobName +start_test + +cat <${cwd}/tmp/bconcmds +@$out /dev/null +messages +@$out ${cwd}/tmp/log1.out +@#setdebug level=150 dir +@#setdebug level=150 storage=FileStorage +setdebug level=100 client +label storage=FileStorage pool=Default volume=TestVolume001 +run job=$JobName storage=FileStorage pool=Default yes +wait +messages +quit +END_OF_DATA + + +run_bacula + +cat <${cwd}/tmp/bconcmds +@$out /dev/null +messages +@# +@# now do a restore +@# +@$out ${cwd}/tmp/log2.out +@#setdebug level=50 client +restore where=${cwd}/tmp/bacula-restores select all storage=FileStorage done +yes +wait +messages +@$out +quit +END_OF_DATA + +run_bconsole + +check_for_zombie_jobs storage=FileStorage +stop_bacula + +check_two_logs +# check_restore_diff does not work because we cannot read all /etc, so skip it +dstat=0 +end_test -- 2.39.5