[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vho
From: |
Jens Freimann |
Subject: |
Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge |
Date: |
Wed, 12 Jul 2017 23:13:05 +0200 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
On Wed, Jul 12, 2017 at 06:10:05PM +0300, Michael S. Tsirkin wrote:
On Wed, Jul 12, 2017 at 11:41:46AM +0200, Jens Freimann wrote:
This implements a testcase for pxe-test using the vhost-user interface. Spawn a
vhost-user-bridge process and connect it to the qemu process.
It is send as an RFC because:
- Patch 3/3: there must be cleaner way to do this.
- Does Patch 1/3 make sense or should I just redirect all output to /dev/null?
- don't hardcode port numbers in qemu cmdline, create socket and pass
fd to -netdev (need to figure out how to do this)
Doesn't this work?
-netdev socket,id=str[,fd=h]
It should. But I get this:
dded sock 5 for watching. max_sock: 5
Sock 3 removed from dispatcher watch.
qemu: error: specified mcastaddr "127.0.0.1" (0x7f000001) does not
contain a multicast address
qemu-system-x86_64: -netdev socket,id=n1,fd=3: Device 'socket' could not
be initialized
Broken pipe
diff --git a/tests/pxe-test.c b/tests/pxe-test.c
index 5a0d182..a14c1d9 100644
--- a/tests/pxe-test.c
+++ b/tests/pxe-test.c
@@ -29,7 +29,7 @@
#define QEMU_CMD_NETDEV " -device virtio-net-pci,netdev=net0 "\
" -netdev vhost-user,id=net0,chardev=%s,vhostforce "\
" -netdev user,id=n0,tftp=./,bootfile=%s "\
- " -netdev
socket,id=n1,udp=localhost:%d,localaddr=localhost:%d"
+ " -netdev socket,id=n1,fd=%d"
#define QEMU_CMD_NET " -device virtio-net-pci,netdev=n0 "\
" -device virtio-net-pci,netdev=n1 "
@@ -72,16 +72,42 @@ static const char *init_hugepagefs(const char *path)
return path;
}
+static int vubr_create_socket(struct sockaddr_in *si_remote, int rport)
+{
+ int sock = -1;
+
+ if (inet_aton("127.0.0.1", (struct in_addr *) &si_remote->sin_addr.s_addr)
== 0) {
+ g_test_message("inet_aton failed\n");
+ return -1;
+ }
+
+ sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
+ if (sock == -1) {
+ g_test_message("socket creation failed\n");
+ }
+ if (connect(sock, (struct sockaddr *) si_remote, sizeof(*si_remote))) {
+ printf("connect, %d", errno);
+ return -1;
+ }
+
+ return sock;
+}
+
static void test_pxe_vhost_user(void)
{
char template[] = "/tmp/vhost-user-bridge-XXXXXX";
char template2[] = "/tmp/hugepages-XXXXXX";
gchar *vubr_args[] = {NULL, NULL, NULL, NULL};
+ struct sockaddr_in si_remote = {
+ .sin_family = AF_INET,
+ .sin_port = htons(RPORT),
+ };
const char *hugefs;
GError *error = NULL;
char *vubr_binary;
char *qemu_args;
GPid vubr_pid;
+ int sock = -1;
tmpfs = mkdtemp(template);
if (!tmpfs) {
tmpfs = mkdtemp(template);
if (!tmpfs) {
@@ -109,9 +135,10 @@ static void test_pxe_vhost_user(void)
root = tmpfs2;
}
+ sock = vubr_create_socket(&si_remote, RPORT);
+
qemu_args = g_strdup_printf(QEMU_CMD, MEMSZ, MEMSZ, (root),
- "char0", vubr_args[2], "char0", disk,
- RPORT, LPORT);
+ "char0", vubr_args[2], "char0", disk, sock);
regards,
Jens
- [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge, (continued)
- [Qemu-devel] [PATCH RFC 2/3] tests/pxe-test: add testcase using vhost-user-bridge, Jens Freimann, 2017/07/12
- [Qemu-devel] [PATCH RFC 3/3] libvhost-user: quit when no more data received, Jens Freimann, 2017/07/12
- Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge, no-reply, 2017/07/12
- Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge, no-reply, 2017/07/12
- Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge, Michael S. Tsirkin, 2017/07/12
- Re: [Qemu-devel] [PATCH RFC 0/3] tests/pxe-testt: add testcase using vhost-user-bridge,
Jens Freimann <=