diff options
Diffstat (limited to 'testsuite/smbd/sighup.exp')
-rw-r--r-- | testsuite/smbd/sighup.exp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/testsuite/smbd/sighup.exp b/testsuite/smbd/sighup.exp new file mode 100644 index 0000000..a9e1bff --- /dev/null +++ b/testsuite/smbd/sighup.exp @@ -0,0 +1,107 @@ +# +# @(#) Check services file reloaded after SIGHUP +# + +load_lib "util-defs.exp" + +# Create a smb.conf file from a list of sections. Each section consists of +# a name and a list of lines which are the contents of that section. +# Returns a temporary filename which must be deleted after use. + +proc write_smb_conf { args } { + + # Set up temporary file + + set name "/tmp/smb.conf-test-[pid]" + set f [open $name "w"] + + # Parse sections + + foreach section [lindex $args 0] { + set secname [lindex $section 0] + set contents [lindex $section 1] + + puts $f "\[$secname]" + + foreach { line } $contents { + puts $f "\t$line" + } + + puts $f "" + } + + close $f + + # Return filename of smb.conf file + + return $name +} + +proc append_smb_conf { args } { + + set name [lindex $args 0] + set f [open $name "a"] + + foreach section [lindex $args 1] { + set secname [lindex $section 0] + set contents [lindex $section 1] + + puts $f "\[$secname]" + + foreach { line } $contents { + puts $f "\t$line" + } + + puts $f "" + } + + close $f +} + +# Create a smb.conf file + +set smb_conf [list \ + [list "global" \ + [list "netbios name = testing" \ + "guest ok = true"]]] + +set name [write_smb_conf $smb_conf] + +# Run smbd and smbclient output + +set smbd_output [util_start "bin/smbd" "-s $name"] +set nmbd_output [util_start "bin/nmbd" "-s $name"] + +sleep 5 + +set smbclient_output [util_start "bin/smbclient -L //testing -N"] +verbose $smbclient_output + +if { ![regexp "Anonymous login successful" $smbclient_output] } { + untested "smbd could not be started" + util_start "killall" "smbd nmbd" + file delete $name + return +} + +# Append another share and sighup + +append_smb_conf $name [list [list "tmp" [list "browseable = true"]]] +set output [util_start "killall" "-HUP smbd"] +verbose $output + +sleep 2 + +set smbclient_output2 [util_start "bin/smbclient -L //testing -N"] +verbose $smbclient_output2 + +if { [regexp "tmp.*Disk" $smbclient_output2] } { + pass "sighup reload" +} else { + fail "sighup reload" +} + +# Clean up + +util_start "killall" "smbd nmbd" +file delete $name |