From 0f109b546155f0ef2b8f7db0b379c77e6d96c792 Mon Sep 17 00:00:00 2001 From: Andreas Rogge Date: Thu, 19 Mar 2020 19:58:48 +0100 Subject: [PATCH] systemtest: add systemtest for glusterfs backend This patch adds a copy of backup-bareos-test that will write to and read from a glusterfs filesystem. --- systemtests/CMakeLists.txt | 13 ++++ .../bareos-dir.d/catalog/MyCatalog.conf.in | 8 +++ .../bareos-dir.d/client/bareos-fd.conf.in | 7 +++ .../bareos-dir.d/console/bareos-mon.conf.in | 7 +++ .../bareos-dir.d/director/bareos-dir.conf.in | 27 +++++++++ .../bareos-dir.d/fileset/Catalog.conf.in | 11 ++++ .../bareos-dir.d/fileset/SelfTest.conf.in | 11 ++++ .../bareos-dir.d/job/BackupCatalog.conf.in | 20 +++++++ .../bareos-dir.d/job/RestoreFiles.conf.in | 11 ++++ .../bareos-dir.d/job/backup-bareos-fd.conf.in | 5 ++ .../bareos-dir.d/jobdefs/DefaultJob.conf.in | 15 +++++ .../bareos-dir.d/messages/Daemon.conf.in | 7 +++ .../bareos-dir.d/messages/Standard.conf.in | 7 +++ .../bareos-dir.d/pool/Differential.conf | 10 ++++ .../etc/bareos/bareos-dir.d/pool/Full.conf | 10 ++++ .../bareos/bareos-dir.d/pool/Incremental.conf | 10 ++++ .../etc/bareos/bareos-dir.d/pool/Scratch.conf | 4 ++ .../bareos/bareos-dir.d/profile/operator.conf | 18 ++++++ .../bareos/bareos-dir.d/storage/File.conf.in | 8 +++ .../bareos/bareos-fd.d/client/myself.conf.in | 20 +++++++ .../bareos-fd.d/director/bareos-dir.conf.in | 5 ++ .../bareos-fd.d/director/bareos-mon.conf.in | 6 ++ .../bareos/bareos-fd.d/messages/Standard.conf | 5 ++ .../bareos-sd.d/device/GlusterStorage.conf.in | 12 ++++ .../bareos-sd.d/director/bareos-dir.conf.in | 5 ++ .../bareos-sd.d/director/bareos-mon.conf.in | 6 ++ .../bareos/bareos-sd.d/messages/Standard.conf | 5 ++ .../bareos-sd.d/storage/bareos-sd.conf.in | 15 +++++ .../etc/bareos/bconsole.conf.in | 10 ++++ .../client/FileDaemon-local.conf.in | 5 ++ .../director/Director-local.conf.in | 4 ++ .../tray-monitor.d/monitor/bareos-mon.conf.in | 7 +++ .../storage/StorageDaemon-local.conf.in | 5 ++ .../tests/glusterfs-backend/testrunner | 60 +++++++++++++++++++ 34 files changed, 379 insertions(+) create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/client/bareos-fd.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/console/bareos-mon.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/director/bareos-dir.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/fileset/Catalog.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/fileset/SelfTest.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/BackupCatalog.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/RestoreFiles.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/backup-bareos-fd.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/jobdefs/DefaultJob.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/messages/Daemon.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/messages/Standard.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Differential.conf create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Full.conf create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Incremental.conf create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Scratch.conf create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/profile/operator.conf create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/storage/File.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/client/myself.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/director/bareos-dir.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/director/bareos-mon.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/messages/Standard.conf create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/device/GlusterStorage.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/director/bareos-dir.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/director/bareos-mon.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/messages/Standard.conf create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/storage/bareos-sd.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/bconsole.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/client/FileDaemon-local.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/director/Director-local.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/monitor/bareos-mon.conf.in create mode 100644 systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/storage/StorageDaemon-local.conf.in create mode 100755 systemtests/tests/glusterfs-backend/testrunner diff --git a/systemtests/CMakeLists.txt b/systemtests/CMakeLists.txt index c0170f70bf5..1011b66d4e5 100644 --- a/systemtests/CMakeLists.txt +++ b/systemtests/CMakeLists.txt @@ -451,6 +451,7 @@ if(RUN_SYSTEMTESTS_ON_INSTALLED_FILES) set(SD_PLUGINS_DIR_TO_TEST ${PLUGINS_DIR_TO_TEST}) set(DIR_PLUGINS_DIR_TO_TEST ${PLUGINS_DIR_TO_TEST}) set(BACKEND_DIR_TO_TEST ${BACKEND_DIR_TO_TEST}) + set(SD_GFAPI_DIR_TO_TEST ${BACKEND_DIR_TO_TEST}) set(WEBUI_PUBLIC_DIR_TO_TEST /usr/share/bareos-webui/public) else() # run systemtests on source and compiled files @@ -461,6 +462,9 @@ else() # run systemtests on source and compiled files get_target_property(FD_PLUGINS_DIR_TO_TEST bpipe-fd BINARY_DIR) get_target_property(SD_PLUGINS_DIR_TO_TEST autoxflate-sd BINARY_DIR) + if(TARGET bareossd-gfapi) + get_target_property(SD_GFAPI_DIR_TO_TEST bareossd-gfapi BINARY_DIR) + endif() if(TARGET python-dir) get_target_property(DIR_PLUGINS_DIR_TO_TEST python-dir BINARY_DIR) else() @@ -630,6 +634,15 @@ set(SYSTEM_TESTS set(SYSTEM_TESTS_DISABLED # initially empty ) +set(glusterfs_uri "" CACHE STRING "URI for GlusterFS backend test") +mark_as_advanced(glusterfs_uri) + +if(SD_GFAPI_DIR_TO_TEST AND glusterfs_uri) + list(APPEND SYSTEM_TESTS glusterfs-backend) +else() + list(APPEND SYSTEM_TESTS_DISABLED glusterfs-backend) +endif() + if(mysql AND postgresql AND dynamic-cats-backends) list(APPEND SYSTEM_TESTS "dbcopy-mysql-postgresql-test") else() diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf.in new file mode 100644 index 00000000000..479bc6fecbb --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/catalog/MyCatalog.conf.in @@ -0,0 +1,8 @@ +Catalog { + Name = MyCatalog + #dbdriver = "@DEFAULT_DB_TYPE@" + dbdriver = "XXX_REPLACE_WITH_DATABASE_DRIVER_XXX" + dbname = "@db_name@" + dbuser = "@db_user@" + dbpassword = "@db_password@" +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/client/bareos-fd.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/client/bareos-fd.conf.in new file mode 100644 index 00000000000..470ca702035 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/client/bareos-fd.conf.in @@ -0,0 +1,7 @@ +Client { + Name = bareos-fd + Description = "Client resource of the Director itself." + Address = localhost + Password = "@fd_password@" # password for FileDaemon + FD PORT = @fd_port@ +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/console/bareos-mon.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/console/bareos-mon.conf.in new file mode 100644 index 00000000000..d276adcb87d --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/console/bareos-mon.conf.in @@ -0,0 +1,7 @@ +Console { + Name = bareos-mon + Description = "Restricted console used by tray-monitor to get the status of the director." + Password = "@mon_dir_password@" + CommandACL = status, .status + JobACL = *all* +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/director/bareos-dir.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/director/bareos-dir.conf.in new file mode 100644 index 00000000000..33b3a426e3a --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/director/bareos-dir.conf.in @@ -0,0 +1,27 @@ +Director { # define myself + Name = bareos-dir + QueryFile = "@scriptdir@/query.sql" + Maximum Concurrent Jobs = 10 + Password = "@dir_password@" # Console password + Messages = Daemon + Auditing = yes + + # Enable the Heartbeat if you experience connection losses + # (eg. because of your router or firewall configuration). + # Additionally the Heartbeat can be enabled in bareos-sd and bareos-fd. + # + # Heartbeat Interval = 1 min + + # remove comment in next line to load dynamic backends from specified directory + Backend Directory = @backenddir@ + + # remove comment from "Plugin Directory" to load plugins from specified directory. + # if "Plugin Names" is defined, only the specified plugins will be loaded, + # otherwise all director plugins (*-dir.so) from the "Plugin Directory". + # + # Plugin Directory = "@python_plugin_module_src_dir@" + # Plugin Names = "" + Working Directory = "@working_dir@" + Pid Directory = "@piddir@" + DirPort = @dir_port@ +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/fileset/Catalog.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/fileset/Catalog.conf.in new file mode 100644 index 00000000000..c7cdc433fe1 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/fileset/Catalog.conf.in @@ -0,0 +1,11 @@ +FileSet { + Name = "Catalog" + Description = "Backup the catalog dump and Bareos configuration files." + Include { + Options { + signature = MD5 + } + File = "@working_dir@/@db_name@.sql" # database dump + File = "@confdir@" # configuration + } +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/fileset/SelfTest.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/fileset/SelfTest.conf.in new file mode 100644 index 00000000000..ba39719ea3f --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/fileset/SelfTest.conf.in @@ -0,0 +1,11 @@ +FileSet { + Name = "SelfTest" + Description = "fileset just to backup some files for selftest" + Include { + Options { + Signature = MD5 # calculate md5 checksum per file + } + #File = "@sbindir@" + File=<@tmpdir@/file-list + } +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/BackupCatalog.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/BackupCatalog.conf.in new file mode 100644 index 00000000000..1da2a7af657 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/BackupCatalog.conf.in @@ -0,0 +1,20 @@ +Job { + Name = "BackupCatalog" + Description = "Backup the catalog database (after the nightly save)" + JobDefs = "DefaultJob" + Level = Full + FileSet="Catalog" + + # This creates an ASCII copy of the catalog + # Arguments to make_catalog_backup.pl are: + # make_catalog_backup.pl + RunBeforeJob = "@scriptdir@/make_catalog_backup.pl MyCatalog" + + # This deletes the copy of the catalog + RunAfterJob = "@scriptdir@/delete_catalog_backup" + + # This sends the bootstrap via mail for disaster recovery. + # Should be sent to another system, please change recipient accordingly + Write Bootstrap = "|@bindir@/bsmtp -h @smtp_host@ -f \"\(Bareos\) \" -s \"Bootstrap for Job %j\" @job_email@" # (#01) + Priority = 11 # run after main backup +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/RestoreFiles.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/RestoreFiles.conf.in new file mode 100644 index 00000000000..a2d1f1c0ab8 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/RestoreFiles.conf.in @@ -0,0 +1,11 @@ +Job { + Name = "RestoreFiles" + Description = "Standard Restore template. Only one such job is needed for all standard Jobs/Clients/Storage ..." + Type = Restore + Client = bareos-fd + FileSet = SelfTest + Storage = Gluster + Pool = Incremental + Messages = Standard + Where = @tmp@/bareos-restores +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/backup-bareos-fd.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/backup-bareos-fd.conf.in new file mode 100644 index 00000000000..ca1891f9620 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/job/backup-bareos-fd.conf.in @@ -0,0 +1,5 @@ +Job { + Name = "backup-bareos-fd" + JobDefs = "DefaultJob" + Client = "bareos-fd" +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/jobdefs/DefaultJob.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/jobdefs/DefaultJob.conf.in new file mode 100644 index 00000000000..0cfe38d14c5 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/jobdefs/DefaultJob.conf.in @@ -0,0 +1,15 @@ +JobDefs { + Name = "DefaultJob" + Type = Backup + Level = Incremental + Client = bareos-fd + FileSet = "SelfTest" + Storage = Gluster + Messages = Standard + Pool = Incremental + Priority = 10 + Write Bootstrap = "@working_dir@/%c.bsr" + Full Backup Pool = Full # write Full Backups into "Full" Pool + Differential Backup Pool = Differential # write Diff Backups into "Differential" Pool + Incremental Backup Pool = Incremental # write Incr Backups into "Incremental" Pool +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/messages/Daemon.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/messages/Daemon.conf.in new file mode 100644 index 00000000000..cf6a8cfa1e2 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/messages/Daemon.conf.in @@ -0,0 +1,7 @@ +Messages { + Name = Daemon + Description = "Message delivery for daemon messages (no job)." + console = all, !skipped, !saved, !audit + append = "@logdir@/bareos.log" = all, !skipped, !audit + append = "@logdir@/bareos-audit.log" = audit +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/messages/Standard.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/messages/Standard.conf.in new file mode 100644 index 00000000000..b3556ba8c23 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/messages/Standard.conf.in @@ -0,0 +1,7 @@ +Messages { + Name = Standard + Description = "Reasonable message delivery -- send most everything to email address and to the console." + console = all, !skipped, !saved, !audit + append = "@logdir@/bareos.log" = all, !skipped, !saved, !audit + catalog = all, !skipped, !saved, !audit +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Differential.conf b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Differential.conf new file mode 100644 index 00000000000..25ce24821ab --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Differential.conf @@ -0,0 +1,10 @@ +Pool { + Name = Differential + Pool Type = Backup + Recycle = yes # Bareos can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 90 days # How long should the Differential Backups be kept? (#09) + Maximum Volume Bytes = 10G # Limit Volume size to something reasonable + Maximum Volumes = 100 # Limit number of Volumes in Pool + Label Format = "Differential-" # Volumes will be labeled "Differential-" +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Full.conf b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Full.conf new file mode 100644 index 00000000000..867fc66b483 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Full.conf @@ -0,0 +1,10 @@ +Pool { + Name = Full + Pool Type = Backup + Recycle = yes # Bareos can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 365 days # How long should the Full Backups be kept? (#06) + Maximum Volume Bytes = 50G # Limit Volume size to something reasonable + Maximum Volumes = 100 # Limit number of Volumes in Pool + Label Format = "Full-" # Volumes will be labeled "Full-" +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Incremental.conf b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Incremental.conf new file mode 100644 index 00000000000..f4dbbab6650 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Incremental.conf @@ -0,0 +1,10 @@ +Pool { + Name = Incremental + Pool Type = Backup + Recycle = yes # Bareos can automatically recycle Volumes + AutoPrune = yes # Prune expired volumes + Volume Retention = 30 days # How long should the Incremental Backups be kept? (#12) + Maximum Volume Bytes = 1G # Limit Volume size to something reasonable + Maximum Volumes = 100 # Limit number of Volumes in Pool + Label Format = "Incremental-" # Volumes will be labeled "Incremental-" +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Scratch.conf b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Scratch.conf new file mode 100644 index 00000000000..3a489b19871 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/pool/Scratch.conf @@ -0,0 +1,4 @@ +Pool { + Name = Scratch + Pool Type = Scratch +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/profile/operator.conf b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/profile/operator.conf new file mode 100644 index 00000000000..6edd0166dca --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/profile/operator.conf @@ -0,0 +1,18 @@ +Profile { + Name = operator + Description = "Profile allowing normal Bareos operations." + + Command ACL = !.bvfs_clear_cache, !.exit, !.sql + Command ACL = !configure, !create, !delete, !purge, !prune, !sqlquery, !umount, !unmount + Command ACL = *all* + + Catalog ACL = *all* + Client ACL = *all* + FileSet ACL = *all* + Job ACL = *all* + Plugin Options ACL = *all* + Pool ACL = *all* + Schedule ACL = *all* + Storage ACL = *all* + Where ACL = *all* +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/storage/File.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/storage/File.conf.in new file mode 100644 index 00000000000..3259ba80c89 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-dir.d/storage/File.conf.in @@ -0,0 +1,8 @@ +Storage { + Name = Gluster + Address = @hostname@ # N.B. Use a fully qualified name here (do not use "localhost" here). + Password = "@sd_password@" + Device = GlusterStorage + Media Type = GlusterFile + SD Port = @sd_port@ +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/client/myself.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/client/myself.conf.in new file mode 100644 index 00000000000..e218bf06514 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/client/myself.conf.in @@ -0,0 +1,20 @@ +Client { + Name = @basename@-fd + Maximum Concurrent Jobs = 20 + + # remove comment from "Plugin Directory" to load plugins from specified directory. + # if "Plugin Names" is defined, only the specified plugins will be loaded, + # otherwise all filedaemon plugins (*-fd.so) from the "Plugin Directory". + # + # Plugin Directory = "@python_plugin_module_src_fd@" + # Plugin Names = "" + + # if compatible is set to yes, we are compatible with bacula + # if set to no, new bareos features are enabled which is the default + # compatible = yes + + Working Directory = "@working_dir@" + Pid Directory = "@piddir@" + FD Port = @fd_port@ + +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/director/bareos-dir.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/director/bareos-dir.conf.in new file mode 100644 index 00000000000..c8dc7085a45 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/director/bareos-dir.conf.in @@ -0,0 +1,5 @@ +Director { + Name = bareos-dir + Password = "@fd_password@" + Description = "Allow the configured Director to access this file daemon." +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/director/bareos-mon.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/director/bareos-mon.conf.in new file mode 100644 index 00000000000..630c3a9abd3 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/director/bareos-mon.conf.in @@ -0,0 +1,6 @@ +Director { + Name = bareos-mon + Password = "@mon_fd_password@" + Monitor = yes + Description = "Restricted Director, used by tray-monitor to get the status of this file daemon." +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/messages/Standard.conf b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/messages/Standard.conf new file mode 100644 index 00000000000..97788e00573 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-fd.d/messages/Standard.conf @@ -0,0 +1,5 @@ +Messages { + Name = Standard + Director = bareos-dir = all, !skipped, !restored + Description = "Send relevant messages to the Director." +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/device/GlusterStorage.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/device/GlusterStorage.conf.in new file mode 100644 index 00000000000..d1c20bf4f5a --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/device/GlusterStorage.conf.in @@ -0,0 +1,12 @@ +Device { + Name = GlusterStorage + Archive Device = "Gluster Device" + Device Options = "uri=@glusterfs_uri@,loglevel=asdf,logfile=/tmp/test.out" + Device Type = gfapi + Media Type = GlusterFile + Label Media = yes + Random Access = yes + Automatic Mount = yes + Removable Media = no + Always Open = no +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/director/bareos-dir.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/director/bareos-dir.conf.in new file mode 100644 index 00000000000..deef3360c2d --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/director/bareos-dir.conf.in @@ -0,0 +1,5 @@ +Director { + Name = bareos-dir + Password = "@sd_password@" + Description = "Director, who is permitted to contact this storage daemon." +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/director/bareos-mon.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/director/bareos-mon.conf.in new file mode 100644 index 00000000000..e3cfdee6315 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/director/bareos-mon.conf.in @@ -0,0 +1,6 @@ +Director { + Name = bareos-mon + Password = "@mon_sd_password@" + Monitor = yes + Description = "Restricted Director, used by tray-monitor to get the status of this storage daemon." +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/messages/Standard.conf b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/messages/Standard.conf new file mode 100644 index 00000000000..468348e62fc --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/messages/Standard.conf @@ -0,0 +1,5 @@ +Messages { + Name = Standard + Director = bareos-dir = all + Description = "Send all messages to the Director." +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/storage/bareos-sd.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/storage/bareos-sd.conf.in new file mode 100644 index 00000000000..24b48f03939 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bareos-sd.d/storage/bareos-sd.conf.in @@ -0,0 +1,15 @@ +Storage { + Name = bareos-sd + Maximum Concurrent Jobs = 20 + + # remove comment from "Plugin Directory" to load plugins from specified directory. + # if "Plugin Names" is defined, only the specified plugins will be loaded, + # otherwise all storage plugins (*-sd.so) from the "Plugin Directory". + # + # Plugin Directory = "@python_plugin_module_src_sd@" + # Plugin Names = "" + Working Directory = "@working_dir@" + Backend Directory = "@SD_GFAPI_DIR_TO_TEST@" + Pid Directory = "@piddir@" + SD Port = @sd_port@ +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/bconsole.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/bconsole.conf.in new file mode 100644 index 00000000000..ecb6ad00dce --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/bconsole.conf.in @@ -0,0 +1,10 @@ +# +# Bareos User Agent (or Console) Configuration File +# + +Director { + Name = @basename@-dir + DIRport = @dir_port@ + address = @hostname@ + Password = "@dir_password@" +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/client/FileDaemon-local.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/client/FileDaemon-local.conf.in new file mode 100644 index 00000000000..dd00dd9f103 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/client/FileDaemon-local.conf.in @@ -0,0 +1,5 @@ +Client { + Name = @basename@-fd + Address = localhost + Password = "@mon_fd_password@" # password for FileDaemon +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/director/Director-local.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/director/Director-local.conf.in new file mode 100644 index 00000000000..55dae492250 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/director/Director-local.conf.in @@ -0,0 +1,4 @@ +Director { + Name = bareos-dir + Address = localhost +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/monitor/bareos-mon.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/monitor/bareos-mon.conf.in new file mode 100644 index 00000000000..cddfa253945 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/monitor/bareos-mon.conf.in @@ -0,0 +1,7 @@ +Monitor { + # Name to establish connections to Director Console, Storage Daemon and File Daemon. + Name = bareos-mon + # Password to access the Director + Password = "@mon_dir_password@" # password for the Directors + RefreshInterval = 30 seconds +} diff --git a/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/storage/StorageDaemon-local.conf.in b/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/storage/StorageDaemon-local.conf.in new file mode 100644 index 00000000000..6538f4fd248 --- /dev/null +++ b/systemtests/tests/glusterfs-backend/etc/bareos/tray-monitor.d/storage/StorageDaemon-local.conf.in @@ -0,0 +1,5 @@ +Storage { + Name = bareos-sd + Address = localhost + Password = "@mon_sd_password@" # password for StorageDaemon +} diff --git a/systemtests/tests/glusterfs-backend/testrunner b/systemtests/tests/glusterfs-backend/testrunner new file mode 100755 index 00000000000..03921b43daa --- /dev/null +++ b/systemtests/tests/glusterfs-backend/testrunner @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Run a simple backup +# then restore it. +# +TestName="$(basename "$(pwd)")" +export TestName + +JobName=backup-bareos-fd + +#shellcheck source=../environment.in +. ./environment + +#shellcheck source=../scripts/functions +. "${rscripts}"/functions +"${rscripts}"/cleanup +"${rscripts}"/setup + + +# Directory to backup. +# This directory will be created by setup_data "$@"(). +BackupDirectory="${tmp}/data" + +# Use a tgz to setup data to be backed up. +# Data will be placed at "${tmp}/data/". +setup_data "$@" + +start_test + +cat <$tmp/bconcmds +@$out /dev/null +messages +@$out $tmp/log1.out +setdebug level=100 storage=File +label volume=TestVolume001 storage=File pool=Full +run job=$JobName yes +status director +status client +status storage=File +wait +messages +@# +@# now do a restore +@# +@$out $tmp/log2.out +wait +restore client=bareos-fd fileset=SelfTest where=$tmp/bareos-restores select all done +yes +wait +messages +quit +END_OF_DATA + +run_bareos "$@" +check_for_zombie_jobs storage=File +stop_bareos + +check_two_logs +check_restore_diff ${BackupDirectory} +end_test