libuv/test
Jamie Davis f401e67b60
test: make test-condvar call uv_cond_wait
Problem:
The condvar tests could pass without uv_cond_wait
(or uv_cond_timedwait) ever being invoked.

Solution:
Introduce semaphores to enforce ordering.
Now there will always be a thread waiting on the condition
when a signal() occurs.

Gotchas:
1. On Windows, waiting for a timeout may return earlier
than requested, depending on the granularity of timer ticks.
2. Timeout bounds are tuned based on our CI machines.

Bonuses:
1. I added additional test cases to complete the test matrix.

2. It seemed to me that several of the condvar tests were redundant,
because they used timing to probabilistically explore cases where there
would be "missed connections" (signal without a waiter).
Because it was not clear to me what the purpose of such tests were,
I have removed them.

Fixes: https://github.com/libuv/libuv/issues/1714
PR-URL: https://github.com/libuv/libuv/pull/1718
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
2018-07-06 23:02:46 +02:00
..
fixtures
benchmark-async-pummel.c src,lib: fix comments 2018-05-22 16:34:33 -04:00
benchmark-async.c
benchmark-fs-stat.c unix,windows: allow NULL loop for sync fs requests 2015-08-18 15:39:21 +02:00
benchmark-getaddrinfo.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-list.h
benchmark-loop-count.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-million-async.c
benchmark-million-timers.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-multi-accept.c
benchmark-ping-pongs.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-pound.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-pump.c test: fix -Wstrict-prototypes warnings 2017-10-05 22:26:55 +02:00
benchmark-sizes.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-spawn.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
benchmark-tcp-write-batch.c
benchmark-thread.c
benchmark-udp-pummel.c
blackhole-server.c
dns-server.c
echo-server.c unix,windows: allow NULL loop for sync fs requests 2015-08-18 15:39:21 +02:00
run-benchmarks.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
run-tests.c test: add test for IPC deadlock on Windows (#1099) 2018-05-29 13:01:59 -07:00
runner-unix.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
runner-unix.h
runner-win.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
runner-win.h win: use the MSVC provided snprintf where possible 2015-09-29 09:01:33 +02:00
runner.c test: no extra new line in skipped test output 2017-11-06 09:33:40 -05:00
runner.h src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
task.h win: move stdint-msvc2008.h to include/uv/ 2018-06-14 18:40:09 +02:00
test-active.c
test-async-null-cb.c sunos: fix cmpxchgi and cmpxchgl type error 2017-07-01 00:24:42 +02:00
test-async.c
test-barrier.c
test-callback-order.c
test-callback-stack.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-close-fd.c
test-close-order.c
test-condvar.c test: make test-condvar call uv_cond_wait 2018-07-06 23:02:46 +02:00
test-connect-unspecified.c test: fix connect_unspecified 2018-03-08 11:37:00 +01:00
test-connection-fail.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-cwd-and-chdir.c
test-default-loop-close.c
test-delayed-accept.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-dlerror.c win: include filename in dlopen error message 2017-07-13 23:06:11 +02:00
test-eintr-handling.c Revert "unix,fs: fix for potential partial reads/writes" 2018-01-19 17:51:08 +01:00
test-embed.c build: GNU/kFreeBSD support 2016-08-20 08:55:30 +02:00
test-emfile.c zos: add support for new platform 2016-08-19 01:34:29 +02:00
test-env-vars.c unix: return UV_EINVAL for NULL env name 2017-03-14 08:28:46 +01:00
test-error.c src: add new error apis to prevent memory leaks 2018-07-06 19:35:21 +02:00
test-fail-always.c
test-fork.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-fs-copyfile.c unix: return UV_ENOTSUP on FICLONE_FORCE failure 2018-06-04 09:19:06 -04:00
test-fs-event.c win: use long directory name for handle->dirw 2018-03-19 10:20:56 +01:00
test-fs-poll.c unix, win: consistently null-terminate buffers 2016-03-03 09:20:41 +01:00
test-fs.c unix,win: add uv_fs_lchown() 2018-06-19 10:05:01 -04:00
test-get-currentexe.c
test-get-loadavg.c test: fix -Wtautological-pointer-compare warnings 2015-11-18 22:37:16 +01:00
test-get-memory.c
test-get-passwd.c test: handle root home directories 2016-04-08 11:08:46 -04:00
test-getaddrinfo.c win: fix free() on bad input in uv_getaddrinfo() 2017-01-08 16:29:37 -05:00
test-gethostname.c unix,win: add uv_os_gethostname() 2017-05-18 10:27:47 -04:00
test-getnameinfo.c test: fix -Wtautological-pointer-compare warnings 2015-11-18 22:37:16 +01:00
test-getsockname.c
test-getters-setters.c core: add getter/setter functions for easier ABI compat 2017-12-02 09:51:25 +01:00
test-handle-fileno.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-homedir.c test: handle root home directories 2016-04-08 11:08:46 -04:00
test-hrtime.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-idle.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-ip4-addr.c
test-ip6-addr.c unix,win: add uv_if_{indextoname,indextoiid} 2017-11-06 09:54:47 -05:00
test-ipc-heavy-traffic-deadlock-bug.c test: add test for IPC deadlock on Windows (#1099) 2018-05-29 13:01:59 -07:00
test-ipc-send-recv.c test: improve output from IPC test helpers 2018-05-29 13:01:44 -07:00
test-ipc.c test: improve output from IPC test helpers 2018-05-29 13:01:44 -07:00
test-list.h test: make test-condvar call uv_cond_wait 2018-07-06 23:02:46 +02:00
test-loop-alive.c
test-loop-close.c test: add threadpool init/teardown test 2017-12-06 23:47:38 +01:00
test-loop-configure.c
test-loop-handles.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-loop-stop.c
test-loop-time.c
test-multiple-listen.c
test-mutexes.c unix,win: add uv_mutex_init_recursive() 2017-10-02 10:01:09 -04:00
test-osx-select.c test: remove LOG and LOGF variadic macros 2015-04-12 18:44:34 +02:00
test-pass-always.c
test-ping-pong.c test: add vectored uv_write() ping-pong tests 2018-05-29 13:01:23 -07:00
test-pipe-bind-error.c test: skip self-connecting tests on cygwin 2017-05-21 16:12:30 +02:00
test-pipe-close-stdout-read-stdin.c test: fix race condition in pipe-close-stdout 2016-01-21 09:08:41 +01:00
test-pipe-connect-error.c
test-pipe-connect-multiple.c test: skip self-connecting tests on cygwin 2017-05-21 16:12:30 +02:00
test-pipe-connect-prepare.c unix: don't block for io if any io handle is primed 2015-05-12 07:37:26 +02:00
test-pipe-getsockname.c test: skip self-connecting tests on cygwin 2017-05-21 16:12:30 +02:00
test-pipe-pending-instances.c win: fix setting pipe pending instances after bind 2015-08-24 23:20:35 +02:00
test-pipe-sendmsg.c cygwin: disable non-functional ipc handle send 2017-05-21 16:12:28 +02:00
test-pipe-server-close.c test: skip self-connecting tests on cygwin 2017-05-21 16:12:30 +02:00
test-pipe-set-fchmod.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-pipe-set-non-blocking.c test: fix race condition in multithreaded test 2015-03-11 15:42:34 +01:00
test-platform-output.c unix,win: add uv_os_getpid() 2017-11-30 20:11:21 -05:00
test-poll-close-doesnt-corrupt-stack.c test: silence build warnings 2016-06-03 01:18:17 +02:00
test-poll-close.c
test-poll-closesocket.c test: silence build warnings 2016-06-03 01:18:17 +02:00
test-poll-oob.c poll: add support for OOB TCP and GPIO interrupts 2017-07-12 23:04:34 +02:00
test-poll.c test,freebsd: fix flaky poll tests 2018-03-31 16:59:41 -04:00
test-process-title-threadsafe.c test: speedup process-title-threadsafe on macOS 2018-06-05 11:30:28 -04:00
test-process-title.c cygwin: implement support for cygwin and msys2 2017-05-21 16:12:21 +02:00
test-queue-foreach-delete.c unix: fix uv_fs_event_stop() from fs_event_cb 2015-12-08 10:03:01 +01:00
test-ref.c test: factor out fsevents skip explanation 2017-05-21 16:12:08 +02:00
test-run-nowait.c
test-run-once.c
test-semaphore.c
test-shutdown-close.c
test-shutdown-eof.c
test-shutdown-twice.c unix,test: deadstore fixes 2017-04-05 09:57:20 -04:00
test-signal-multiple-loops.c src,lib: fix comments 2018-05-22 16:34:33 -04:00
test-signal.c win, process: uv_kill improvements 2017-12-07 14:00:05 +01:00
test-socket-buffer-size.c
test-spawn.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-stdio-over-pipes.c
test-tcp-alloc-cb-fail.c unix,win: make on_alloc_cb failures more resilient 2016-08-17 09:57:55 +02:00
test-tcp-bind6-error.c
test-tcp-bind-error.c Revert "Revert "unix,tcp: avoid marking server sockets connected"" 2018-02-25 18:45:05 +01:00
test-tcp-close-accept.c test: close server before initiating new connection 2016-07-18 10:22:36 +01:00
test-tcp-close-while-connecting.c test: fix tcp_close_while_connecting CI failures 2016-10-14 01:57:15 +02:00
test-tcp-close.c
test-tcp-connect6-error.c
test-tcp-connect-error-after-write.c
test-tcp-connect-error.c
test-tcp-connect-timeout.c tests: skip some tests when network is unreachable 2015-07-13 10:28:46 +02:00
test-tcp-create-socket-early.c cygwin: implement support for cygwin and msys2 2017-05-21 16:12:21 +02:00
test-tcp-flags.c
test-tcp-oob.c test: fix tcp_oob test flakiness 2018-02-28 21:58:56 +01:00
test-tcp-open.c unix: catch some cases of watching fd twice 2018-05-30 13:24:19 +02:00
test-tcp-read-stop.c
test-tcp-shutdown-after-write.c
test-tcp-try-write.c stream: support empty uv_try_write on unix 2015-10-04 18:06:08 -04:00
test-tcp-unexpected-read.c
test-tcp-write-after-connect.c
test-tcp-write-fail.c win, test: fix compilation warning 2015-09-29 09:57:27 +02:00
test-tcp-write-queue-order.c test: increase connection timeout to 1 second 2018-03-31 17:05:26 -04:00
test-tcp-write-to-half-open-connection.c
test-tcp-writealot.c test: fix test-tcp-writealot flakiness on arm 2016-09-12 08:33:41 +02:00
test-thread-equal.c
test-thread.c win: issue memory barrier in uv_thread_join() 2017-11-20 20:59:33 +01:00
test-threadpool-cancel.c test: fix -Wformat warning 2017-02-08 12:47:50 +01:00
test-threadpool.c
test-timer-again.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-timer-from-check.c
test-timer.c win: wait for full timeout duration 2015-12-16 12:08:46 +01:00
test-tmpdir.c test: add missing copyright header 2016-03-24 13:17:31 -04:00
test-tty.c unix,win: merge handle flags 2018-06-29 22:24:52 +02:00
test-udp-alloc-cb-fail.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-udp-bind.c
test-udp-create-socket-early.c cygwin: implement support for cygwin and msys2 2017-05-21 16:12:21 +02:00
test-udp-dgram-too-big.c
test-udp-ipv6.c test,openbsd: use RETURN_SKIP in UDP IPv6 tests 2018-04-17 11:48:55 +02:00
test-udp-multicast-interface6.c build: GNU/kFreeBSD support 2016-08-20 08:55:30 +02:00
test-udp-multicast-interface.c test: allow multicast not permitted status 2018-01-09 14:32:35 +01:00
test-udp-multicast-join6.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-udp-multicast-join.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-udp-multicast-ttl.c test: allow multicast not permitted status 2018-01-09 14:32:35 +01:00
test-udp-open.c unix: catch some cases of watching fd twice 2018-05-30 13:24:19 +02:00
test-udp-options.c win: allow setting udp socket options before bind 2018-06-04 09:19:06 -04:00
test-udp-send-and-recv.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-udp-send-hang-loop.c test: allow net unreachable status in udp test 2018-01-09 15:09:46 +01:00
test-udp-send-immediate.c src,test: fix idiosyncratic comment style 2018-05-29 11:56:49 -07:00
test-udp-send-unreachable.c
test-udp-try-send.c win,udp: implements uv_udp_try_send 2017-07-01 17:20:15 +02:00
test-walk-handles.c
test-watcher-cross-stop.c cygwin: implement support for cygwin and msys2 2017-05-21 16:12:21 +02:00
test.gyp test: add test for IPC deadlock on Windows (#1099) 2018-05-29 13:01:59 -07:00