mirror of
https://github.com/samba-team/samba.git
synced 2025-03-09 08:58:35 +03:00
selftest: test listing directories inside snapshots
Verify that directories are also listable. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12172 Signed-off-by: Uri Simchoni <uri@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> (cherry picked from commit 22c3982100a1d6bf67979a0659604942ef6f11f0)
This commit is contained in:
parent
962ab3dd81
commit
cbdb72fbf2
@ -329,3 +329,5 @@
|
|||||||
^samba4.smb2.read.access
|
^samba4.smb2.read.access
|
||||||
#ntvfs server blocks copychunk with execute access on read handle
|
#ntvfs server blocks copychunk with execute access on read handle
|
||||||
^samba4.smb2.ioctl.copy_chunk_bad_access
|
^samba4.smb2.ioctl.copy_chunk_bad_access
|
||||||
|
#new snapshot dir listing test fails on SMB1
|
||||||
|
^samba3.blackbox.shadow_copy2(?!.*wide links).*- list directory
|
||||||
|
@ -134,6 +134,7 @@ test_count_versions()
|
|||||||
local tstamps
|
local tstamps
|
||||||
local tstamp
|
local tstamp
|
||||||
local content
|
local content
|
||||||
|
local is_dir
|
||||||
|
|
||||||
share=$1
|
share=$1
|
||||||
path=$2
|
path=$2
|
||||||
@ -145,13 +146,28 @@ test_count_versions()
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
is_dir=0
|
||||||
|
$SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "allinfo $path" | grep "^attributes:.*D" && is_dir=1
|
||||||
|
if [ $is_dir = 1 ] ; then
|
||||||
|
skip_content=1
|
||||||
|
fi
|
||||||
|
|
||||||
#readable snapshots
|
#readable snapshots
|
||||||
tstamps=`$SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "allinfo $path" | awk '/^@GMT-/ {snapshot=$1} /^create_time:/ {printf "%s\n", snapshot}'`
|
tstamps=`$SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "allinfo $path" | awk '/^@GMT-/ {snapshot=$1} /^create_time:/ {printf "%s\n", snapshot}'`
|
||||||
for tstamp in $tstamps ; do
|
for tstamp in $tstamps ; do
|
||||||
if ! $SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "get $tstamp\\$path $WORKDIR/foo" ; then
|
if [ $is_dir = 0 ] ;
|
||||||
echo "Failed getting \\\\$SERVER\\$share\\$tstamp\\$path"
|
then
|
||||||
return 1
|
if ! $SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "get $tstamp\\$path $WORKDIR/foo" ; then
|
||||||
|
echo "Failed getting \\\\$SERVER\\$share\\$tstamp\\$path"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if ! $SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "ls $tstamp\\$path\\*" ; then
|
||||||
|
echo "Failed listing \\\\$SERVER\\$share\\$tstamp\\$path"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#also check the content, but not for wide links
|
#also check the content, but not for wide links
|
||||||
if [ "x$skip_content" != "x1" ] ; then
|
if [ "x$skip_content" != "x1" ] ; then
|
||||||
content=`cat $WORKDIR/foo`
|
content=`cat $WORKDIR/foo`
|
||||||
@ -166,9 +182,17 @@ test_count_versions()
|
|||||||
tstamps=`$SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "allinfo $path" | \
|
tstamps=`$SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "allinfo $path" | \
|
||||||
awk '/^@GMT-/ {if (snapshot!=""){printf "%s\n", snapshot} ; snapshot=$1} /^create_time:/ {snapshot=""} END {if (snapshot!=""){printf "%s\n", snapshot}}'`
|
awk '/^@GMT-/ {if (snapshot!=""){printf "%s\n", snapshot} ; snapshot=$1} /^create_time:/ {snapshot=""} END {if (snapshot!=""){printf "%s\n", snapshot}}'`
|
||||||
for tstamp in $tstamps ; do
|
for tstamp in $tstamps ; do
|
||||||
if $SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "get $tstamp\\$path $WORKDIR/foo" ; then
|
if [ $is_dir = 0 ] ;
|
||||||
echo "Unexpected success getting \\\\$SERVER\\$share\\$tstamp\\$path"
|
then
|
||||||
return 1
|
if $SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "get $tstamp\\$path $WORKDIR/foo" ; then
|
||||||
|
echo "Unexpected success getting \\\\$SERVER\\$share\\$tstamp\\$path"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if $SMBCLIENT -U$USERNAME%$PASSWORD "//$SERVER/$share" -I $SERVER_IP -c "ls $tstamp\\$path\\*" ; then
|
||||||
|
echo "Unexpected success listing \\\\$SERVER\\$share\\$tstamp\\$path"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@ -232,6 +256,10 @@ test_shadow_copy_fixed()
|
|||||||
testit "$msg - rel symlink outside" \
|
testit "$msg - rel symlink outside" \
|
||||||
test_count_versions $share bar/loutside $ncopies_blocked 1 || \
|
test_count_versions $share bar/loutside $ncopies_blocked 1 || \
|
||||||
failed=`expr $failed + 1`
|
failed=`expr $failed + 1`
|
||||||
|
|
||||||
|
testit "$msg - list directory" \
|
||||||
|
test_count_versions $share bar $ncopies_allowed || \
|
||||||
|
failed=`expr $failed + 1`
|
||||||
}
|
}
|
||||||
|
|
||||||
test_shadow_copy_everywhere()
|
test_shadow_copy_everywhere()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user