From: Bobby Eshleman <[email protected]>

Add check_result() function to reuse logic for incrementing the
pass/fail counters. This function will get used by different callers as
we add different types of tests in future patches (namely, namespace and
non-namespace tests will be called at different places, and re-use this
function).

Reviewed-by: Simon Horman <[email protected]>
Signed-off-by: Bobby Eshleman <[email protected]>
---
Changes in v3:
- increment cnt_total directly (no intermediary var) (Stefano)
- pass arg to check_result() from caller, dont incidentally rely on
  global (Stefano)
- use new create_pidfile() introduce in v3 of earlier patch
- continue with more disciplined variable quoting style
---
 tools/testing/selftests/vsock/vmtest.sh | 95 +++++++++++++++++++++++++--------
 1 file changed, 72 insertions(+), 23 deletions(-)

diff --git a/tools/testing/selftests/vsock/vmtest.sh 
b/tools/testing/selftests/vsock/vmtest.sh
index 557f9a99a306..05cf370a3db4 100755
--- a/tools/testing/selftests/vsock/vmtest.sh
+++ b/tools/testing/selftests/vsock/vmtest.sh
@@ -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() {
@@ -79,6 +81,28 @@ die() {
        exit "${KSFT_FAIL}"
 }
 
+check_result() {
+       local rc arg
+
+       rc=$1
+       arg=$2
+
+       cnt_total=$(( cnt_total + 1 ))
+
+       if [[ ${rc} -eq $KSFT_PASS ]]; then
+               cnt_pass=$(( cnt_pass + 1 ))
+               echo "ok ${num} ${arg}"
+       elif [[ ${rc} -eq $KSFT_SKIP ]]; then
+               cnt_skip=$(( cnt_skip + 1 ))
+               echo "ok ${num} ${arg} # SKIP"
+       elif [[ ${rc} -eq $KSFT_FAIL ]]; then
+               cnt_fail=$(( cnt_fail + 1 ))
+               echo "not ok ${num} ${arg} # exit=$rc"
+       fi
+
+       cnt_total=$(( cnt_total + 1 ))
+}
+
 vm_ssh() {
        ssh -q -o UserKnownHostsFile=/dev/null -p ${SSH_HOST_PORT} localhost 
"$@"
        return $?
@@ -450,7 +474,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
@@ -526,33 +587,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=$?
-       if [[ ${rc} -eq $KSFT_PASS ]]; then
-               cnt_pass=$(( cnt_pass + 1 ))
-               echo "ok ${cnt_total} ${arg}"
-       elif [[ ${rc} -eq $KSFT_SKIP ]]; then
-               cnt_skip=$(( cnt_skip + 1 ))
-               echo "ok ${cnt_total} ${arg} # SKIP"
-       elif [[ ${rc} -eq $KSFT_FAIL ]]; then
-               cnt_fail=$(( cnt_fail + 1 ))
-               echo "not ok ${cnt_total} ${arg} # exit=$rc"
-       fi
-       cnt_total=$(( cnt_total + 1 ))
-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}"

-- 
2.47.3


Reply via email to