changeset 22577:c6c9c24d6182

lib: iostream-multiplex tests - Fix hangs by setting the pipe fds non-blocking
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 05 Oct 2017 20:25:29 +0300
parents 707ae9de3812
children 1ac298b49c89
files src/lib/test-istream-multiplex.c src/lib/test-multiplex.c src/lib/test-ostream-multiplex.c
diffstat 3 files changed, 11 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/test-istream-multiplex.c	Thu Oct 05 20:24:11 2017 +0300
+++ b/src/lib/test-istream-multiplex.c	Thu Oct 05 20:25:29 2017 +0300
@@ -2,6 +2,7 @@
 
 #include "test-lib.h"
 #include "ioloop.h"
+#include "fd-set-nonblock.h"
 #include "str.h"
 #include "crc32.h"
 #include "randgen.h"
@@ -284,6 +285,8 @@
 
 	int fds[2];
 	test_assert(pipe(fds) == 0);
+	fd_set_nonblock(fds[0], TRUE);
+	fd_set_nonblock(fds[1], TRUE);
 	struct ostream *os = o_stream_create_fd(fds[1], (size_t)-1, FALSE);
 	struct istream *is = i_stream_create_fd(fds[0], 10 + rand() % 10, FALSE);
 
--- a/src/lib/test-multiplex.c	Thu Oct 05 20:24:11 2017 +0300
+++ b/src/lib/test-multiplex.c	Thu Oct 05 20:25:29 2017 +0300
@@ -3,6 +3,7 @@
 #include "test-lib.h"
 #include "ioloop.h"
 #include "str.h"
+#include "fd-set-nonblock.h"
 #include "istream.h"
 #include "istream-multiplex.h"
 #include "ostream.h"
@@ -83,6 +84,8 @@
 	channel->io = io_add_istream(is, test_istream_multiplex_stream_read,
 				     channel);
 	test_assert(pipe(channel->fds) == 0);
+	fd_set_nonblock(channel->fds[0], TRUE);
+	fd_set_nonblock(channel->fds[1], TRUE);
 	channel->in_alt = i_stream_create_fd(channel->fds[0], (size_t)-1, FALSE);
 	channel->out_alt = o_stream_create_fd(channel->fds[1], IO_BLOCK_SIZE, FALSE);
 	channel->io_alt = io_add_istream(channel->in_alt, test_istream_read_alt,
@@ -119,6 +122,8 @@
 
 	int fds[2];
 	test_assert(pipe(fds) == 0);
+	fd_set_nonblock(fds[0], TRUE);
+	fd_set_nonblock(fds[1], TRUE);
 	struct ostream *os = o_stream_create_fd(fds[1], (size_t)-1, FALSE);
 	struct istream *is = i_stream_create_fd(fds[0], (size_t)-1, FALSE);
 
--- a/src/lib/test-ostream-multiplex.c	Thu Oct 05 20:24:11 2017 +0300
+++ b/src/lib/test-ostream-multiplex.c	Thu Oct 05 20:25:29 2017 +0300
@@ -3,6 +3,7 @@
 #include "test-lib.h"
 #include "randgen.h"
 #include "ioloop.h"
+#include "fd-set-nonblock.h"
 #include "str.h"
 #include "istream.h"
 #include "ostream-private.h"
@@ -108,6 +109,8 @@
 
 	int fds[2];
 	test_assert(pipe(fds) == 0);
+	fd_set_nonblock(fds[0], TRUE);
+	fd_set_nonblock(fds[1], TRUE);
 	struct ostream *os = o_stream_create_fd(fds[1], (size_t)-1, FALSE);
 	struct istream *is = i_stream_create_fd(fds[0], (size_t)-1, FALSE);