On Sat, Nov 08, 2025 at 08:00:54AM -0800, Bobby Eshleman wrote:
From: Bobby Eshleman bobbyeshleman@meta.com
Add wrapper functions vm_vsock_test() and host_vsock_test() to invoke the vsock_test binary. This encapsulates several items of repeat logic, such as waiting for the server to reach listening state and enabling/disabling the bash option pipefail to avoid pipe-style logging from hiding failures.
Signed-off-by: Bobby Eshleman bobbyeshleman@meta.com
Changes in v4:
- remember to disable pipefail before returning from host_vsock_test()
Changes in v3:
- Add port input parameter to host_wait_for_listener() to accept port
from host_vsock_test() (Stefano)
- Change host_wait_for_listener() call-site to pass in parameter
tools/testing/selftests/vsock/vmtest.sh | 135 ++++++++++++++++++++++---------- 1 file changed, 95 insertions(+), 40 deletions(-)
Reviewed-by: Stefano Garzarella sgarzare@redhat.com
diff --git a/tools/testing/selftests/vsock/vmtest.sh b/tools/testing/selftests/vsock/vmtest.sh index 01ce16523afb..3bccd9b84e4a 100755 --- a/tools/testing/selftests/vsock/vmtest.sh +++ b/tools/testing/selftests/vsock/vmtest.sh @@ -272,8 +272,81 @@ EOF }
host_wait_for_listener() {
- wait_for_listener "${TEST_HOST_PORT_LISTENER}" "${WAIT_PERIOD}" "${WAIT_PERIOD_MAX}"
local port=$1
wait_for_listener "${port}" "${WAIT_PERIOD}" "${WAIT_PERIOD_MAX}"
+}
+vm_vsock_test() {
- local host=$1
- local cid=$2
- local port=$3
- local rc
- # log output and use pipefail to respect vsock_test errors
- set -o pipefail
- if [[ "${host}" != server ]]; then
vm_ssh -- "${VSOCK_TEST}" \--mode=client \--control-host="${host}" \--peer-cid="${cid}" \--control-port="${port}" \2>&1 | log_guestrc=$?- else
vm_ssh -- "${VSOCK_TEST}" \--mode=server \--peer-cid="${cid}" \--control-port="${port}" \2>&1 | log_guest &rc=$?if [[ $rc -ne 0 ]]; thenset +o pipefailreturn $rcfivm_wait_for_listener "${port}"rc=$?- fi
- set +o pipefail
- return $rc
+}
+host_vsock_test() {
- local host=$1
- local cid=$2
- local port=$3
- local rc
- # log output and use pipefail to respect vsock_test errors
- set -o pipefail
- if [[ "${host}" != server ]]; then
${VSOCK_TEST} \--mode=client \--peer-cid="${cid}" \--control-host="${host}" \--control-port="${port}" 2>&1 | log_hostrc=$?- else
${VSOCK_TEST} \--mode=server \--peer-cid="${cid}" \--control-port="${port}" 2>&1 | log_host &rc=$?if [[ $rc -ne 0 ]]; thenset +o pipefailreturn $rcfihost_wait_for_listener "${port}"rc=$?- fi
- set +o pipefail
- return $rc
}
log() { @@ -312,59 +385,41 @@ log_guest() { }
test_vm_server_host_client() {
- if ! vm_vsock_test "server" 2 "${TEST_GUEST_PORT}"; then
return "${KSFT_FAIL}"- fi
- vm_ssh -- "${VSOCK_TEST}" \
--mode=server \--control-port="${TEST_GUEST_PORT}" \--peer-cid=2 \2>&1 | log_guest &- vm_wait_for_listener "${TEST_GUEST_PORT}"
- ${VSOCK_TEST} \
--mode=client \--control-host=127.0.0.1 \--peer-cid="${VSOCK_CID}" \--control-port="${TEST_HOST_PORT}" 2>&1 | log_host
- if ! host_vsock_test "127.0.0.1" "${VSOCK_CID}" "${TEST_HOST_PORT}"; then
return "${KSFT_FAIL}"- fi
- return $?
- return "${KSFT_PASS}"
}
test_vm_client_host_server() {
- if ! host_vsock_test "server" "${VSOCK_CID}" "${TEST_HOST_PORT_LISTENER}"; then
return "${KSFT_FAIL}"- fi
- ${VSOCK_TEST} \
--mode "server" \--control-port "${TEST_HOST_PORT_LISTENER}" \--peer-cid "${VSOCK_CID}" 2>&1 | log_host &- host_wait_for_listener
- vm_ssh -- "${VSOCK_TEST}" \
--mode=client \--control-host=10.0.2.2 \--peer-cid=2 \--control-port="${TEST_HOST_PORT_LISTENER}" 2>&1 | log_guest
- if ! vm_vsock_test "10.0.2.2" 2 "${TEST_HOST_PORT_LISTENER}"; then
return "${KSFT_FAIL}"- fi
- return $?
- return "${KSFT_PASS}"
}
test_vm_loopback() { local port=60000 # non-forwarded local port
- vm_ssh -- "${VSOCK_TEST}" \
--mode=server \--control-port="${port}" \--peer-cid=1 2>&1 | log_guest &- vm_wait_for_listener "${port}"
- if ! vm_vsock_test "server" 1 "${port}"; then
return "${KSFT_FAIL}"- fi
- vm_ssh -- "${VSOCK_TEST}" \
--mode=client \--control-host="127.0.0.1" \--control-port="${port}" \--peer-cid=1 2>&1 | log_guest
- if ! vm_vsock_test "127.0.0.1" 1 "${port}"; then
return "${KSFT_FAIL}"- fi
- return $?
- return "${KSFT_PASS}"
}
run_test() {
-- 2.47.3