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.

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 0957d6a41d08..a728958c58ee 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() {
@@ -454,7 +456,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
@@ -528,23 +567,21 @@ handle_build
 
 echo "1..${#ARGS[@]}"
 
-log_host "Booting up VM"
-pidfile="$(mktemp -u $PIDFILE_TEMPLATE)"
-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)
+       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