summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorUri Simchoni <uri@samba.org>2016-08-23 14:29:39 +0300
committerJeremy Allison <jra@samba.org>2016-08-25 01:38:28 +0200
commit22c3982100a1d6bf67979a0659604942ef6f11f0 (patch)
treedfacfb4110075b752be61cd7cfaa676769239012 /source3
parent495b8177363bf1930f3afb373ad73caac022f353 (diff)
downloadsamba-22c3982100a1d6bf67979a0659604942ef6f11f0.tar.gz
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>
Diffstat (limited to 'source3')
-rwxr-xr-xsource3/script/tests/test_shadow_copy.sh40
1 files changed, 34 insertions, 6 deletions
diff --git a/source3/script/tests/test_shadow_copy.sh b/source3/script/tests/test_shadow_copy.sh
index 2b72f06b146..783e7f324a6 100755
--- a/source3/script/tests/test_shadow_copy.sh
+++ b/source3/script/tests/test_shadow_copy.sh
@@ -144,6 +144,7 @@ test_count_versions()
local tstamps
local tstamp
local content
+ local is_dir
share=$1
path=$2
@@ -155,13 +156,28 @@ test_count_versions()
return 1
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
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
- 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
+ if [ $is_dir = 0 ] ;
+ then
+ 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
+
#also check the content, but not for wide links
if [ "x$skip_content" != "x1" ] ; then
content=`cat $WORKDIR/foo`
@@ -176,9 +192,17 @@ test_count_versions()
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}}'`
for tstamp in $tstamps ; do
- 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
+ if [ $is_dir = 0 ] ;
+ then
+ 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
done
}
@@ -242,6 +266,10 @@ test_shadow_copy_fixed()
testit "$msg - rel symlink outside" \
test_count_versions $share bar/loutside $ncopies_blocked 1 || \
failed=`expr $failed + 1`
+
+ testit "$msg - list directory" \
+ test_count_versions $share bar $ncopies_allowed || \
+ failed=`expr $failed + 1`
}
test_shadow_copy_everywhere()