diff options
| author | Sumit Bose <sbose@redhat.com> | 2016-01-19 15:04:04 +0100 |
|---|---|---|
| committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-01-19 17:42:20 +0100 |
| commit | 5a7f17aedad34a8618765bc33342c109a6958ab5 (patch) | |
| tree | 50723314a6fa9cb7f702773152323e9e21c1f3d7 /src | |
| parent | 5f7cd30c865046a7ea69944f7e07c85b4c43465a (diff) | |
| download | sssd-5a7f17aedad34a8618765bc33342c109a6958ab5.tar.gz sssd-5a7f17aedad34a8618765bc33342c109a6958ab5.tar.xz sssd-5a7f17aedad34a8618765bc33342c109a6958ab5.zip | |
FO: add fo_get_active_server()
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/providers/fail_over.c | 5 | ||||
| -rw-r--r-- | src/providers/fail_over.h | 2 | ||||
| -rw-r--r-- | src/tests/fail_over-tests.c | 11 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/providers/fail_over.c b/src/providers/fail_over.c index 0b99098a..e945c992 100644 --- a/src/providers/fail_over.c +++ b/src/providers/fail_over.c @@ -1524,6 +1524,11 @@ fo_set_port_status(struct fo_server *server, enum port_status status) } } +struct fo_server *fo_get_active_server(struct fo_service *service) +{ + return service->active_server; +} + void fo_try_next_server(struct fo_service *service) { struct fo_server *server; diff --git a/src/providers/fail_over.h b/src/providers/fail_over.h index 75bff8da..f24b5715 100644 --- a/src/providers/fail_over.h +++ b/src/providers/fail_over.h @@ -208,6 +208,8 @@ void fo_reset_services(struct fo_ctx *fo_ctx); void fo_reset_servers(struct fo_service *svc); +struct fo_server *fo_get_active_server(struct fo_service *service); + bool fo_svc_has_server(struct fo_service *service, struct fo_server *server); /* diff --git a/src/tests/fail_over-tests.c b/src/tests/fail_over-tests.c index 7c296d11..020f9d47 100644 --- a/src/tests/fail_over-tests.c +++ b/src/tests/fail_over-tests.c @@ -50,6 +50,7 @@ struct test_ctx { struct task { struct test_ctx *test_ctx; const char *location; + struct fo_service *service; int recv; int port; int new_server_status; @@ -147,6 +148,7 @@ test_resolve_service_callback(struct tevent_req *req) int port; struct task *task; struct fo_server *server = NULL; + struct fo_server *active_server = NULL; struct resolv_hostent *he; int i; @@ -181,6 +183,13 @@ test_resolve_service_callback(struct tevent_req *req) } } + if (task->new_port_status == PORT_WORKING + && task->new_server_status == SERVER_WORKING) { + active_server = fo_get_active_server(task->service); + fail_if(active_server == NULL, "Missing active server"); + fail_if(server != active_server, "Current server is not active server"); + } + } #define get_request(a, b, c, d, e, f) \ @@ -203,6 +212,7 @@ _get_request(struct test_ctx *test_ctx, struct fo_service *service, task->new_port_status = new_port_status; task->new_server_status = new_server_status; task->location = location; + task->service = service; test_ctx->tasks++; req = fo_resolve_service_send(test_ctx, test_ctx->ev, @@ -242,6 +252,7 @@ START_TEST(test_fo_resolve_service) /* Make requests. */ get_request(ctx, service[0], EOK, 20, PORT_WORKING, -1); + get_request(ctx, service[0], EOK, 20, PORT_WORKING, SERVER_WORKING); get_request(ctx, service[0], EOK, 20, -1, SERVER_NOT_WORKING); get_request(ctx, service[0], EOK, 80, PORT_WORKING, -1); get_request(ctx, service[0], EOK, 80, PORT_NOT_WORKING, -1); |
