forked from cory/tildefriends
libuv 1.47.0.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4615 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
142
deps/libuv/test/test-signal.c
vendored
142
deps/libuv/test/test-signal.c
vendored
@@ -31,12 +31,12 @@ TEST_IMPL(kill_invalid_signum) {
|
||||
|
||||
pid = uv_os_getpid();
|
||||
|
||||
ASSERT(uv_kill(pid, -1) == UV_EINVAL);
|
||||
ASSERT_EQ(uv_kill(pid, -1), UV_EINVAL);
|
||||
#ifdef _WIN32
|
||||
/* NSIG is not available on all platforms. */
|
||||
ASSERT(uv_kill(pid, NSIG) == UV_EINVAL);
|
||||
ASSERT_EQ(uv_kill(pid, NSIG), UV_EINVAL);
|
||||
#endif
|
||||
ASSERT(uv_kill(pid, 4096) == UV_EINVAL);
|
||||
ASSERT_EQ(uv_kill(pid, 4096), UV_EINVAL);
|
||||
|
||||
MAKE_VALGRIND_HAPPY(uv_default_loop());
|
||||
return 0;
|
||||
@@ -55,20 +55,20 @@ TEST_IMPL(win32_signum_number) {
|
||||
loop = uv_default_loop();
|
||||
uv_signal_init(loop, &signal);
|
||||
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, 0) == UV_EINVAL);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGINT) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGBREAK) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGHUP) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGWINCH) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGILL) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGABRT_COMPAT) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGFPE) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGSEGV) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGTERM) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, SIGABRT) == 0);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, -1) == UV_EINVAL);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, NSIG) == UV_EINVAL);
|
||||
ASSERT(uv_signal_start(&signal, signum_test_cb, 1024) == UV_EINVAL);
|
||||
ASSERT_EQ(uv_signal_start(&signal, signum_test_cb, 0), UV_EINVAL);
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGINT));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGBREAK));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGHUP));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGWINCH));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGILL));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGABRT_COMPAT));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGFPE));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGSEGV));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGTERM));
|
||||
ASSERT_OK(uv_signal_start(&signal, signum_test_cb, SIGABRT));
|
||||
ASSERT_EQ(uv_signal_start(&signal, signum_test_cb, -1), UV_EINVAL);
|
||||
ASSERT_EQ(uv_signal_start(&signal, signum_test_cb, NSIG), UV_EINVAL);
|
||||
ASSERT_EQ(uv_signal_start(&signal, signum_test_cb, 1024), UV_EINVAL);
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
}
|
||||
@@ -100,7 +100,7 @@ struct signal_ctx {
|
||||
|
||||
static void signal_cb(uv_signal_t* handle, int signum) {
|
||||
struct signal_ctx* ctx = container_of(handle, struct signal_ctx, handle);
|
||||
ASSERT(signum == ctx->signum);
|
||||
ASSERT_EQ(signum, ctx->signum);
|
||||
if (++ctx->ncalls == NSIGNALS) {
|
||||
if (ctx->stop_or_close == STOP)
|
||||
uv_signal_stop(handle);
|
||||
@@ -113,8 +113,8 @@ static void signal_cb(uv_signal_t* handle, int signum) {
|
||||
|
||||
static void signal_cb_one_shot(uv_signal_t* handle, int signum) {
|
||||
struct signal_ctx* ctx = container_of(handle, struct signal_ctx, handle);
|
||||
ASSERT(signum == ctx->signum);
|
||||
ASSERT(++ctx->ncalls == 1);
|
||||
ASSERT_EQ(signum, ctx->signum);
|
||||
ASSERT_EQ(1, ++ctx->ncalls);
|
||||
if (ctx->stop_or_close == CLOSE)
|
||||
uv_close((uv_handle_t*)handle, NULL);
|
||||
}
|
||||
@@ -138,18 +138,18 @@ static void start_watcher(uv_loop_t* loop,
|
||||
ctx->signum = signum;
|
||||
ctx->stop_or_close = CLOSE;
|
||||
ctx->one_shot = one_shot;
|
||||
ASSERT(0 == uv_signal_init(loop, &ctx->handle));
|
||||
ASSERT_OK(uv_signal_init(loop, &ctx->handle));
|
||||
if (one_shot)
|
||||
ASSERT(0 == uv_signal_start_oneshot(&ctx->handle, signal_cb_one_shot, signum));
|
||||
ASSERT_OK(uv_signal_start_oneshot(&ctx->handle, signal_cb_one_shot, signum));
|
||||
else
|
||||
ASSERT(0 == uv_signal_start(&ctx->handle, signal_cb, signum));
|
||||
ASSERT_OK(uv_signal_start(&ctx->handle, signal_cb, signum));
|
||||
}
|
||||
|
||||
static void start_timer(uv_loop_t* loop, int signum, struct timer_ctx* ctx) {
|
||||
ctx->ncalls = 0;
|
||||
ctx->signum = signum;
|
||||
ASSERT(0 == uv_timer_init(loop, &ctx->handle));
|
||||
ASSERT(0 == uv_timer_start(&ctx->handle, timer_cb, 5, 5));
|
||||
ASSERT_OK(uv_timer_init(loop, &ctx->handle));
|
||||
ASSERT_OK(uv_timer_start(&ctx->handle, timer_cb, 5, 5));
|
||||
}
|
||||
|
||||
|
||||
@@ -162,23 +162,23 @@ TEST_IMPL(we_get_signal) {
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
start_watcher(loop, SIGCHLD, &sc, 0);
|
||||
sc.stop_or_close = STOP; /* stop, don't close the signal handle */
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc.ncalls == NSIGNALS);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_EQ(sc.ncalls, NSIGNALS);
|
||||
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc.ncalls == NSIGNALS);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_EQ(sc.ncalls, NSIGNALS);
|
||||
|
||||
sc.ncalls = 0;
|
||||
sc.stop_or_close = CLOSE; /* now close it when it's done */
|
||||
uv_signal_start(&sc.handle, signal_cb, SIGCHLD);
|
||||
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc.ncalls == NSIGNALS);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_EQ(sc.ncalls, NSIGNALS);
|
||||
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
@@ -198,13 +198,13 @@ TEST_IMPL(we_get_signals) {
|
||||
start_watcher(loop, SIGUSR2, sc + 3, 0);
|
||||
start_timer(loop, SIGUSR1, tc + 0);
|
||||
start_timer(loop, SIGUSR2, tc + 1);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sc); i++)
|
||||
ASSERT(sc[i].ncalls == NSIGNALS);
|
||||
ASSERT_EQ(sc[i].ncalls, NSIGNALS);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(tc); i++)
|
||||
ASSERT(tc[i].ncalls == NSIGNALS);
|
||||
ASSERT_EQ(tc[i].ncalls, NSIGNALS);
|
||||
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
@@ -219,21 +219,21 @@ TEST_IMPL(we_get_signal_one_shot) {
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
start_watcher(loop, SIGCHLD, &sc, 1);
|
||||
sc.stop_or_close = NOOP;
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc.ncalls == 1);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_EQ(1, sc.ncalls);
|
||||
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(sc.ncalls == 1);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(1, sc.ncalls);
|
||||
|
||||
sc.ncalls = 0;
|
||||
sc.stop_or_close = CLOSE; /* now close it when it's done */
|
||||
uv_signal_start_oneshot(&sc.handle, signal_cb_one_shot, SIGCHLD);
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc.ncalls == 1);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_EQ(1, sc.ncalls);
|
||||
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
@@ -252,10 +252,10 @@ TEST_IMPL(we_get_signals_mixed) {
|
||||
start_watcher(loop, SIGCHLD, sc + 1, 1);
|
||||
sc[0].stop_or_close = CLOSE;
|
||||
sc[1].stop_or_close = CLOSE;
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc[0].ncalls == 1);
|
||||
ASSERT(sc[1].ncalls == 1);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_EQ(1, sc[0].ncalls);
|
||||
ASSERT_EQ(1, sc[1].ncalls);
|
||||
|
||||
/* 2 one-shot, 1 normal then remove normal */
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
@@ -265,11 +265,11 @@ TEST_IMPL(we_get_signals_mixed) {
|
||||
sc[1].stop_or_close = CLOSE;
|
||||
start_watcher(loop, SIGCHLD, sc + 2, 0);
|
||||
uv_close((uv_handle_t*)&(sc[2]).handle, NULL);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc[0].ncalls == 1);
|
||||
ASSERT(sc[1].ncalls == 1);
|
||||
ASSERT(sc[2].ncalls == 0);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_EQ(1, sc[0].ncalls);
|
||||
ASSERT_EQ(1, sc[1].ncalls);
|
||||
ASSERT_OK(sc[2].ncalls);
|
||||
|
||||
/* 2 normal, 1 one-shot then remove one-shot */
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
@@ -279,11 +279,11 @@ TEST_IMPL(we_get_signals_mixed) {
|
||||
sc[1].stop_or_close = CLOSE;
|
||||
start_watcher(loop, SIGCHLD, sc + 2, 1);
|
||||
uv_close((uv_handle_t*)&(sc[2]).handle, NULL);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc[0].ncalls == NSIGNALS);
|
||||
ASSERT(sc[1].ncalls == NSIGNALS);
|
||||
ASSERT(sc[2].ncalls == 0);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_EQ(sc[0].ncalls, NSIGNALS);
|
||||
ASSERT_EQ(sc[1].ncalls, NSIGNALS);
|
||||
ASSERT_OK(sc[2].ncalls);
|
||||
|
||||
/* 2 normal, 2 one-shot then remove 2 normal */
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
@@ -295,12 +295,12 @@ TEST_IMPL(we_get_signals_mixed) {
|
||||
sc[3].stop_or_close = CLOSE;
|
||||
uv_close((uv_handle_t*)&(sc[0]).handle, NULL);
|
||||
uv_close((uv_handle_t*)&(sc[1]).handle, NULL);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc[0].ncalls == 0);
|
||||
ASSERT(sc[1].ncalls == 0);
|
||||
ASSERT(sc[2].ncalls == 1);
|
||||
ASSERT(sc[2].ncalls == 1);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_OK(sc[0].ncalls);
|
||||
ASSERT_OK(sc[1].ncalls);
|
||||
ASSERT_EQ(1, sc[2].ncalls);
|
||||
ASSERT_EQ(1, sc[2].ncalls);
|
||||
|
||||
/* 1 normal, 1 one-shot, 2 normal then remove 1st normal, 2nd normal */
|
||||
start_timer(loop, SIGCHLD, &tc);
|
||||
@@ -311,12 +311,12 @@ TEST_IMPL(we_get_signals_mixed) {
|
||||
sc[3].stop_or_close = CLOSE;
|
||||
uv_close((uv_handle_t*)&(sc[0]).handle, NULL);
|
||||
uv_close((uv_handle_t*)&(sc[2]).handle, NULL);
|
||||
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT(tc.ncalls == NSIGNALS);
|
||||
ASSERT(sc[0].ncalls == 0);
|
||||
ASSERT(sc[1].ncalls == 1);
|
||||
ASSERT(sc[2].ncalls == 0);
|
||||
ASSERT(sc[3].ncalls == NSIGNALS);
|
||||
ASSERT_OK(uv_run(loop, UV_RUN_DEFAULT));
|
||||
ASSERT_EQ(tc.ncalls, NSIGNALS);
|
||||
ASSERT_OK(sc[0].ncalls);
|
||||
ASSERT_EQ(1, sc[1].ncalls);
|
||||
ASSERT_OK(sc[2].ncalls);
|
||||
ASSERT_EQ(sc[3].ncalls, NSIGNALS);
|
||||
|
||||
MAKE_VALGRIND_HAPPY(loop);
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user