[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 20/21] tests: add /char/udp test
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH v3 20/21] tests: add /char/udp test |
Date: |
Thu, 16 Mar 2017 13:21:20 +0400 |
Signed-off-by: Marc-André Lureau <address@hidden>
---
tests/test-char.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/tests/test-char.c b/tests/test-char.c
index 9971498391..19707bfcda 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -385,6 +385,51 @@ static void char_pipe_test(void)
}
#endif
+static void char_udp_test(void)
+{
+ struct sockaddr_in addr = { 0, }, other;
+ SocketIdleData d = { 0, };
+ Chardev *chr;
+ CharBackend be;
+ 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 ;
+ addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ addr.sin_port = 0;
+ ret = bind(sock, (struct sockaddr *)&addr, sizeof(addr));
+ g_assert_cmpint(ret, ==, 0);
+ 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);
+
+ d.chr = chr;
+ qemu_chr_fe_init(&be, chr, &error_abort);
+ qemu_chr_fe_set_handlers(&be, socket_can_read_hello, socket_read_hello,
+ 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);
+ ret = sendto(sock, buf, 5, 0, (struct sockaddr *)&other, alen);
+ g_assert_cmpint(ret, ==, 5);
+
+ main_loop();
+
+ close(sock);
+ g_free(tmp);
+}
+
static void char_file_test(void)
{
char *tmp_path = g_dir_make_tmp("qemu-test-char.XXXXXX", NULL);
@@ -529,6 +574,7 @@ int main(int argc, char **argv)
#endif
g_test_add_func("/char/file", char_file_test);
g_test_add_func("/char/socket", char_socket_test);
+ g_test_add_func("/char/udp", char_udp_test);
return g_test_run();
}
--
2.12.0.191.gc5d8de91d
- [Qemu-devel] [PATCH v3 10/21] char: useless NULL check, (continued)
- [Qemu-devel] [PATCH v3 10/21] char: useless NULL check, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 12/21] char-socket: update local address after listen, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 11/21] char-socket: introduce update_disconnected_filename(), Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 13/21] char-socket: add 'addr' property, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 14/21] char-socket: add 'connected' property, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 15/21] char-udp: flush as much buffer as possible, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 16/21] tests: add alias check in /char/ringbuf, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 17/21] tests: add /char/pipe test, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 18/21] tests: add /char/file test, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 19/21] tests: add /char/socket test, Marc-André Lureau, 2017/03/16
- [Qemu-devel] [PATCH v3 20/21] tests: add /char/udp test,
Marc-André Lureau <=
- [Qemu-devel] [PATCH v3 21/21] tests: add /char/console test, Marc-André Lureau, 2017/03/16