1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-25 17:57:42 +03:00

s3:tests: Improve test_force_close_share test

This fixes the test with fast disks where 20MB transfers are done in
less than a second.

This also cleans up the code to have less sleeping time!

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>

Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Mon Oct 19 21:14:21 UTC 2020 on sn-devel-184
This commit is contained in:
Andreas Schneider 2020-09-02 09:25:43 +02:00 committed by Jeremy Allison
parent 40a4dd2862
commit 67c437bf11
2 changed files with 49 additions and 37 deletions

View File

@ -9,57 +9,83 @@
# the aio_delay_inject share which is preconfigured
# with 2 second delays on pread/pwrite.
if [ $# -lt 5 ]; then
echo Usage: test_share_force_close.sh \
SERVERCONFFILE SMBCLIENT SMBCONTROL IP aio_delay_inject_sharename
exit 1
if [ $# -lt 6 ]; then
echo Usage: $0 SERVERCONFFILE SMBCLIENT SMBCONTROL IP aio_delay_inject_sharename PREFIX
exit 1
fi
CONF=$1
SMBCLIENT=$2
CONFIGURATION=$1
smbclient=$2
SMBCONTROL=$3
SERVER=$4
SHARE=$5
PREFIX=$6
shift 6
incdir=$(dirname $0)/../../../testprogs/blackbox
. $incdir/subunit.sh
. $incdir/common_test_fns.inc
failed=0
mkdir -p $PREFIX/private
FIFO_STDIN="$PREFIX/smbclient-stdin"
FIFO_STDOUT="$PREFIX/smbclient-stdout"
FIFO_STDERR="$PREFIX/smbclient-stderr"
TESTFILE="$PREFIX/testfile"
rm -f $FIFO_STDIN $FIFO_STDOUT $FIFO_STDERR $TESTFILE 2>/dev/null
# Create the smbclient communication pipes.
rm -f smbclient-stdin smbclient-stdout smbclient-stderr
mkfifo smbclient-stdin smbclient-stdout smbclient-stderr
mkfifo $FIFO_STDIN $FIFO_STDOUT $FIFO_STDERR
if [ $? -ne 0 ]; then
echo "Failed to create fifos"
exit 1
fi
# Create a large-ish testfile
rm testfile
head -c 20MB /dev/zero >testfile
head -c 100MB /dev/zero >$TESTFILE
CLI_FORCE_INTERACTIVE=1; export CLI_FORCE_INTERACTIVE
${SMBCLIENT} //${SERVER}/${SHARE} ${CONF} -U${USER}%${PASSWORD} \
< smbclient-stdin > smbclient-stdout 2>smbclient-stderr &
${smbclient} //${SERVER}/${SHARE} ${CONFIGURATION} -U${USER}%${PASSWORD} \
< $FIFO_STDIN > $FIFO_STDOUT 2>$FIFO_STDERR &
CLIENT_PID=$!
sleep 1
count=0
while [ 1 ]; do
if [ $count -ge 20 ]; then
echo "Failed to start smbclient"
exit 1
fi
kill -0 $CLIENT_PID
if [ $? -eq 0 ]; then
break
fi
sleep 0.5
count=$((count + 1))
done
exec 100>smbclient-stdin 101<smbclient-stdout 102<smbclient-stderr
exec 100>$FIFO_STDIN 101<$FIFO_STDOUT 102<$FIFO_STDERR
# consume the smbclient startup messages
head -n 1 <&101
head -n 1 <&102
# Ensure we're putting a fresh file.
echo "lcd $(dirname $TESTFILE)" >&100
echo "del testfile" >&100
echo "put testfile" >&100
sleep 1
sleep 0.2
# Close the aio_delay_inject share whilst we have outstanding writes.
testit "smbcontrol" ${SMBCONTROL} ${CONF} smbd close-share ${SHARE} ||
testit "smbcontrol" ${SMBCONTROL} ${CONFIGURATION} smbd close-share ${SHARE} ||
failed=$(expr $failed + 1)
sleep 1
sleep 0.5
# If we get one or more NT_STATUS_NETWORK_NAME_DELETED
# or NT_STATUS_INVALID_HANDLE on stderr from the writes we
@ -77,24 +103,9 @@ testit "Verify close-share did cancel the file put" \
kill ${CLIENT_PID}
# Rerun smbclient to remove the testfile on the server.
rm -f smbclient-stdin smbclient-stdout smbclient-stderr testfile
mkfifo smbclient-stdin smbclient-stdout
${SMBCLIENT} //${SERVER}/${SHARE} ${CONF} -U${USER}%${PASSWORD} \
< smbclient-stdin > smbclient-stdout &
CLIENT_PID=$!
sleep 1
exec 100>smbclient-stdin 101<smbclient-stdout
echo "del testfile" >&100
sleep 1
kill ${CLIENT_PID}
rm -f smbclient-stdin smbclient-stdout testfile
# Remove the testfile from the server
test_smbclient "remove_testfile" \
'del testfile; quit' //${SERVER}/${SHARE} -U${USER}%${PASSWORD} \
|| failed=$(expr $failed + 1)
testok $0 $failed

View File

@ -968,7 +968,8 @@ plantestsuite("samba3.blackbox.force-close-share", "simpleserver:local",
os.path.join(bindir(), "smbclient"),
os.path.join(bindir(), "smbcontrol"),
'$SERVER_IP',
"aio_delay_inject"])
"aio_delay_inject",
'$PREFIX/force-close-share'])
plantestsuite("samba3.blackbox.open-eintr", "simpleserver:local",
[os.path.join(samba3srcdir,