From: Bobby Eshleman <bobbyeshleman@gmail.com>
To: "Stefano Garzarella" <sgarzare@redhat.com>,
"Shuah Khan" <shuah@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Simon Horman" <horms@kernel.org>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Xuan Zhuo" <xuanzhuo@linux.alibaba.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"K. Y. Srinivasan" <kys@microsoft.com>,
"Haiyang Zhang" <haiyangz@microsoft.com>,
"Wei Liu" <wei.liu@kernel.org>,
"Dexuan Cui" <decui@microsoft.com>,
"Bryan Tan" <bryan-bt.tan@broadcom.com>,
"Vishnu Dasa" <vishnu.dasa@broadcom.com>,
"Broadcom internal kernel review list"
<bcm-kernel-feedback-list@broadcom.com>,
"Bobby Eshleman" <bobbyeshleman@gmail.com>
Cc: virtualization@lists.linux.dev, netdev@vger.kernel.org,
linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org, linux-hyperv@vger.kernel.org,
berrange@redhat.com, Bobby Eshleman <bobbyeshleman@meta.com>
Subject: [PATCH net-next v7 21/26] selftests/vsock: add tests for proc sys vsock ns_mode
Date: Tue, 21 Oct 2025 16:47:04 -0700 [thread overview]
Message-ID: <20251021-vsock-vmtest-v7-21-0661b7b6f081@meta.com> (raw)
In-Reply-To: <20251021-vsock-vmtest-v7-0-0661b7b6f081@meta.com>
From: Bobby Eshleman <bobbyeshleman@meta.com>
Add tests for the /proc/sys/net/vsock/ns_mode interface. Namely,
that it accepts "global" and "local" strings and enforces a write-once
policy.
Start a convention of commenting the test name over the test
description. Add test name comments over test descriptions that existed
before this convention.
Add a check_netns() function that checks if the test requires namespaces
and if the current kernel supports namespaces. Skip tests that require
namespaces if the system does not have namespace support.
This patch is the first to add tests that do *not* re-use the same
shared VM. For that reason, it adds a run_tests() function to run these
tests and filter out the shared VM tests.
Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com>
---
tools/testing/selftests/vsock/vmtest.sh | 99 ++++++++++++++++++++++++++++++++-
1 file changed, 98 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/vsock/vmtest.sh b/tools/testing/selftests/vsock/vmtest.sh
index b129976e27fc..4defadad5701 100755
--- a/tools/testing/selftests/vsock/vmtest.sh
+++ b/tools/testing/selftests/vsock/vmtest.sh
@@ -38,11 +38,28 @@ readonly KERNEL_CMDLINE="\
virtme.ssh virtme_ssh_channel=tcp virtme_ssh_user=$USER \
"
readonly LOG=$(mktemp /tmp/vsock_vmtest_XXXX.log)
-readonly TEST_NAMES=(vm_server_host_client vm_client_host_server vm_loopback)
+readonly TEST_NAMES=(
+ vm_server_host_client
+ vm_client_host_server
+ vm_loopback
+ ns_host_vsock_ns_mode_ok
+ ns_host_vsock_ns_mode_write_once_ok
+)
readonly TEST_DESCS=(
+ # vm_server_host_client
"Run vsock_test in server mode on the VM and in client mode on the host."
+
+ # vm_client_host_server
"Run vsock_test in client mode on the VM and in server mode on the host."
+
+ # vm_loopback
"Run vsock_test using the loopback transport in the VM."
+
+ # ns_host_vsock_ns_mode_ok
+ "Check /proc/sys/net/vsock/ns_mode strings on the host."
+
+ # ns_host_vsock_ns_mode_write_once_ok
+ "Check /proc/sys/net/vsock/ns_mode is write-once on the host."
)
readonly USE_SHARED_VM=(vm_server_host_client vm_client_host_server vm_loopback)
@@ -201,6 +218,20 @@ check_deps() {
fi
}
+check_netns() {
+ local tname=$1
+
+ # If the test requires NS support, check if NS support exists
+ # using /proc/self/ns
+ if [[ "${tname}" =~ ^ns_ ]] &&
+ [[ ! -e /proc/self/ns ]]; then
+ log_host "No NS support detected for test ${tname}"
+ return 1
+ fi
+
+ return 0
+}
+
check_vng() {
local tested_versions
local version
@@ -500,6 +531,43 @@ log_guest() {
LOG_PREFIX=guest log $@
}
+test_ns_host_vsock_ns_mode_ok() {
+ add_namespaces
+
+ for mode in "${NS_MODES[@]}"; do
+ if ! ns_set_mode "${mode}0" "${mode}"; then
+ del_namespaces
+ return "${KSFT_FAIL}"
+ fi
+ done
+
+ del_namespaces
+
+ return "${KSFT_PASS}"
+}
+
+test_ns_host_vsock_ns_mode_write_once_ok() {
+ add_namespaces
+
+ for mode in "${NS_MODES[@]}"; do
+ local ns="${mode}0"
+ if ! ns_set_mode "${ns}" "${mode}"; then
+ del_namespaces
+ return "${KSFT_FAIL}"
+ fi
+
+ # try writing again and expect failure
+ if ns_set_mode "${ns}" "${mode}"; then
+ del_namespaces
+ return "${KSFT_FAIL}"
+ fi
+ done
+
+ del_namespaces
+
+ return "${KSFT_PASS}"
+}
+
test_vm_server_host_client() {
if ! vm_vsock_test "init_ns" "server" 2 "${TEST_GUEST_PORT}"; then
return "${KSFT_FAIL}"
@@ -573,6 +641,11 @@ run_shared_vm_tests() {
continue
fi
+ if ! check_netns "${arg}"; then
+ check_result "${KSFT_SKIP}"
+ continue
+ fi
+
run_shared_vm_test "${arg}"
check_result $?
done
@@ -626,6 +699,28 @@ run_shared_vm_test() {
return "${rc}"
}
+run_tests() {
+ for arg in "${ARGS[@]}"; do
+ if shared_vm_test "${arg}"; then
+ continue
+ fi
+
+ if ! check_netns "${arg}"; then
+ check_result "${KSFT_SKIP}"
+ continue
+ fi
+
+ add_namespaces
+
+ name=$(echo "${arg}" | awk '{ print $1 }')
+ log_host "Executing test_${name}"
+ eval test_"${name}"
+ check_result $?
+
+ del_namespaces
+ done
+}
+
BUILD=0
QEMU="qemu-system-$(uname -m)"
@@ -671,6 +766,8 @@ if shared_vm_tests_requested "${ARGS[@]}"; then
terminate_pidfiles "${pidfile}"
fi
+run_tests "${ARGS[@]}"
+
echo "SUMMARY: PASS=${cnt_pass} SKIP=${cnt_skip} FAIL=${cnt_fail}"
echo "Log: ${LOG}"
--
2.47.3
next prev parent reply other threads:[~2025-10-21 23:47 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-21 23:46 [PATCH net-next v7 00/26] vsock: add namespace support to vhost-vsock Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 01/26] vsock: a per-net vsock NS mode state Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 02/26] vsock/virtio: pack struct virtio_vsock_skb_cb Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 03/26] vsock: add netns to vsock skb cb Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 04/26] vsock: add netns to vsock core Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 05/26] vsock/loopback: add netns support Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 06/26] vsock/virtio: add netns to virtio transport common Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 07/26] vhost/vsock: add netns support Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 08/26] selftests/vsock: improve logging in vmtest.sh Bobby Eshleman
2025-10-22 0:01 ` Jakub Kicinski
2025-10-22 0:18 ` Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 09/26] selftests/vsock: make wait_for_listener() work even if pipefail is on Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 10/26] selftests/vsock: reuse logic for vsock_test through wrapper functions Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 11/26] selftests/vsock: avoid multi-VM pidfile collisions with QEMU Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 12/26] selftests/vsock: do not unconditionally die if qemu fails Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 13/26] selftests/vsock: speed up tests by reducing the QEMU pidfile timeout Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 14/26] selftests/vsock: add check_result() for pass/fail counting Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 15/26] selftests/vsock: identify and execute tests that can re-use VM Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 16/26] selftests/vsock: add namespace initialization function Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 17/26] selftests/vsock: remove namespaces in cleanup() Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 18/26] selftests/vsock: prepare vm management helpers for namespaces Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 19/26] selftests/vsock: add BUILD=0 definition Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 20/26] selftests/vsock: avoid false-positives when checking dmesg Bobby Eshleman
2025-10-21 23:47 ` Bobby Eshleman [this message]
2025-10-21 23:47 ` [PATCH net-next v7 22/26] selftests/vsock: add namespace tests for CID collisions Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 23/26] selftests/vsock: add tests for host <-> vm connectivity with namespaces Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 24/26] selftests/vsock: add tests for namespace deletion and mode changes Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 25/26] selftests/vsock: add tests for module loading order Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 26/26] selftests/vsock: add 1.37 to tested virtme-ng versions Bobby Eshleman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251021-vsock-vmtest-v7-21-0661b7b6f081@meta.com \
--to=bobbyeshleman@gmail.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=berrange@redhat.com \
--cc=bobbyeshleman@meta.com \
--cc=bryan-bt.tan@broadcom.com \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=edumazet@google.com \
--cc=eperezma@redhat.com \
--cc=haiyangz@microsoft.com \
--cc=horms@kernel.org \
--cc=jasowang@redhat.com \
--cc=kuba@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sgarzare@redhat.com \
--cc=shuah@kernel.org \
--cc=stefanha@redhat.com \
--cc=virtualization@lists.linux.dev \
--cc=vishnu.dasa@broadcom.com \
--cc=wei.liu@kernel.org \
--cc=xuanzhuo@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox