Skip to content

Commit

Permalink
systemtests: test bconsole crash on status client
Browse files Browse the repository at this point in the history
When connecting to an older version without TLS-PSK support or when
passwords mismatch during the "status client" command the director
closes the connection to bconsole leading to an apparent "crash" in
bconsole (i.e. console exists without error).

This systemtest checks whether this problem has been fixed.
  • Loading branch information
arogge committed Jul 17, 2019
1 parent c0ec3f5 commit 21712ae
Show file tree
Hide file tree
Showing 32 changed files with 334 additions and 0 deletions.
1 change: 1 addition & 0 deletions systemtests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ set(SYSTEM_TESTS
backup-bscan
copy-bscan
copy-remote-bscan
bconsole-status-client
)

IF(PAM_WRAPPER_LIBRARIES) # BareosFindLibrary(pam_wrapper)
Expand Down
Original file line number Diff line number Diff line change
@@ -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@"
}
Original file line number Diff line number Diff line change
@@ -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@
}
Original file line number Diff line number Diff line change
@@ -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*
}
Original file line number Diff line number Diff line change
@@ -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 = "@plugindir@"
# Plugin Names = ""
Working Directory = "@working_dir@"
Pid Directory = "@piddir@"
DirPort = @dir_port@
}
Original file line number Diff line number Diff line change
@@ -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
}
}
Original file line number Diff line number Diff line change
@@ -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
}
}
Original file line number Diff line number Diff line change
@@ -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 <catalog-name>
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
}
Original file line number Diff line number Diff line change
@@ -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 = File
Pool = Incremental
Messages = Standard
Where = @tmp@/bareos-restores
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Job {
Name = "backup-bareos-fd"
JobDefs = "DefaultJob"
Client = "bareos-fd"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
JobDefs {
Name = "DefaultJob"
Type = Backup
Level = Incremental
Client = bareos-fd
FileSet = "SelfTest"
Storage = File
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
}
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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-<volume-id>"
}
Original file line number Diff line number Diff line change
@@ -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-<volume-id>"
}
Original file line number Diff line number Diff line change
@@ -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-<volume-id>"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Pool {
Name = Scratch
Pool Type = Scratch
}
Original file line number Diff line number Diff line change
@@ -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*
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Storage {
Name = File
Address = @hostname@ # N.B. Use a fully qualified name here (do not use "localhost" here).
Password = "@sd_password@"
Device = FileStorage
Media Type = File
SD Port = @sd_port@
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
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 = "@plugindir@"
# 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@
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Director {
Name = bareos-dir
Password = "@fd_password@xx" # Intentionally broken
Description = "Allow the configured Director to access this file daemon."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Messages {
Name = Standard
Director = bareos-dir = all, !skipped, !restored
Description = "Send relevant messages to the Director."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Device {
Name = FileStorage
Media Type = File
Archive Device = @archivedir@
LabelMedia = yes; # lets Bareos label unlabeled media
Random Access = yes;
AutomaticMount = yes; # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
Description = "File device. A connecting Director must have the same Name and MediaType."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Director {
Name = bareos-dir
Password = "@sd_password@"
Description = "Director, who is permitted to contact this storage daemon."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Messages {
Name = Standard
Director = bareos-dir = all
Description = "Send all messages to the Director."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
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 = "@plugindir@"
# Plugin Names = ""
Working Directory = "@working_dir@"
Pid Directory = "@piddir@"
SD Port = @sd_port@
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#
# Bareos User Agent (or Console) Configuration File
#

Director {
Name = @basename@-dir
DIRport = @dir_port@
address = @hostname@
Password = "@dir_password@"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Client {
Name = @basename@-fd
Address = localhost
Password = "@mon_fd_password@" # password for FileDaemon
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Director {
Name = bareos-dir
Address = localhost
}
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Storage {
Name = bareos-sd
Address = localhost
Password = "@mon_sd_password@" # password for StorageDaemon
}
42 changes: 42 additions & 0 deletions systemtests/tests/bconsole-status-client/testrunner
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/sh
#
# Run a simple backup
# then restore it.
#
TestName="$(basename "$(pwd)")"
export TestName

JobName=bconsole-status-client
. ./environment
. "${scripts}/functions"

"${scripts}/cleanup"
"${scripts}/setup"


# Directory to backup.
# This directory will be created by setup_data().
BackupDirectory="${tmp}/data"

start_test
rm -f "$tmp/log2.out"

cat <<END_OF_DATA >$tmp/bconcmds
@$out /dev/null
messages
@$out $tmp/log1.out
status client=bareos-fd
@$out $tmp/log2.out
messages
quit
END_OF_DATA

run_bareos
stop_bareos

# if log2.out has not been written, bconsole crashed or disconnected
# after status client command
test -f "$tmp/log2.out" || exit 2

end_test

0 comments on commit 21712ae

Please sign in to comment.