[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 07/13] test-char: split char_udp_test
From: |
Marc-André Lureau |
Subject: |
Re: [Qemu-devel] [PATCH v3 07/13] test-char: split char_udp_test |
Date: |
Wed, 31 May 2017 19:22:43 +0000 |
On Tue, May 30, 2017 at 6:02 PM Anton Nefedov <address@hidden>
wrote:
> makes it possible to test the existing chardev-udp
>
> Signed-off-by: Anton Nefedov <address@hidden>
>
Reviewed-by: Marc-André Lureau <address@hidden>
> ---
> tests/test-char.c | 58
> +++++++++++++++++++++++++++++++++++++++----------------
> 1 file changed, 41 insertions(+), 17 deletions(-)
>
> diff --git a/tests/test-char.c b/tests/test-char.c
> index d63d3d2..ad0752a 100644
> --- a/tests/test-char.c
> +++ b/tests/test-char.c
> @@ -413,16 +413,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 ;
> @@ -433,19 +428,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);
> @@ -454,10 +471,17 @@ static void char_udp_test(void)
>
> main_loop();
>
> - close(sock);
> + if (!reuse_chr) {
> + close(sock);
> + qemu_chr_fe_deinit(be);
> + object_unparent(OBJECT(chr));
> + }
> g_free(tmp);
> - qemu_chr_fe_deinit(&be);
> - object_unparent(OBJECT(chr));
> +}
> +
> +static void char_udp_test(void)
> +{
> + char_udp_test_internal(NULL, 0);
> }
>
> static void char_file_test(void)
> --
> 2.7.4
>
>
> --
Marc-André Lureau
- Re: [Qemu-devel] [PATCH v3 03/13] char: chardevice hotswap, (continued)
- [Qemu-devel] [PATCH v3 04/13] char: forbid direct chardevice access for hotswap devices, Anton Nefedov, 2017/05/30
- [Qemu-devel] [PATCH v3 05/13] char: avoid chardevice direct access, Anton Nefedov, 2017/05/30
- [Qemu-devel] [PATCH v3 06/13] test-char: unref chardev-udp after test, Anton Nefedov, 2017/05/30
- [Qemu-devel] [PATCH v3 09/13] test-char: add hotswap test, Anton Nefedov, 2017/05/30
- [Qemu-devel] [PATCH v3 07/13] test-char: split char_udp_test, Anton Nefedov, 2017/05/30
- Re: [Qemu-devel] [PATCH v3 07/13] test-char: split char_udp_test,
Marc-André Lureau <=
- [Qemu-devel] [PATCH v3 08/13] test-char: split char_file_test, Anton Nefedov, 2017/05/30
- [Qemu-devel] [PATCH v3 12/13] serial: move TIOCM update to a separate function, Anton Nefedov, 2017/05/30
- [Qemu-devel] [PATCH v3 10/13] hmp: add hmp analogue for qmp-chardev-change, Anton Nefedov, 2017/05/30
- [Qemu-devel] [PATCH v3 11/13] virtio-console: chardev hotswap support, Anton Nefedov, 2017/05/30
- [Qemu-devel] [PATCH v3 13/13] serial: chardev hotswap support, Anton Nefedov, 2017/05/30