diff options
author | Fedor Indutny <fedor@indutny.com> | 2014-06-27 04:44:36 +0400 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2014-06-27 04:44:36 +0400 |
commit | 1a1b1a75347a4d68aedefb71b8bacce050b1768b (patch) | |
tree | 91c44f684db1e8aacc879e2a9cededbb126eba8d /deps/uv/test/test-barrier.c | |
parent | 35b9580cd84452dd76aa19715479a47074d1761b (diff) | |
download | android-node-v8-1a1b1a75347a4d68aedefb71b8bacce050b1768b.tar.gz android-node-v8-1a1b1a75347a4d68aedefb71b8bacce050b1768b.tar.bz2 android-node-v8-1a1b1a75347a4d68aedefb71b8bacce050b1768b.zip |
deps: update libuv to v0.11.26
Diffstat (limited to 'deps/uv/test/test-barrier.c')
-rw-r--r-- | deps/uv/test/test-barrier.c | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/deps/uv/test/test-barrier.c b/deps/uv/test/test-barrier.c index 97df704c0e..25a55d6cfe 100644 --- a/deps/uv/test/test-barrier.c +++ b/deps/uv/test/test-barrier.c @@ -29,6 +29,8 @@ typedef struct { uv_barrier_t barrier; int delay; volatile int posted; + int main_barrier_wait_rval; + int worker_barrier_wait_rval; } worker_config; @@ -38,7 +40,11 @@ static void worker(void* arg) { if (c->delay) uv_sleep(c->delay); - uv_barrier_wait(&c->barrier); + c->worker_barrier_wait_rval = uv_barrier_wait(&c->barrier); + if (c->worker_barrier_wait_rval == 1) { + uv_barrier_destroy(&c->barrier); + ASSERT(c->main_barrier_wait_rval == 0); + } } @@ -47,15 +53,22 @@ TEST_IMPL(barrier_1) { worker_config wc; memset(&wc, 0, sizeof(wc)); + wc.main_barrier_wait_rval = -1; + wc.worker_barrier_wait_rval = -1; ASSERT(0 == uv_barrier_init(&wc.barrier, 2)); ASSERT(0 == uv_thread_create(&thread, worker, &wc)); uv_sleep(100); - uv_barrier_wait(&wc.barrier); + + wc.main_barrier_wait_rval = uv_barrier_wait(&wc.barrier); + if (wc.main_barrier_wait_rval == 1) { + uv_barrier_destroy(&wc.barrier); + ASSERT(wc.worker_barrier_wait_rval == 0); + } ASSERT(0 == uv_thread_join(&thread)); - uv_barrier_destroy(&wc.barrier); + ASSERT(1 == (wc.main_barrier_wait_rval ^ wc.worker_barrier_wait_rval)); return 0; } @@ -67,14 +80,20 @@ TEST_IMPL(barrier_2) { memset(&wc, 0, sizeof(wc)); wc.delay = 100; + wc.main_barrier_wait_rval = -1; + wc.worker_barrier_wait_rval = -1; ASSERT(0 == uv_barrier_init(&wc.barrier, 2)); ASSERT(0 == uv_thread_create(&thread, worker, &wc)); - uv_barrier_wait(&wc.barrier); + wc.main_barrier_wait_rval = uv_barrier_wait(&wc.barrier); + if (wc.main_barrier_wait_rval == 1) { + uv_barrier_destroy(&wc.barrier); + ASSERT(wc.worker_barrier_wait_rval == 0); + } ASSERT(0 == uv_thread_join(&thread)); - uv_barrier_destroy(&wc.barrier); + ASSERT(1 == (wc.main_barrier_wait_rval ^ wc.worker_barrier_wait_rval)); return 0; } @@ -85,14 +104,20 @@ TEST_IMPL(barrier_3) { worker_config wc; memset(&wc, 0, sizeof(wc)); + wc.main_barrier_wait_rval = -1; + wc.worker_barrier_wait_rval = -1; ASSERT(0 == uv_barrier_init(&wc.barrier, 2)); ASSERT(0 == uv_thread_create(&thread, worker, &wc)); - uv_barrier_wait(&wc.barrier); + wc.main_barrier_wait_rval = uv_barrier_wait(&wc.barrier); + if (wc.main_barrier_wait_rval == 1) { + uv_barrier_destroy(&wc.barrier); + ASSERT(wc.worker_barrier_wait_rval == 0); + } ASSERT(0 == uv_thread_join(&thread)); - uv_barrier_destroy(&wc.barrier); + ASSERT(1 == (wc.main_barrier_wait_rval ^ wc.worker_barrier_wait_rval)); return 0; } |