Test for reloading smb.conf after SIGHUP. Needs to be run as root.
authorTim Potter <tpot@samba.org>
Mon, 24 Jul 2000 06:18:21 +0000 (06:18 +0000)
committerTim Potter <tpot@samba.org>
Mon, 24 Jul 2000 06:18:21 +0000 (06:18 +0000)
testsuite/smbd/sighup.exp [new file with mode: 0644]

diff --git a/testsuite/smbd/sighup.exp b/testsuite/smbd/sighup.exp
new file mode 100644 (file)
index 0000000..a9e1bff
--- /dev/null
@@ -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