selftests/vsock: identify and execute tests that can re-use VM

In preparation for future patches that introduce tests that cannot
re-use the same VM, add functions to identify those that *can* re-use a
VM.

By continuing to re-use the same VM for these tests we can save time by
avoiding the delay of booting a VM for every test.

Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Link: https://patch.msgid.link/20251108-vsock-selftests-fixes-and-improvements-v4-8-d5e8d6c87289@meta.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Bobby Eshleman
2025-11-08 08:00:59 -08:00
committed by Jakub Kicinski
parent 7fea50dff9
commit d13fb04a4b

View File

@@ -46,6 +46,8 @@ readonly TEST_DESCS=(
"Run vsock_test using the loopback transport in the VM."
)
readonly USE_SHARED_VM=(vm_server_host_client vm_client_host_server vm_loopback)
VERBOSE=0
usage() {
@@ -461,7 +463,44 @@ test_vm_loopback() {
return "${KSFT_PASS}"
}
run_test() {
shared_vm_test() {
local tname
tname="${1}"
for testname in "${USE_SHARED_VM[@]}"; do
if [[ "${tname}" == "${testname}" ]]; then
return 0
fi
done
return 1
}
shared_vm_tests_requested() {
for arg in "$@"; do
if shared_vm_test "${arg}"; then
return 0
fi
done
return 1
}
run_shared_vm_tests() {
local arg
for arg in "$@"; do
if ! shared_vm_test "${arg}"; then
continue
fi
run_shared_vm_test "${arg}"
check_result "$?" "${arg}"
done
}
run_shared_vm_test() {
local host_oops_cnt_before
local host_warn_cnt_before
local vm_oops_cnt_before
@@ -537,23 +576,21 @@ handle_build
echo "1..${#ARGS[@]}"
log_host "Booting up VM"
pidfile="$(create_pidfile)"
vm_start "${pidfile}"
vm_wait_for_ssh
log_host "VM booted up"
cnt_pass=0
cnt_fail=0
cnt_skip=0
cnt_total=0
for arg in "${ARGS[@]}"; do
run_test "${arg}"
rc=$?
check_result "${rc}" "${arg}"
done
terminate_pidfiles "${pidfile}"
if shared_vm_tests_requested "${ARGS[@]}"; then
log_host "Booting up VM"
pidfile="$(create_pidfile)"
vm_start "${pidfile}"
vm_wait_for_ssh
log_host "VM booted up"
run_shared_vm_tests "${ARGS[@]}"
terminate_pidfiles "${pidfile}"
fi
echo "SUMMARY: PASS=${cnt_pass} SKIP=${cnt_skip} FAIL=${cnt_fail}"
echo "Log: ${LOG}"