summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Kicinski <kuba@kernel.org>2026-03-21 04:34:50 +0300
committerJakub Kicinski <kuba@kernel.org>2026-03-21 04:34:51 +0300
commit64cf4b95de0741e25a5c1f3140de50149fa68937 (patch)
treed69fdf301133d8cb7d1433552777f463f47d6a7f
parent79cfb2d1f25a2de43d846d91143c8b66e99688e5 (diff)
parent0c3893d37892f332b595906710bf53bbd9c7c572 (diff)
downloadlinux-64cf4b95de0741e25a5c1f3140de50149fa68937.tar.xz
Merge branch 'selftests-vsock-support-nested-vm-runner-for-vmtest-sh'
Bobby Eshleman says: ==================== selftests/vsock: support nested VM runner for vmtest.sh This series fixes a few issues trying to launch vmtest.sh in a nested VM environment and were discovered when trying to prepare the tests for netdev CI/CD. When taken together these patches make vmtest.sh work both on bare metal and in nested VMs, regardless of the outer VM's user, coincidental path overlaps, or filesystem settings. ==================== Link: https://patch.msgid.link/20260317-vsock-vmtest-nested-fixes-v2-0-0b3f53b80a0f@meta.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rwxr-xr-xtools/testing/selftests/vsock/vmtest.sh26
1 files changed, 22 insertions, 4 deletions
diff --git a/tools/testing/selftests/vsock/vmtest.sh b/tools/testing/selftests/vsock/vmtest.sh
index 9eacb753238a..d97913a6bdc7 100755
--- a/tools/testing/selftests/vsock/vmtest.sh
+++ b/tools/testing/selftests/vsock/vmtest.sh
@@ -42,6 +42,8 @@ readonly KERNEL_CMDLINE="\
virtme.ssh virtme_ssh_channel=tcp virtme_ssh_user=$USER \
"
readonly LOG=$(mktemp /tmp/vsock_vmtest_XXXX.log)
+readonly TEST_HOME="$(mktemp -d /tmp/vmtest_home_XXXX)"
+readonly SSH_KEY_PATH="${TEST_HOME}"/.ssh/id_ed25519
# Namespace tests must use the ns_ prefix. This is checked in check_netns() and
# is used to determine if a test needs namespace setup before test execution.
@@ -257,7 +259,12 @@ vm_ssh() {
shift
- ${ns_exec} ssh -q -o UserKnownHostsFile=/dev/null -p "${SSH_HOST_PORT}" localhost "$@"
+ ${ns_exec} ssh -q \
+ -i "${SSH_KEY_PATH}" \
+ -o UserKnownHostsFile=/dev/null \
+ -o StrictHostKeyChecking=no \
+ -p "${SSH_HOST_PORT}" \
+ localhost "$@"
return $?
}
@@ -265,6 +272,7 @@ vm_ssh() {
cleanup() {
terminate_pidfiles "${!PIDFILES[@]}"
del_namespaces
+ rm -rf "${TEST_HOME}"
}
check_args() {
@@ -382,6 +390,12 @@ handle_build() {
popd &>/dev/null
}
+setup_home() {
+ mkdir -p "$(dirname "${SSH_KEY_PATH}")"
+ ssh-keygen -t ed25519 -f "${SSH_KEY_PATH}" -N "" -q
+ cp "${VSOCK_TEST}" "${TEST_HOME}"/vsock_test
+}
+
create_pidfile() {
local pidfile
@@ -470,11 +484,14 @@ vm_start() {
--run \
${kernel_opt} \
${verbose_opt} \
+ --rwdir=/root="${TEST_HOME}" \
+ --force-9p \
+ --cwd /root \
--qemu-opts="${qemu_opts}" \
--qemu="${qemu}" \
--user root \
--append "${KERNEL_CMDLINE}" \
- --rw &> ${logfile} &
+ &> ${logfile} &
timeout "${WAIT_QEMU}" \
bash -c 'while [[ ! -s '"${pidfile}"' ]]; do sleep 1; done; exit 0'
@@ -604,7 +621,7 @@ vm_vsock_test() {
# log output and use pipefail to respect vsock_test errors
set -o pipefail
if [[ "${host}" != server ]]; then
- vm_ssh "${ns}" -- "${VSOCK_TEST}" \
+ vm_ssh "${ns}" -- ./vsock_test \
--mode=client \
--control-host="${host}" \
--peer-cid="${cid}" \
@@ -612,7 +629,7 @@ vm_vsock_test() {
2>&1 | log_guest
rc=$?
else
- vm_ssh "${ns}" -- "${VSOCK_TEST}" \
+ vm_ssh "${ns}" -- ./vsock_test \
--mode=server \
--peer-cid="${cid}" \
--control-port="${port}" \
@@ -1551,6 +1568,7 @@ check_deps
check_vng
check_socat
handle_build
+setup_home
echo "1..${#ARGS[@]}"