From: Kern Sibbald Date: Mon, 17 Nov 2008 13:08:18 +0000 (+0000) Subject: Add Graham Keeling's test X-Git-Tag: Release-3.0.0~576 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=5b602b13299d007935534119357bb39a5d998cc3;p=bacula%2Fbacula Add Graham Keeling's test git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@8049 91ce42f0-d328-0410-95d8-f526ca767f89 --- diff --git a/regress/scripts/broken-media-bug-bacula-dir.conf.in b/regress/scripts/broken-media-bug-bacula-dir.conf.in new file mode 100644 index 0000000000..e86e83c5b9 --- /dev/null +++ b/regress/scripts/broken-media-bug-bacula-dir.conf.in @@ -0,0 +1,134 @@ +# Configuration for the director for testing for the broken media bug. +# Test written by Graham Keeling + +Director { # define myself + Name = @hostname@-dir + DIRPort = @dirport@ # where we listen for UA connections + QueryFile = "@scriptdir@/query.sql" + WorkingDirectory = "@working_dir@" + PidDirectory = "@piddir@" + SubSysDirectory = "@subsysdir@" + PluginDirectory = "@sbindir@" + Maximum Concurrent Jobs = 4 + Password = "pNvX1WiXnwv2C/F7E52LGvw6rKjbbPvu2kyuPa9pVaL3" # Console password + Messages = Standard +} + +Job { + Name = "First" + Type = Backup + Client=@hostname@-fd + FileSet="Set1" + Storage = File + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 +} + +Job { + Name = "Second" + Type = Backup + Client=@hostname@-fd + FileSet="Set2" + Storage = File + Messages = Standard + Pool = Default + Write Bootstrap = "@working_dir@/NightlySave.bsr" + Maximum Concurrent Jobs = 4 +} + +# Standard Restore template, to be changed by Console program +Job { + Name = "RestoreFiles" + Type = Restore + Client=@hostname@-fd + FileSet="Set1" + Storage = File + Messages = Standard + Pool = Default + Where = @tmpdir@/bacula-restores +} + + +# List of files to be backed up +FileSet { + Name = "Set1" + Include { + Options { signature=MD5; } + File = <@tmpdir@/file-list + } +} + +FileSet { + Name = "Set2" + Include { + Options { signature=MD5; } + File = <@tmpdir@/file-list + } +} + + +# 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 +} + +# Definiton of file storage device +Storage { + Name = File + Address = @hostname@ # N.B. Use a fully qualified name here + SDPort = @sdport@ + Password = "ccV3lVTsQRsdIUGyab0N4sMDavui2hOBkmpBU0aQKOr9" + Device = FileStorage + Media Type = File + Maximum Concurrent Jobs = 4 +} + +# Generic catalog service +Catalog { + Name = MyCatalog + + dbname = @db_name@; user = @db_user@; password = "@db_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 \"Regression: %t %e of %c %l\" %r" + operatorcommand = "@sbindir@/bsmtp -h localhost -f \"\(Bacula regression\) % +r\" -s \"Regression: Intervention needed for %j\" %r" +# MailOnError = @job_email@ = all +# 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 + catalog = 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 + Maximum Volume Jobs = 1 + Label Format = TestVolume + Maximum Volumes = 0 +} diff --git a/regress/scripts/do_sed b/regress/scripts/do_sed index bdc5d4a6db..4e3a82d394 100755 --- a/regress/scripts/do_sed +++ b/regress/scripts/do_sed @@ -39,6 +39,7 @@ sed -f ${out} ${cwd}/scripts/bacula-sd-virtual.conf.in >${cwd}/scripts/bacula-sd 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/broken-media-bug-bacula-dir.conf.in >${cwd}/scripts/broken-media-bug-bacula-dir.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/tests/broken-media-bug-test b/regress/tests/broken-media-bug-test new file mode 100644 index 0000000000..9e5cbe7638 --- /dev/null +++ b/regress/tests/broken-media-bug-test @@ -0,0 +1,74 @@ +#!/bin/sh +# +# Show the broken media bug. Test by Graham Keeling. +# +# For the moment this test will always fail, so do not add +# it to the standard test set. +# The problem: +# - You begin writing a giant job onto a Volume +# - There are no other volumes available for writing (big mistake). +# - You start a second job that needs a Volume to write on. +# - The second job see that there are no JobMedia records associated with the +# Volume (not yet written), so it purges the Volume. +# - A sort of chaos then follows. +# + +TestName="broken-media-bug-test" +. scripts/functions + +cwd=`pwd` +scripts/cleanup +/bin/cp -f scripts/broken-media-bug-bacula-dir.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 +hugefile=${cwd}/build/hugefile +hugefilesize=300 +echo "${cwd}/build" >${cwd}/tmp/file-list + +start_test + +echo "Creating huge ${hugefilesize}M file..." +dd if=/dev/urandom of="$hugefile" bs=1M count="$hugefilesize" +echo "Done" + +cat >tmp/bconcmds <tmp/bconcmds <