summaryrefslogtreecommitdiff
path: root/deps/uv/test/test-barrier.c
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2014-06-27 04:44:36 +0400
committerFedor Indutny <fedor@indutny.com>2014-06-27 04:44:36 +0400
commit1a1b1a75347a4d68aedefb71b8bacce050b1768b (patch)
tree91c44f684db1e8aacc879e2a9cededbb126eba8d /deps/uv/test/test-barrier.c
parent35b9580cd84452dd76aa19715479a47074d1761b (diff)
downloadandroid-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.c39
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;
}