s3:tests: Add a test to check the output of smbstatus.
authorJule Anger <janger@samba.org>
Mon, 7 Mar 2022 09:13:33 +0000 (10:13 +0100)
committerJule Anger <janger@samba.org>
Mon, 7 Mar 2022 14:35:36 +0000 (14:35 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14999

Signed-off-by: Jule Anger <janger@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
selftest/knownfail.d/smbstatus [new file with mode: 0644]
source3/script/tests/test_smbstatus.sh

diff --git a/selftest/knownfail.d/smbstatus b/selftest/knownfail.d/smbstatus
new file mode 100644 (file)
index 0000000..50ea1c9
--- /dev/null
@@ -0,0 +1 @@
+samba3.blackbox.smbstatus.test_output\(fileserver:local\)
index b29ba15c377b6974196a88195b8dd2385972e819..20846f6d4ed84fe6c34f2d39a3c9413265a68560 100755 (executable)
@@ -144,6 +144,100 @@ EOF
     return 0
 }
 
+test_smbstatus_output()
+{
+    local cmdfile=$PREFIX/smbclient_commands
+    local tmpfile=$PREFIX/smbclient_lock_file
+    local file=smbclient_lock_file
+    local status_shares=smbstatus_output_shares
+    local status_processes=smbstatus_output_processes
+    local status_locks=smbstatus_output_locks
+
+    cat > $tmpfile <<EOF
+Hello World!
+EOF
+    cat > $cmdfile <<EOF
+lcd $PREFIX_ABS
+put $file
+open $file
+!UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $SMBSTATUS --shares > $status_shares
+!UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $SMBSTATUS --processes > $status_processes
+!UID_WRAPPER_INITIAL_RUID=0 UID_WRAPPER_INITIAL_EUID=0 $SMBSTATUS --locks > $status_locks
+close 1
+rm $file
+quit
+EOF
+
+
+    cmd="CLI_FORCE_INTERACTIVE=yes $SMBCLIENT -U$USERNAME%$PASSWORD //$SERVER/tmp -I $SERVER_IP $ADDARGS --quiet < $cmdfile 2>&1"
+    eval echo "$cmd"
+    out=$(eval $cmd)
+    ret=$?
+
+    rm -f $cmpfile
+    rm -f $tmpfile
+
+    if [ $ret -ne 0 ] ; then
+       echo "Failed to run smbclient with error $ret"
+       echo "$out"
+       return 1
+    fi
+
+    out=$(cat $PREFIX/$status_processes)
+    echo "$out" | grep -c 'PID *Username'
+    ret=$?
+    if [ $ret -eq 1 ] ; then
+       echo "Failed: Could not start smbstatus"
+       echo "$out"
+       return 1
+    fi
+    echo "$out" | grep -c "$USERNAME"
+    ret=$?
+    if [ $ret -eq 1 ] ; then
+       echo "Failed: open connection not found"
+       echo "$out"
+       return 1
+    fi
+
+    out=$(cat $PREFIX/$status_shares)
+    echo "$out" | grep -c 'Service *pid'
+    ret=$?
+    if [ $ret -eq 1 ] ; then
+       echo "Failed: Could not start smbstatus"
+       echo "$out"
+       return 1
+    fi
+    echo "$out" | grep -c "tmp"
+    ret=$?
+    if [ $ret -eq 1 ] ; then
+       echo "Failed: shares not found"
+       echo "$out"
+       return 1
+    fi
+
+    out=$(cat $PREFIX/$status_locks)
+    echo "$out" | grep -c "Locked files:"
+    ret=$?
+    if [ $ret -eq 1 ] ; then
+       echo "Failed: locked file not found"
+       echo "$out"
+       return 1
+    fi
+    echo "$out" | grep -c "$file"
+    ret=$?
+    if [ $ret -eq 1 ] ; then
+       echo "Failed: wrong file locked"
+       echo "$out"
+       return 1
+    fi
+
+    rm $PREFIX/$status_shares
+    rm $PREFIX/$status_processes
+    rm $PREFIX/$status_locks
+
+    return 0
+}
+
 testit "plain" \
     test_smbstatus || \
     failed=`expr $failed + 1`
@@ -152,4 +246,8 @@ testit "resolve_uids" \
     test_smbstatus || \
     failed=`expr $failed + 1`
 
+testit "test_output" \
+    test_smbstatus_output || \
+    failed=`expr $failed + 1`
+
 testok $0 $failed