[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 14/41] test-char: split char_udp_test
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 14/41] test-char: split char_udp_test |
Date: |
Thu, 13 Jul 2017 16:24:07 +0200 |
From: Anton Nefedov <address@hidden>
makes it possible to test the existing chardev-udp
Signed-off-by: Anton Nefedov <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
tests/test-char.c | 56 +++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 40 insertions(+), 16 deletions(-)
diff --git a/tests/test-char.c b/tests/test-char.c
index 536536e..e0bde5e 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -407,16 +407,11 @@ static void char_pipe_test(void)
}
#endif
-static void char_udp_test(void)
+static int make_udp_socket(int *port)
{
- struct sockaddr_in addr = { 0, }, other;
- SocketIdleData d = { 0, };
- Chardev *chr;
- CharBackend be;
+ struct sockaddr_in addr = { 0, };
socklen_t alen = sizeof(addr);
int ret, sock = qemu_socket(PF_INET, SOCK_DGRAM, 0);
- char buf[10];
- char *tmp;
g_assert_cmpint(sock, >, 0);
addr.sin_family = AF_INET ;
@@ -427,19 +422,41 @@ static void char_udp_test(void)
ret = getsockname(sock, (struct sockaddr *)&addr, &alen);
g_assert_cmpint(ret, ==, 0);
- tmp = g_strdup_printf("udp:127.0.0.1:%d",
- ntohs(addr.sin_port));
- chr = qemu_chr_new("client", tmp);
- g_assert_nonnull(chr);
+ *port = ntohs(addr.sin_port);
+ return sock;
+}
+
+static void char_udp_test_internal(Chardev *reuse_chr, int sock)
+{
+ struct sockaddr_in other;
+ SocketIdleData d = { 0, };
+ Chardev *chr;
+ CharBackend *be;
+ socklen_t alen = sizeof(other);
+ int ret;
+ char buf[10];
+ char *tmp = NULL;
+
+ if (reuse_chr) {
+ chr = reuse_chr;
+ be = chr->be;
+ } else {
+ int port;
+ sock = make_udp_socket(&port);
+ tmp = g_strdup_printf("udp:127.0.0.1:%d", port);
+ chr = qemu_chr_new("client", tmp);
+ g_assert_nonnull(chr);
+
+ be = g_alloca(sizeof(CharBackend));
+ qemu_chr_fe_init(be, chr, &error_abort);
+ }
d.chr = chr;
- qemu_chr_fe_init(&be, chr, &error_abort);
- qemu_chr_fe_set_handlers(&be, socket_can_read_hello, socket_read_hello,
+ qemu_chr_fe_set_handlers(be, socket_can_read_hello, socket_read_hello,
NULL, NULL, &d, NULL, true);
ret = qemu_chr_write_all(chr, (uint8_t *)"hello", 5);
g_assert_cmpint(ret, ==, 5);
- alen = sizeof(addr);
ret = recvfrom(sock, buf, sizeof(buf), 0,
(struct sockaddr *)&other, &alen);
g_assert_cmpint(ret, ==, 5);
@@ -448,9 +465,16 @@ static void char_udp_test(void)
main_loop();
- close(sock);
+ if (!reuse_chr) {
+ close(sock);
+ qemu_chr_fe_deinit(be, true);
+ }
g_free(tmp);
- qemu_chr_fe_deinit(&be, true);
+}
+
+static void char_udp_test(void)
+{
+ char_udp_test_internal(NULL, 0);
}
#ifdef HAVE_CHARDEV_SERIAL
--
1.8.3.1
- [Qemu-devel] [PULL 01/41] build: add -Wexpansion-to-defined, (continued)
- [Qemu-devel] [PULL 01/41] build: add -Wexpansion-to-defined, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 06/41] MAINTAINERS: add entry for "Unimplemented" device, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 02/41] MAINTAINERS: update TCG entries, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 07/41] chardev: block during sync read, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 05/41] MAINTAINERS: update TCI entry, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 08/41] char: move QemuOpts->ChardevBackend translation to a separate func, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 10/41] char: chardevice hotswap, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 13/41] test-char: destroy chardev-udp after test, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 12/41] char: avoid chardevice direct access, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 16/41] test-char: add hotswap test, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 14/41] test-char: split char_udp_test,
Paolo Bonzini <=
- [Qemu-devel] [PULL 17/41] hmp: add hmp analogue for qmp-chardev-change, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 15/41] test-char: split char_file_test, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 19/41] serial: move TIOCM update to a separate function, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 21/41] exec: use qemu_ram_ptr_length to access guest ram, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 23/41] mttcg/i386: Patch instruction using async_safe_* framework, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 27/41] gdbstub: don't fail on vCont; C04:0; c packets, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 25/41] gdbstub: rename cpu_index -> cpu_gdb_index, Paolo Bonzini, 2017/07/13
- [Qemu-devel] [PULL 28/41] chardev: fix parallel device can't be reconnect, Paolo Bonzini, 2017/07/13