From: Anton Nefedov <anton.nefedov@virtuozzo.com>
To: qemu-devel@nongnu.org
Cc: den@virtuozzo.com, pbonzini@redhat.com,
marcandre.lureau@redhat.com, amit@kernel.org, mst@redhat.com,
Anton Nefedov <anton.nefedov@virtuozzo.com>
Subject: [Qemu-devel] [PATCH v6 07/13] test-char: split char_udp_test
Date: Thu, 6 Jul 2017 15:08:54 +0300 [thread overview]
Message-ID: <1499342940-56739-8-git-send-email-anton.nefedov@virtuozzo.com> (raw)
In-Reply-To: <1499342940-56739-1-git-send-email-anton.nefedov@virtuozzo.com>
makes it possible to test the existing chardev-udp
Signed-off-by: Anton Nefedov <anton.nefedov@virtuozzo.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
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 6add1aa..1265224 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -411,16 +411,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 ;
@@ -431,19 +426,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);
@@ -452,9 +469,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
--
2.7.4
next prev parent reply other threads:[~2017-07-06 12:10 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-06 12:08 [Qemu-devel] [PATCH v6 00/13] chardevice hotswap Anton Nefedov
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 01/13] char: move QemuOpts->ChardevBackend translation to a separate func Anton Nefedov
2017-07-06 12:27 ` Marc-André Lureau
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 02/13] char: add backend hotswap handler Anton Nefedov
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 03/13] char: chardevice hotswap Anton Nefedov
2017-07-06 12:53 ` Marc-André Lureau
2017-07-06 12:53 ` Marc-André Lureau
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 04/13] char: forbid direct chardevice access for hotswap devices Anton Nefedov
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 05/13] char: avoid chardevice direct access Anton Nefedov
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 06/13] test-char: destroy chardev-udp after test Anton Nefedov
2017-07-06 12:08 ` Anton Nefedov [this message]
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 08/13] test-char: split char_file_test Anton Nefedov
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 09/13] test-char: add hotswap test Anton Nefedov
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 10/13] hmp: add hmp analogue for qmp-chardev-change Anton Nefedov
2017-07-06 13:04 ` Marc-André Lureau
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 11/13] virtio-console: chardev hotswap support Anton Nefedov
2017-07-06 12:08 ` [Qemu-devel] [PATCH v6 12/13] serial: move TIOCM update to a separate function Anton Nefedov
2017-07-06 12:09 ` [Qemu-devel] [PATCH v6 13/13] serial: chardev hotswap support Anton Nefedov
2017-07-14 9:29 ` [Qemu-devel] [PATCH v6 00/13] chardevice hotswap Denis V. Lunev
2017-07-14 10:20 ` Paolo Bonzini
2017-07-14 10:24 ` Denis V. Lunev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1499342940-56739-8-git-send-email-anton.nefedov@virtuozzo.com \
--to=anton.nefedov@virtuozzo.com \
--cc=amit@kernel.org \
--cc=den@virtuozzo.com \
--cc=marcandre.lureau@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).