Message ID | 20240508074457.12367-13-sgarzare@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | vhost-user: support any POSIX system (tested on macOS, FreeBSD, OpenBSD) | expand |
On 08/05/2024 09.44, Stefano Garzarella wrote: > `memory-backend-shm` can be used with vhost-user devices, so let's > add a new test case for it. > > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> > --- > tests/qtest/vhost-user-test.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c > index d4e437265f..8c1d903b2a 100644 > --- a/tests/qtest/vhost-user-test.c > +++ b/tests/qtest/vhost-user-test.c > @@ -44,6 +44,8 @@ > "mem-path=%s,share=on -numa node,memdev=mem" > #define QEMU_CMD_MEMFD " -m %d -object memory-backend-memfd,id=mem,size=%dM," \ > " -numa node,memdev=mem" > +#define QEMU_CMD_SHM " -m %d -object memory-backend-shm,id=mem,size=%dM," \ > + " -numa node,memdev=mem" > #define QEMU_CMD_CHR " -chardev socket,id=%s,path=%s%s" > #define QEMU_CMD_NETDEV " -netdev vhost-user,id=hs0,chardev=%s,vhostforce=on" > > @@ -195,6 +197,7 @@ enum test_memfd { > TEST_MEMFD_AUTO, > TEST_MEMFD_YES, > TEST_MEMFD_NO, > + TEST_MEMFD_SHM, > }; > > static void append_vhost_net_opts(TestServer *s, GString *cmd_line, > @@ -228,6 +231,8 @@ static void append_mem_opts(TestServer *server, GString *cmd_line, > > if (memfd == TEST_MEMFD_YES) { > g_string_append_printf(cmd_line, QEMU_CMD_MEMFD, size, size); > + } else if (memfd == TEST_MEMFD_SHM) { > + g_string_append_printf(cmd_line, QEMU_CMD_SHM, size, size); > } else { > const char *root = init_hugepagefs() ? : server->tmpfs; > > @@ -788,6 +793,19 @@ static void *vhost_user_test_setup_memfd(GString *cmd_line, void *arg) > return server; > } > > +static void *vhost_user_test_setup_shm(GString *cmd_line, void *arg) > +{ > + TestServer *server = test_server_new("vhost-user-test", arg); > + test_server_listen(server); > + > + append_mem_opts(server, cmd_line, 256, TEST_MEMFD_SHM); > + server->vu_ops->append_opts(server, cmd_line, ""); > + > + g_test_queue_destroy(vhost_user_test_cleanup, server); > + > + return server; > +} > + > static void test_read_guest_mem(void *obj, void *arg, QGuestAllocator *alloc) > { > TestServer *server = arg; > @@ -1081,6 +1099,11 @@ static void register_vhost_user_test(void) > "virtio-net", > test_read_guest_mem, &opts); > > + opts.before = vhost_user_test_setup_shm; > + qos_add_test("vhost-user/read-guest-mem/shm", > + "virtio-net", > + test_read_guest_mem, &opts); > + > if (qemu_memfd_check(MFD_ALLOW_SEALING)) { > opts.before = vhost_user_test_setup_memfd; > qos_add_test("vhost-user/read-guest-mem/memfd", Acked-by: Thomas Huth <thuth@redhat.com>
diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c index d4e437265f..8c1d903b2a 100644 --- a/tests/qtest/vhost-user-test.c +++ b/tests/qtest/vhost-user-test.c @@ -44,6 +44,8 @@ "mem-path=%s,share=on -numa node,memdev=mem" #define QEMU_CMD_MEMFD " -m %d -object memory-backend-memfd,id=mem,size=%dM," \ " -numa node,memdev=mem" +#define QEMU_CMD_SHM " -m %d -object memory-backend-shm,id=mem,size=%dM," \ + " -numa node,memdev=mem" #define QEMU_CMD_CHR " -chardev socket,id=%s,path=%s%s" #define QEMU_CMD_NETDEV " -netdev vhost-user,id=hs0,chardev=%s,vhostforce=on" @@ -195,6 +197,7 @@ enum test_memfd { TEST_MEMFD_AUTO, TEST_MEMFD_YES, TEST_MEMFD_NO, + TEST_MEMFD_SHM, }; static void append_vhost_net_opts(TestServer *s, GString *cmd_line, @@ -228,6 +231,8 @@ static void append_mem_opts(TestServer *server, GString *cmd_line, if (memfd == TEST_MEMFD_YES) { g_string_append_printf(cmd_line, QEMU_CMD_MEMFD, size, size); + } else if (memfd == TEST_MEMFD_SHM) { + g_string_append_printf(cmd_line, QEMU_CMD_SHM, size, size); } else { const char *root = init_hugepagefs() ? : server->tmpfs; @@ -788,6 +793,19 @@ static void *vhost_user_test_setup_memfd(GString *cmd_line, void *arg) return server; } +static void *vhost_user_test_setup_shm(GString *cmd_line, void *arg) +{ + TestServer *server = test_server_new("vhost-user-test", arg); + test_server_listen(server); + + append_mem_opts(server, cmd_line, 256, TEST_MEMFD_SHM); + server->vu_ops->append_opts(server, cmd_line, ""); + + g_test_queue_destroy(vhost_user_test_cleanup, server); + + return server; +} + static void test_read_guest_mem(void *obj, void *arg, QGuestAllocator *alloc) { TestServer *server = arg; @@ -1081,6 +1099,11 @@ static void register_vhost_user_test(void) "virtio-net", test_read_guest_mem, &opts); + opts.before = vhost_user_test_setup_shm; + qos_add_test("vhost-user/read-guest-mem/shm", + "virtio-net", + test_read_guest_mem, &opts); + if (qemu_memfd_check(MFD_ALLOW_SEALING)) { opts.before = vhost_user_test_setup_memfd; qos_add_test("vhost-user/read-guest-mem/memfd",
`memory-backend-shm` can be used with vhost-user devices, so let's add a new test case for it. Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> --- tests/qtest/vhost-user-test.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)