summaryrefslogtreecommitdiff
path: root/tests/qemu-iotests/common.nbd
diff options
context:
space:
mode:
authorDaniel P. Berrangé <berrange@redhat.com>2018-11-16 15:53:25 +0000
committerEric Blake <eblake@redhat.com>2018-11-19 11:16:46 -0600
commitafcd1c2f2d438930a17eb87293c0ac2c377158fa (patch)
tree1eba46c274b0e06804e87a89d848ee555f14ae1a /tests/qemu-iotests/common.nbd
parenta46b68410669fa14c4a85d9284953fc0d42392d0 (diff)
downloadqemu-afcd1c2f2d438930a17eb87293c0ac2c377158fa.zip
tests: exercise NBD server in TLS mode
Add tests that validate it is possible to connect to an NBD server running TLS mode. Also test mis-matched TLS vs non-TLS connections correctly fail. Signed-off-by: Daniel P. Berrangé <berrange@redhat.com> Message-Id: <20181116155325.22428-7-berrange@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Tested-by: Eric Blake <eblake@redhat.com> [eblake: rebase to iotests shell cleanups, use ss instead of socat for port probing, sanitize port number in expected output] Signed-off-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'tests/qemu-iotests/common.nbd')
-rw-r--r--tests/qemu-iotests/common.nbd45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/qemu-iotests/common.nbd b/tests/qemu-iotests/common.nbd
index 9f841ab402..0f4497a7ea 100644
--- a/tests/qemu-iotests/common.nbd
+++ b/tests/qemu-iotests/common.nbd
@@ -20,6 +20,7 @@
#
nbd_unix_socket="${TEST_DIR}/qemu-nbd.sock"
+nbd_tcp_addr="127.0.0.1"
nbd_pid_file="${TEST_DIR}/qemu-nbd.pid"
function nbd_server_stop()
@@ -62,3 +63,47 @@ function nbd_server_start_unix_socket()
$QEMU_NBD -v -t -k "$nbd_unix_socket" "$@" &
nbd_server_wait_for_unix_socket $!
}
+
+function nbd_server_set_tcp_port()
+{
+ (ss --help) >/dev/null 2>&1 || _notrun "ss utility not found, skipping test"
+
+ for ((port = 10809; port <= 10909; port++))
+ do
+ if ! ss -tln | grep -sqE ":$port\b"; then
+ nbd_tcp_port=$port
+ return
+ fi
+ done
+
+ echo "Cannot find free TCP port for nbd in range 10809-10909"
+ exit 1
+}
+
+function nbd_server_wait_for_tcp_socket()
+{
+ pid=$1
+
+ for ((i = 0; i < 300; i++))
+ do
+ if ss -tln | grep -sqE ":$nbd_tcp_port\b"; then
+ return
+ fi
+ kill -s 0 $pid 2>/dev/null
+ if test $? != 0
+ then
+ echo "qemu-nbd unexpectedly quit"
+ exit 1
+ fi
+ sleep 0.1
+ done
+ echo "Failed in check of TCP socket created by qemu-nbd"
+ exit 1
+}
+
+function nbd_server_start_tcp_socket()
+{
+ nbd_server_stop
+ $QEMU_NBD -v -t -b $nbd_tcp_addr -p $nbd_tcp_port "$@" &
+ nbd_server_wait_for_tcp_socket $!
+}