From 6fa52a2b3e78deb89192ce6aa5b34145975db439 Mon Sep 17 00:00:00 2001 From: Darek Stojaczyk Date: Tue, 17 Mar 2020 11:58:09 +0100 Subject: [PATCH] test/spdkcli/tcp: use socat for listening for RPC on a TCP port `-r` command line param in SPDK won't accept a TCP port soon. Instead, we can make SPDK listen on a unix domain socket, then expose the socket on a TCP port using socat. Change-Id: Iea52a5f21d845eac6888d343ce03c7e7caf19617 Signed-off-by: Darek Stojaczyk Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1332 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- test/spdkcli/tcp.sh | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/test/spdkcli/tcp.sh b/test/spdkcli/tcp.sh index a73e2f394..1d9f7f7eb 100755 --- a/test/spdkcli/tcp.sh +++ b/test/spdkcli/tcp.sh @@ -5,6 +5,13 @@ rootdir=$(readlink -f $testdir/../..) source $rootdir/test/common/autotest_common.sh source $rootdir/test/spdkcli/common.sh +function err_cleanup() { + if [ -n "$socat_pid" ]; then + killprocess $socat_pid || true + fi + killprocess $spdk_tgt_pid +} + function waitfortcplisten() { # $1 = process pid if [ -z "$1" ]; then @@ -46,12 +53,18 @@ function waitfortcplisten() { IP_ADDRESS="127.0.0.1" PORT="9998" -trap 'killprocess $spdk_tgt_pid; exit 1' SIGINT SIGTERM EXIT +trap 'err_cleanup; 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 & +$rootdir/app/spdk_tgt/spdk_tgt -m 0x3 -p 0 -s 2048 & spdk_tgt_pid=$! +waitforlisten $spdk_tgt_pid + +# socat will terminate automatically after the connection is closed +socat TCP-LISTEN:$PORT UNIX-CONNECT:$DEFAULT_RPC_ADDR & +socat_pid=$! + # This will issue a rpc request to the spdk target thus validating tcp waitfortcplisten $spdk_tgt_pid $IP_ADDRESS $PORT