Commit a4a65c6f authored by Bobby Eshleman's avatar Bobby Eshleman Committed by Jakub Kicinski
Browse files

selftests/vsock: add initial vmtest.sh for vsock



This commit introduces a new vmtest.sh runner for vsock.

It uses virtme-ng/qemu to run tests in a VM. The tests validate G2H,
H2G, and loopback. The testing tools from tools/testing/vsock/ are
reused. Currently, only vsock_test is used.

VMCI and hyperv support is included in the config file to be built with
the -b option, though not used in the tests.

Only tested on x86.

To run:

  $ make -C tools/testing/selftests TARGETS=vsock
  $ tools/testing/selftests/vsock/vmtest.sh

or

  $ make -C tools/testing/selftests TARGETS=vsock run_tests

Example runs (after make -C tools/testing/selftests TARGETS=vsock):

$ ./tools/testing/selftests/vsock/vmtest.sh
1..3
ok 0 vm_server_host_client
ok 1 vm_client_host_server
ok 2 vm_loopback
SUMMARY: PASS=3 SKIP=0 FAIL=0
Log: /tmp/vsock_vmtest_m7DI.log

$ ./tools/testing/selftests/vsock/vmtest.sh vm_loopback
1..1
ok 0 vm_loopback
SUMMARY: PASS=1 SKIP=0 FAIL=0
Log: /tmp/vsock_vmtest_a1IO.log

$ mkdir -p ~/scratch
$ make -C tools/testing/selftests install TARGETS=vsock INSTALL_PATH=~/scratch
 [... omitted ...]
$ cd ~/scratch
$ ./run_kselftest.sh
 TAP version 13
 1..1
 # timeout set to 300
 # selftests: vsock: vmtest.sh
 # 1..3
 # ok 0 vm_server_host_client
 # ok 1 vm_client_host_server
 # ok 2 vm_loopback
 # SUMMARY: PASS=3 SKIP=0 FAIL=0
 # Log: /tmp/vsock_vmtest_svEl.log
 ok 1 selftests: vsock: vmtest.sh

Future work can include vsock_diag_test.

Because vsock requires a VM to test anything other than loopback, this
patch adds vmtest.sh as a kselftest itself. This is different than other
systems that have a "vmtest.sh", where it is used as a utility script to
spin up a VM to run the selftests as a guest (but isn't hooked into
kselftest).

Signed-off-by: default avatarBobby Eshleman <bobbyeshleman@gmail.com>
Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
Link: https://patch.msgid.link/20250609-vsock-vmtest-v10-1-7f37198e1cd4@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 0097c419
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -26323,6 +26323,7 @@ F: include/uapi/linux/vm_sockets.h
F:	include/uapi/linux/vm_sockets_diag.h
F:	include/uapi/linux/vsockmon.h
F:	net/vmw_vsock/
F:	tools/testing/selftests/vsock/
F:	tools/testing/vsock/
VMALLOC
+2 −0
Original line number Diff line number Diff line
vmtest.log
vsock_test
+17 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0

CURDIR := $(abspath .)
TOOLSDIR := $(abspath ../../..)
VSOCK_TEST_DIR := $(TOOLSDIR)/testing/vsock
VSOCK_TEST_SRCS := $(wildcard $(VSOCK_TEST_DIR)/*.c $(VSOCK_TEST_DIR)/*.h)

$(OUTPUT)/vsock_test: $(VSOCK_TEST_DIR)/vsock_test
	install -m 755 $< $@

$(VSOCK_TEST_DIR)/vsock_test: $(VSOCK_TEST_SRCS)
	$(MAKE) -C $(VSOCK_TEST_DIR) vsock_test
TEST_PROGS += vmtest.sh
TEST_GEN_FILES := vsock_test

include ../lib.mk
+111 −0
Original line number Diff line number Diff line
CONFIG_BLK_DEV_INITRD=y
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_JIT=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_BPF_EVENTS=y
CONFIG_FTRACE_SYSCALLS=y
CONFIG_FUNCTION_TRACER=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_DYNAMIC_FTRACE=y
CONFIG_HAVE_KPROBES=y
CONFIG_KPROBES=y
CONFIG_KPROBE_EVENTS=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_UPROBES=y
CONFIG_UPROBE_EVENTS=y
CONFIG_DEBUG_FS=y
CONFIG_FW_CFG_SYSFS=y
CONFIG_FW_CFG_SYSFS_CMDLINE=y
CONFIG_DRM=y
CONFIG_DRM_VIRTIO_GPU=y
CONFIG_DRM_VIRTIO_GPU_KMS=y
CONFIG_DRM_BOCHS=y
CONFIG_VIRTIO_IOMMU=y
CONFIG_SOUND=y
CONFIG_SND=y
CONFIG_SND_SEQUENCER=y
CONFIG_SND_PCI=y
CONFIG_SND_INTEL8X0=y
CONFIG_SND_HDA_CODEC_REALTEK=y
CONFIG_SECURITYFS=y
CONFIG_CGROUP_BPF=y
CONFIG_SQUASHFS=y
CONFIG_SQUASHFS_XZ=y
CONFIG_SQUASHFS_ZSTD=y
CONFIG_FUSE_FS=y
CONFIG_VIRTIO_FS=y
CONFIG_SERIO=y
CONFIG_PCI=y
CONFIG_INPUT=y
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_X86_VERBOSE_BOOTUP=y
CONFIG_VGA_CONSOLE=y
CONFIG_FB=y
CONFIG_FB_VESA=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_DRV_CMOS=y
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_KVM_GUEST=y
CONFIG_KVM=y
CONFIG_KVM_INTEL=y
CONFIG_KVM_AMD=y
CONFIG_VSOCKETS=y
CONFIG_VSOCKETS_DIAG=y
CONFIG_VSOCKETS_LOOPBACK=y
CONFIG_VMWARE_VMCI_VSOCKETS=y
CONFIG_VIRTIO_VSOCKETS=y
CONFIG_VIRTIO_VSOCKETS_COMMON=y
CONFIG_HYPERV_VSOCKETS=y
CONFIG_VMWARE_VMCI=y
CONFIG_VHOST_VSOCK=y
CONFIG_HYPERV=y
CONFIG_UEVENT_HELPER=n
CONFIG_VIRTIO=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_MMIO=y
CONFIG_VIRTIO_BALLOON=y
CONFIG_NET=y
CONFIG_NET_CORE=y
CONFIG_NETDEVICES=y
CONFIG_NETWORK_FILESYSTEMS=y
CONFIG_INET=y
CONFIG_NET_9P=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_9P_FS=y
CONFIG_VIRTIO_NET=y
CONFIG_CMDLINE_OVERRIDE=n
CONFIG_BINFMT_SCRIPT=y
CONFIG_SHMEM=y
CONFIG_TMPFS=y
CONFIG_UNIX=y
CONFIG_MODULE_SIG_FORCE=n
CONFIG_DEVTMPFS=y
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_UNIX98_PTYS=y
CONFIG_EARLY_PRINTK=y
CONFIG_INOTIFY_USER=y
CONFIG_BLOCK=y
CONFIG_SCSI_LOWLEVEL=y
CONFIG_SCSI=y
CONFIG_SCSI_VIRTIO=y
CONFIG_BLK_DEV_SD=y
CONFIG_VIRTIO_CONSOLE=y
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_CORE=y
CONFIG_I6300ESB_WDT=y
CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y
CONFIG_OVERLAY_FS=y
CONFIG_DAX=y
CONFIG_DAX_DRIVER=y
CONFIG_FS_DAX=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_ZONE_DEVICE=y
+1 −0
Original line number Diff line number Diff line
timeout=300
Loading