diff options
author | Amitay Isaacs <amitay@gmail.com> | 2017-11-10 12:10:05 +1100 |
---|---|---|
committer | Martin Schwenke <martins@samba.org> | 2017-11-21 05:03:16 +0100 |
commit | fbb5ac8404525a0828504cd744992dfcb7c8e216 (patch) | |
tree | a7376cd8aeb429e6ca28f28bbb08782685d1687d /ctdb/tests/src | |
parent | a6296bad87ac16cb0a39d35aa8cf0db2f85ec0d3 (diff) | |
download | samba-fbb5ac8404525a0828504cd744992dfcb7c8e216.tar.gz |
ctdb-common: Return status from sock_daemon startup()/reconfigure()
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb/tests/src')
-rw-r--r-- | ctdb/tests/src/sock_daemon_test.c | 54 |
1 files changed, 42 insertions, 12 deletions
diff --git a/ctdb/tests/src/sock_daemon_test.c b/ctdb/tests/src/sock_daemon_test.c index 95045d175ff..82f4f783a1e 100644 --- a/ctdb/tests/src/sock_daemon_test.c +++ b/ctdb/tests/src/sock_daemon_test.c @@ -63,10 +63,10 @@ static bool dummy_wait_recv(struct tevent_req *req, int *perr) return true; } -static struct sock_daemon_funcs test1_funcs = { - .wait_send = dummy_wait_send, - .wait_recv = dummy_wait_recv, -}; +static int test1_startup_fail(void *private_data) +{ + return 1; +} static struct tevent_req *dummy_read_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, @@ -101,26 +101,45 @@ static void test1(TALLOC_CTX *mem_ctx, const char *pidfile, { struct tevent_context *ev; struct sock_daemon_context *sockd; + struct sock_daemon_funcs test1_funcs; struct stat st; int ret; + ev = tevent_context_init(mem_ctx); + assert(ev != NULL); + + test1_funcs = (struct sock_daemon_funcs){ + .startup = test1_startup_fail, + }; + ret = sock_daemon_setup(mem_ctx, "test1", "file:", "NOTICE", - &test1_funcs, discard_const(sockpath), &sockd); + &test1_funcs, NULL, &sockd); assert(ret == 0); assert(sockd != NULL); ret = stat(pidfile, &st); assert(ret == -1); + ret = sock_daemon_run(ev, sockd, NULL, false, false, -1); + assert(ret == EIO); + talloc_free(sockd); + + test1_funcs = (struct sock_daemon_funcs){ + .wait_send = dummy_wait_send, + .wait_recv = dummy_wait_recv, + }; + + ret = sock_daemon_setup(mem_ctx, "test1", "file:", "NOTICE", + &test1_funcs, discard_const(sockpath), &sockd); + assert(ret == 0); + assert(sockd != NULL); + ret = sock_daemon_add_unix(sockd, sockpath, &dummy_socket_funcs, NULL); assert(ret == 0); ret = stat(sockpath, &st); assert(ret == -1); - ev = tevent_context_init(mem_ctx); - assert(ev != NULL); - ret = sock_daemon_run(ev, sockd, NULL, false, false, -1); assert(ret == 0); @@ -134,7 +153,7 @@ static void test1(TALLOC_CTX *mem_ctx, const char *pidfile, * exit code */ -static void test2_startup(void *private_data) +static int test2_startup(void *private_data) { int fd = *(int *)private_data; int ret = 1; @@ -142,16 +161,25 @@ static void test2_startup(void *private_data) nwritten = write(fd, &ret, sizeof(ret)); assert(nwritten == sizeof(ret)); + return 0; } -static void test2_reconfigure(void *private_data) +static int test2_reconfigure(void *private_data) { + static bool first_time = true; int fd = *(int *)private_data; int ret = 2; ssize_t nwritten; nwritten = write(fd, &ret, sizeof(ret)); assert(nwritten == sizeof(ret)); + + if (first_time) { + first_time = false; + return 1; + } + + return 0; } static void test2_shutdown(void *private_data) @@ -649,7 +677,7 @@ static struct sock_socket_funcs test5_client_funcs = { .read_recv = test5_read_recv, }; -static void test5_startup(void *private_data) +static int test5_startup(void *private_data) { int fd = *(int *)private_data; int ret = 1; @@ -658,6 +686,7 @@ static void test5_startup(void *private_data) nwritten = write(fd, &ret, sizeof(ret)); assert(nwritten == sizeof(ret)); close(fd); + return 0; } static struct sock_daemon_funcs test5_funcs = { @@ -881,7 +910,7 @@ static struct sock_socket_funcs test6_client_funcs = { .read_recv = test6_read_recv, }; -static void test6_startup(void *private_data) +static int test6_startup(void *private_data) { struct test6_server_state *server_state = (struct test6_server_state *)private_data; @@ -892,6 +921,7 @@ static void test6_startup(void *private_data) assert(nwritten == sizeof(ret)); close(server_state->fd); server_state->fd = -1; + return 0; } struct test6_wait_state { |