aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/util/test_tcp_server.c
diff options
context:
space:
mode:
authorGravatar yang-g <yangg@google.com>2015-11-21 12:33:22 -0800
committerGravatar yang-g <yangg@google.com>2015-11-21 12:33:22 -0800
commitf8843fb58c44f34654353d9a43a1266ae091725a (patch)
treebdd9576f7c11710faa54cd3ff90d1d6d414f3bbd /test/core/util/test_tcp_server.c
parent3ff9727a373e5e8819b9db288df99f8d7f68270e (diff)
fix build and windows test
Diffstat (limited to 'test/core/util/test_tcp_server.c')
-rw-r--r--test/core/util/test_tcp_server.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/test/core/util/test_tcp_server.c b/test/core/util/test_tcp_server.c
index e78d830058..c700d3637f 100644
--- a/test/core/util/test_tcp_server.c
+++ b/test/core/util/test_tcp_server.c
@@ -49,6 +49,7 @@ void test_tcp_server_init(test_tcp_server *server,
grpc_tcp_server_cb on_connect, void *user_data) {
grpc_init();
server->tcp_server = NULL;
+ server->shutdown = 0;
grpc_pollset_init(&server->pollset);
server->pollsets[0] = &server->pollset;
server->on_connect = on_connect;
@@ -90,16 +91,29 @@ void test_tcp_server_poll(test_tcp_server *server, int seconds) {
grpc_exec_ctx_finish(&exec_ctx);
}
-static void do_nothing(grpc_exec_ctx *exec_ctx, void *ignored, int success) {}
+static void on_server_destroyed(grpc_exec_ctx *exec_ctx, void *data,
+ int success) {
+ test_tcp_server *server = data;
+ server->shutdown = 1;
+}
+
+static void do_nothing(grpc_exec_ctx *exec_ctx, void *arg, int success) {}
void test_tcp_server_destroy(test_tcp_server *server) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
- grpc_closure do_nothing_closure[2];
- grpc_closure_init(&do_nothing_closure[0], do_nothing, NULL);
- grpc_closure_init(&do_nothing_closure[1], do_nothing, NULL);
- grpc_tcp_server_destroy(&exec_ctx, server->tcp_server,
- &do_nothing_closure[0]);
- grpc_pollset_shutdown(&exec_ctx, &server->pollset, &do_nothing_closure[1]);
+ gpr_timespec shutdown_deadline;
+ grpc_closure server_shutdown_cb;
+ grpc_closure do_nothing_cb;
+ grpc_closure_init(&server_shutdown_cb, on_server_destroyed, server);
+ grpc_closure_init(&do_nothing_cb, do_nothing, NULL);
+ grpc_tcp_server_destroy(&exec_ctx, server->tcp_server, &server_shutdown_cb);
+ shutdown_deadline = gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
+ gpr_time_from_seconds(5, GPR_TIMESPAN));
+ while (!server->shutdown &&
+ gpr_time_cmp(gpr_now(GPR_CLOCK_MONOTONIC), shutdown_deadline) < 0) {
+ test_tcp_server_poll(server, 1);
+ }
+ grpc_pollset_shutdown(&exec_ctx, &server->pollset, &do_nothing_cb);
grpc_exec_ctx_finish(&exec_ctx);
grpc_pollset_destroy(&server->pollset);
grpc_shutdown();