From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60EF22F12DA for ; Tue, 21 Oct 2025 23:47:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761090445; cv=none; b=uWIc681UpNFaxbR8ZVP6bUx+iob/nVa7LhLewbEwnDZ/gQFgveXNe47lTnexFVE8rOUv6F6JOOvNjGWAgbXk8unqJ/5LTUPhAEn45cgII9iv1I9/yILLPc8edeDZ6a01ZAqMkWLsX5uu7H0AFhqMR4qV3a8RKmKhVgSQjGzNXds= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761090445; c=relaxed/simple; bh=lSmQpIOx2H+wwJpTKFrN8deypuk5nLfSt39JjhPsaKs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EuDU2+ORojDwTv0qNb2AAnv2+W95KCBLhE37S+u84E73PXaSQDNfN0at+g/5FAsf1SpTL/R2YYDsSkaVoWmi/36R50mldnVz6IjLGTO4DXs2F5YqQOeOG3xwGcJ2tkv2L5hfxcUvVWPnPUxvXnrk45bLW62sp1CvaTJVQK9GNus= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=f9Kph4+0; arc=none smtp.client-ip=209.85.210.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="f9Kph4+0" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-77f67ba775aso8083635b3a.3 for ; Tue, 21 Oct 2025 16:47:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761090436; x=1761695236; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=C11MVom9GcVVigp1JH83uYh4dJ6GwBGVsbP0u+3A/D8=; b=f9Kph4+0zDcKIBxfP0+EgWXBXt+CyK8sMV/E5hmt7T3LgSiCfpUV064w/7RaIn8TfH adbMJdAhV5KTscE7C3b/PVvSLCUzaHfOhHZI1S5Y5YoZzSiBMw3k+tD82HERenF1uaZa VLtfGPecQE1mve70L7MibxDd0GU0wDAI9T+QRoO2YZRpJEmxgZM/sUyC7B+/yEsaKqiz znL1lmBQEzO92yuAdmwcVhElCRNYwi0gN2zuLJevsCevD87AXgkil5Wr8LkxM8bd6zJ3 wLiFZiSe9j6pNV39d6iTcczvLGUIbZKRKvibTz9s7KX4IYw5VjpLmB0BVZuEtrDGuIMA UpTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761090436; x=1761695236; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=C11MVom9GcVVigp1JH83uYh4dJ6GwBGVsbP0u+3A/D8=; b=Xb99QpQ7T4yRugYC/TgZSXCnZwrqbgIoJbVMpYguvxzSg1/9yPRmZNGE/7frnvKLJc rDexKesnddge+wzmWdiccrQkiXpe4AvrgX+jwYIb73RtZ7w/Z0w1Bl2XkRYtKtXYcZyX jxRhQUiNVEKvXzlU2m1rg1oZe7Uhf5Cl0O8IFL6HTfTPpN78VkDO0jjxCbA4pjVYz4Q9 /z61V5r99r025g6aR/PQL9VMzQlzHO5y/7IRonKo0K6buBVenvJNDyfkYq8a1KkptivM TlZOcUUw9V6pST4EqYBFnrCsIbkiBLNwBuCTkEyp7YZ4WlmW3Od6LyEz6/KAJogKoetk oQlQ== X-Forwarded-Encrypted: i=1; AJvYcCVq691an9d6z5lfOt4OLSCZzU7kmhM2bK7gB7Cpin01/x84TcdHN3bfJ47AU+5XeejZ/9pzRVQhj9QVyvo=@vger.kernel.org X-Gm-Message-State: AOJu0YwFXJsx+cSInh5eHZggOIUCc0Eab9ciO+RsAMK7UyKSHv4RFFWl quAcd7hbv6JDPHXd2fEsZV+VWI3yv6duzy07Nwff8wX7qw1rgwL18d+o X-Gm-Gg: ASbGncuzrUknWhKX3gb+bjiBdg3Q7RSLdL5MXf7nZ7FfXIp4D+nNZAh61IK7xyt7REJ LNZW/v1DN05aMWUWa2XVF8P0lTsf8JOvSrqZ57SXfa5DwggdPmGA0B/UqoLoTwIPT82RPTG++Bs j9nv89zSNLfDulboA122ncI7Qhi1qBinLTaZsXtpAklUjndvL+om404NvlTuXIknIyNKAKYIzly itffbX7at6cHI+LMU4yeEKTmsuWqtgMdHDCdmH8IR2ZK8T+dPds8jZ8drtZa8xkaP5RwfJTIAL6 PN5wu4OoYcyy/mLfMzq9HRb+3QD+jv7sbfkDZPZPavYygyzf1C1YV9bfjx9kkmcCOnk8+RXTXB1 WkgXkI/ZGYyRKcvYVrPBNiv6A75aDCNHGlSb413aPO0zJmdno0zOguWRO6dSYaf1MJM68VGIesA == X-Google-Smtp-Source: AGHT+IFruEIphVWMplpeA2jQqUDuG27XuGu5lChapLWZrI9BuGwBvnIU/lhkYltuDcRgwCsCwNZgMg== X-Received: by 2002:a05:6a21:8881:b0:33a:86cd:1553 with SMTP id adf61e73a8af0-33a86dc7f16mr2340882637.12.1761090436048; Tue, 21 Oct 2025 16:47:16 -0700 (PDT) Received: from localhost ([2a03:2880:2ff:74::]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b6cdafadb8dsm833596a12.1.2025.10.21.16.47.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Oct 2025 16:47:15 -0700 (PDT) From: Bobby Eshleman Date: Tue, 21 Oct 2025 16:47:01 -0700 Subject: [PATCH net-next v7 18/26] selftests/vsock: prepare vm management helpers for namespaces Precedence: bulk X-Mailing-List: linux-hyperv@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20251021-vsock-vmtest-v7-18-0661b7b6f081@meta.com> References: <20251021-vsock-vmtest-v7-0-0661b7b6f081@meta.com> In-Reply-To: <20251021-vsock-vmtest-v7-0-0661b7b6f081@meta.com> To: Stefano Garzarella , Shuah Khan , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Stefan Hajnoczi , "Michael S. Tsirkin" , Jason Wang , Xuan Zhuo , =?utf-8?q?Eugenio_P=C3=A9rez?= , "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Bryan Tan , Vishnu Dasa , Broadcom internal kernel review list , Bobby Eshleman 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 X-Mailer: b4 0.13.0 From: Bobby Eshleman Add namespace support to vm management, ssh helpers, and vsock_test wrapper functions. This is in preparation for adding namespace tests that rely on SSH and spinning up VMs in different namespaces. The functions still work correctly within the init ns, though the caller must now pass "init_ns" as the requested namespace. Signed-off-by: Bobby Eshleman --- tools/testing/selftests/vsock/vmtest.sh | 102 ++++++++++++++++++++++---------- 1 file changed, 72 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/vsock/vmtest.sh b/tools/testing/selftests/vsock/vmtest.sh index 49b3dd78efad..e8f938419e8e 100755 --- a/tools/testing/selftests/vsock/vmtest.sh +++ b/tools/testing/selftests/vsock/vmtest.sh @@ -141,7 +141,18 @@ ns_set_mode() { } vm_ssh() { - ssh -q -o UserKnownHostsFile=/dev/null -p ${SSH_HOST_PORT} localhost "$@" + local ns_exec + + if [[ "${1}" == init_ns ]]; then + ns_exec="" + else + ns_exec="ip netns exec ${1}" + fi + + shift + + ${ns_exec} ssh -q -o UserKnownHostsFile=/dev/null -p ${SSH_HOST_PORT} localhost $* + return $? } @@ -252,10 +263,12 @@ terminate_pidfiles() { vm_start() { local pidfile=$1 + local ns=$2 local logfile=/dev/null local verbose_opt="" local kernel_opt="" local qemu_opts="" + local ns_exec="" local qemu qemu=$(command -v "${QEMU}") @@ -276,7 +289,11 @@ vm_start() { kernel_opt="${KERNEL_CHECKOUT}" fi - vng \ + if [[ "${ns}" != "init_ns" ]]; then + ns_exec="ip netns exec ${ns}" + fi + + ${ns_exec} vng \ --run \ ${kernel_opt} \ ${verbose_opt} \ @@ -291,6 +308,7 @@ vm_start() { } vm_wait_for_ssh() { + local ns=$1 local i i=0 @@ -298,7 +316,8 @@ vm_wait_for_ssh() { if [[ ${i} -gt ${WAIT_PERIOD_MAX} ]]; then die "Timed out waiting for guest ssh" fi - if vm_ssh -- true; then + + if vm_ssh "${ns}" -- true; then break fi i=$(( i + 1 )) @@ -342,28 +361,42 @@ wait_for_listener() } vm_wait_for_listener() { - local port=$1 + local ns=$1 + local port=$2 - vm_ssh <&1 | log_host rc=$? else - ${VSOCK_TEST} \ + ${cmd} \ --mode=server \ --peer-cid="${cid}" \ --control-port="${port}" 2>&1 | log_host & @@ -418,7 +457,7 @@ host_vsock_test() { return $rc fi - host_wait_for_listener "${port}" "${WAIT_PERIOD}" "${WAIT_PERIOD_MAX}" + host_wait_for_listener "${ns}" "${port}" "${WAIT_PERIOD}" "${WAIT_PERIOD_MAX}" rc=$? fi set +o pipefail @@ -462,11 +501,11 @@ log_guest() { } test_vm_server_host_client() { - if ! vm_vsock_test "server" 2 "${TEST_GUEST_PORT}"; then + if ! vm_vsock_test "init_ns" "server" 2 "${TEST_GUEST_PORT}"; then return "${KSFT_FAIL}" fi - if ! host_vsock_test "127.0.0.1" "${VSOCK_CID}" "${TEST_HOST_PORT}"; then + if ! host_vsock_test "init_ns" "127.0.0.1" "${VSOCK_CID}" "${TEST_HOST_PORT}"; then return "${KSFT_FAIL}" fi @@ -474,11 +513,11 @@ test_vm_server_host_client() { } test_vm_client_host_server() { - if ! host_vsock_test "server" "${VSOCK_CID}" "${TEST_HOST_PORT_LISTENER}"; then + if ! host_vsock_test "init_ns" "server" "${VSOCK_CID}" "${TEST_HOST_PORT_LISTENER}"; then return "${KSFT_FAIL}" fi - if ! vm_vsock_test "10.0.2.2" 2 "${TEST_HOST_PORT_LISTENER}"; then + if ! vm_vsock_test "init_ns" "10.0.2.2" 2 "${TEST_HOST_PORT_LISTENER}"; then return "${KSFT_FAIL}" fi @@ -488,11 +527,14 @@ test_vm_client_host_server() { test_vm_loopback() { local port=60000 # non-forwarded local port - if ! vm_vsock_test "server" 1 "${port}"; then + vm_ssh "init_ns" -- modprobe vsock_loopback &> /dev/null || : + + if ! vm_vsock_test "init_ns" "server" 1 "${port}"; then return "${KSFT_FAIL}" fi - if ! vm_vsock_test "127.0.0.1" 1 "${port}"; then + + if ! vm_vsock_test "init_ns" "127.0.0.1" 1 "${port}"; then return "${KSFT_FAIL}" fi @@ -550,8 +592,8 @@ run_shared_vm_test() { host_oops_cnt_before=$(dmesg | grep -c -i 'Oops') host_warn_cnt_before=$(dmesg --level=warn | wc -l) - vm_oops_cnt_before=$(vm_ssh -- dmesg | grep -c -i 'Oops') - vm_warn_cnt_before=$(vm_ssh -- dmesg --level=warn | wc -l) + vm_oops_cnt_before=$(vm_ssh "init_ns" -- dmesg | grep -c -i 'Oops') + vm_warn_cnt_before=$(vm_ssh "init_ns" -- dmesg --level=warn | wc -l) name=$(echo "${1}" | awk '{ print $1 }') eval test_"${name}" @@ -569,13 +611,13 @@ run_shared_vm_test() { rc=$KSFT_FAIL fi - vm_oops_cnt_after=$(vm_ssh -- dmesg | grep -i 'Oops' | wc -l) + vm_oops_cnt_after=$(vm_ssh "init_ns" -- dmesg | grep -i 'Oops' | wc -l) if [[ ${vm_oops_cnt_after} -gt ${vm_oops_cnt_before} ]]; then echo "FAIL: kernel oops detected on vm" | log_host rc=$KSFT_FAIL fi - vm_warn_cnt_after=$(vm_ssh -- dmesg --level=warn | wc -l) + vm_warn_cnt_after=$(vm_ssh "init_ns" -- dmesg --level=warn | wc -l) if [[ ${vm_warn_cnt_after} -gt ${vm_warn_cnt_before} ]]; then echo "FAIL: kernel warning detected on vm" | log_host rc=$KSFT_FAIL @@ -620,8 +662,8 @@ cnt_total=0 if shared_vm_tests_requested "${ARGS[@]}"; then log_host "Booting up VM" pidfile=$(mktemp $PIDFILE_TEMPLATE) - vm_start "${pidfile}" - vm_wait_for_ssh + vm_start "${pidfile}" "init_ns" + vm_wait_for_ssh "init_ns" log_host "VM booted up" run_shared_vm_tests "${ARGS[@]}" -- 2.47.3