summaryrefslogtreecommitdiffstats
path: root/source3/script/tests/test_deadtime.sh
blob: 3d6368e29fe71e430f9d1bcbca497698884ebb1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/usr/bin/env bash
#
# Test deadtime parameter
#

if [ $# -lt 1 ]; then
	echo Usage: test_deadtime.sh IP
	exit 1
fi

server=$1

incdir=$(dirname $0)/../../../testprogs/blackbox
. $incdir/subunit.sh
. $incdir/common_test_fns.inc

failed=0

smbclient="$BINDIR/smbclient"
smbcontrol="$BINDIR/smbcontrol"

global_inject_conf=$(dirname $SMB_CONF_PATH)/global_inject.conf

echo "deadtime = 1" >$global_inject_conf
$smbcontrol smbd reload-config

cd $SELFTEST_TMPDIR || exit 1

# Create the smbclient communication pipes.
rm -f smbclient-stdin smbclient-stdout smbclient-stderr
mkfifo smbclient-stdin smbclient-stdout smbclient-stderr

export CLI_FORCE_INTERACTIVE=1
export SAMBA_DEPRECATED_SUPPRESS=1

# This gets inherited by smbclient and is required to smbclient doesn't get
# killed by an unhandled SIGPIPE when writing an SMB2 KEEPALIVE packet to the
# connection fd that was already closed by the server.
trap "" SIGPIPE

$smbclient //$server/tmp -U${USER}%${PASSWORD} \
	<smbclient-stdin >smbclient-stdout 2>smbclient-stderr &
client_pid=$!

sleep 1

exec 100>smbclient-stdin 101<smbclient-stdout 102<smbclient-stderr

# consume the smbclient startup message
head -n 1 <&101

sleep 70

err=$(head -n 1 <&102)
echo "err: $err"

kill $client_pid

echo "$err" | grep NT_STATUS_CONNECTION_DISCONNECTED
testit "deadtime" test $? -eq 0 || failed=$(expr $failed + 1)

echo "" >$global_inject_conf
$smbcontrol smbd reload-config

rm -f smbclient-stdin smbclient-stdout smbclient-stderr

testok $0 $failed