Spdk/test/spdkcli/tcp.sh
Darek Stojaczyk 5db247abfc test/spdkcli/tcp: don't override the ERR trap
That test used to call an inexistent function in its
ERR trap. That's for one. Second, none of the SPDK tests
should set the ERR trap themselves - it's set once in
autotest_common.sh and prints the backtrace. What test
scripts should do is setting SIGINT/EXIT traps - fix it now.

Change-Id: I46c82651be78eeaec16ac52396c5e80a0405e5ff
Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1331
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Michal Berger <michalx.berger@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2020-04-06 07:48:43 +00:00

62 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
testdir=$(readlink -f $(dirname $0))
rootdir=$(readlink -f $testdir/../..)
source $rootdir/test/common/autotest_common.sh
source $rootdir/test/spdkcli/common.sh
function waitfortcplisten() {
# $1 = process pid
if [ -z "$1" ]; then
exit 1
fi
local ipaddr=$2
local port=$3
echo "Waiting for process to start up and listen on TCP/IP Socket $ipaddr:$port..."
# turn off trace for this loop
xtrace_disable
local ret=0
local i
for (( i = 40; i != 0; i-- )); do
# if the process is no longer running, then exit the script
# since it means the application crashed
if ! kill -s 0 $1; then
echo "ERROR: process (pid: $1) is no longer running"
ret=1
break
fi
if $rootdir/scripts/rpc.py -t 1 -s "$ipaddr" -p $port rpc_get_methods &>/dev/null; then
break
fi
sleep 0.5
done
xtrace_restore
if (( i == 0 )); then
echo "ERROR: timeout while waiting for process (pid: $1) to start listening on '$ipaddr:$port'"
ret=1
fi
return $ret
}
IP_ADDRESS="127.0.0.1"
PORT="9998"
trap 'killprocess $spdk_tgt_pid; exit 1' SIGINT SIGTERM EXIT
timing_enter run_spdk_tgt_tcp
$rootdir/app/spdk_tgt/spdk_tgt -m 0x3 -p 0 -s 2048 -r $IP_ADDRESS:$PORT &
spdk_tgt_pid=$!
# This will issue a rpc request to the spdk target thus validating tcp
waitfortcplisten $spdk_tgt_pid $IP_ADDRESS $PORT
timing_exit run_spdk_tgt_tcp
trap - SIGINT SIGTERM EXIT
killprocess $spdk_tgt_pid