On Tue, Nov 04, 2025 at 02:38:58PM -0800, Bobby Eshleman wrote:
From: Bobby Eshleman <[email protected]>

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 <[email protected]>
Signed-off-by: Bobby Eshleman <[email protected]>
---
tools/testing/selftests/vsock/vmtest.sh | 63 ++++++++++++++++++++++++++-------
1 file changed, 50 insertions(+), 13 deletions(-)

diff --git a/tools/testing/selftests/vsock/vmtest.sh 
b/tools/testing/selftests/vsock/vmtest.sh
index 4ce93cef32e9..678c19e089a2 100755
--- a/tools/testing/selftests/vsock/vmtest.sh
+++ b/tools/testing/selftests/vsock/vmtest.sh
@@ -45,6 +45,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() {
@@ -443,7 +445,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 $?
+       done
+}
+
+run_shared_vm_test() {
        local host_oops_cnt_before
        local host_warn_cnt_before
        local vm_oops_cnt_before
@@ -517,23 +556,21 @@ handle_build

echo "1..${#ARGS[@]}"

-log_host "Booting up VM"
-pidfile="$(mktemp -u $PIDFILE_TEMPLATE)"

Why here we used `mktemp -u` ...

-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}
-done

-terminate_pidfiles "${pidfile}"
+if shared_vm_tests_requested "${ARGS[@]}"; then
+       log_host "Booting up VM"
+       pidfile=$(mktemp $PIDFILE_TEMPLATE)

... and here we are removing `-u` ?

If we don't need the dry-run, I'd suggest to remove it also from the
patch that introduced it in this series.

Also, maybe we need to quote $PIDFILE_TEMPLATE


Stefano

+       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}"

--
2.47.3



Reply via email to