From caed34f45fa028ded4743ce1230d9d26feece003 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim-Philipp=20M=C3=BCller?= Date: Tue, 28 Oct 2014 00:04:05 +0000 Subject: [PATCH] tests: fix fdsrc test corner case Make pipe socket non-blocking, so we don't end up being blocked in a write on the pipe while the src is eos and not reading data any more, and thus we never unblock and never notice that we're done. This would happen quite reliably on the rpi. --- tests/check/elements/fdsrc.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/check/elements/fdsrc.c b/tests/check/elements/fdsrc.c index 12e9d10..abcf951 100644 --- a/tests/check/elements/fdsrc.c +++ b/tests/check/elements/fdsrc.c @@ -87,9 +87,18 @@ GST_START_TEST (test_num_buffers) GST_STATE_PLAYING) == GST_STATE_CHANGE_SUCCESS, "could not set to playing"); +#if defined (G_OS_UNIX) && defined (O_NONBLOCK) + { + int flags; + + flags = fcntl (pipe_fd[1], F_GETFL, 0); + fcntl (pipe_fd[1], F_SETFL, flags | O_NONBLOCK); + } +#endif + memset (data, 0, 4096); while (!have_eos) { - fail_if (write (pipe_fd[1], data, 4096) < 0); + write (pipe_fd[1], data, 4096); g_usleep (100); } -- 2.7.4