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:
parent
40a4dd2862
commit
67c437bf11
@ -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
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user