]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: tests: Add a new test test_msdfs_hardlink() that does simple hardlinks on MSDFS...
authorJeremy Allison <jra@samba.org>
Thu, 3 Feb 2022 21:58:28 +0000 (13:58 -0800)
committerJule Anger <janger@samba.org>
Wed, 9 Feb 2022 10:23:19 +0000 (10:23 +0000)
We pass this already as the cmd_hardlink in smbclient doesn't
do the DFS path conversion on the hardlink target. But it's
good to have the test.

Note we need to add the new test to "selftest/knownfail.d/smb1-tests"
as test_smbclient_s3.sh is run against the (ad_member|nt4_member)
environments first using NT1 (SMB1) protocol and then using SMB3,
but the (ad_member|nt4_member) environments don't support SMB1.
Seems a bit strange to me, but all the other SMB1 tests inside
test_smbclient_s3.sh have already been added to "selftest/knownfail.d/smb1-tests"
so just go with the test environment.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14169

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Noel Power <npower@samba.org>
(cherry picked from commit d7deb876053ef45313026b4dea9ee1b376153611)

selftest/knownfail.d/smb1-tests
source3/script/tests/test_smbclient_s3.sh

index 5d7ac923da8592d2733fb2ef9fa581a0314f72e2..689febd43b5e88ad600f4f1082a0e1aba84cd5b3 100644 (file)
@@ -29,6 +29,7 @@
 ^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.volume\((ad_member|nt4_member)\)
 ^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.delete a non empty directory\((ad_member|nt4_member)\)
 ^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.Recursive ls across MS-DFS links\((ad_member|nt4_member)\)
+^samba3.blackbox.smbclient_s3.NT1.(plain|sign).member_creds.Hardlink on MS-DFS share\((ad_member|nt4_member)\)
 ^samba3.blackbox.smbclient_s3.*valid.users.nt4.*
 ^samba3.blackbox.smbclient_s3.NT1.*valid.users.*
 ^samba3.unix.whoami machine account.whoami\(ad_member:local\)
index 7f801decb391702ef2092acab013d9df7fde00e7..38bfbbb7f4820e1c1b98614296bc8631c8f43a6c 100755 (executable)
@@ -438,6 +438,50 @@ EOF
     return 0
 }
 
+# Test doing a normal file hardlink on an msdfs path.
+test_msdfs_hardlink()
+{
+    tmpfile="$PREFIX/smbclient.in.$$"
+    filename_src="src.$$"
+    filename_dst="dest.$$"
+    filename_src_path="$PREFIX/$filename_src"
+    rm -f "$filename_src_path"
+    touch "$filename_src_path"
+
+    cat > $tmpfile <<EOF
+lcd $PREFIX
+put $filename_src
+hardlink $filename_src $filename_dst
+del $filename_src
+del $filename_dst
+quit
+EOF
+
+    cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/msdfs-share -I $SERVER_IP $ADDARGS < $tmpfile 2>&1'
+    eval echo "$cmd"
+    out=`eval $cmd`
+    ret=$?
+    rm -f "$tmpfile"
+    rm -f "$filename_src_path"
+
+    if [ $ret != 0 ] ; then
+       echo "$out"
+       echo "failed hardlink $filename_src $filename_dst with error $ret"
+       return 1
+    fi
+
+    echo "$out" | grep "NT_STATUS" >/dev/null 2>&1
+
+    ret="$?"
+    if [ "$ret" -eq 0 ] ; then
+       echo "$out"
+       echo "hardlink $filename_src $filename_dst got NT_STATUS_ error"
+       return 1
+    fi
+    return 0
+}
+
+
 # Archive bits are correctly set on file/dir creation and rename.
 test_rename_archive_bit()
 {
@@ -2025,6 +2069,10 @@ testit "Recursive ls across MS-DFS links" \
    test_msdfs_recursive_dir || \
    failed=`expr $failed + 1`
 
+testit "Hardlink on MS-DFS share" \
+    test_msdfs_hardlink || \
+    failed=`expr $failed + 1`
+
 testit "Ensure archive bit is set correctly on file/dir rename" \
     test_rename_archive_bit || \
     failed=`expr $failed + 1`