|
|
|
@ -120,16 +120,27 @@ static void test_execute_many(void) { |
|
|
|
|
grpc_combiner_destroy(lock); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static bool got_in_finally = false; |
|
|
|
|
|
|
|
|
|
static void in_finally(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { |
|
|
|
|
got_in_finally = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void add_finally(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) { |
|
|
|
|
grpc_combiner_execute_finally(exec_ctx, arg, |
|
|
|
|
grpc_closure_create(in_finally, NULL), |
|
|
|
|
GRPC_ERROR_NONE, false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void test_execute_finally(void) { |
|
|
|
|
gpr_log(GPR_DEBUG, "test_execute_finally"); |
|
|
|
|
|
|
|
|
|
grpc_combiner *lock = grpc_combiner_create(NULL); |
|
|
|
|
bool done = false; |
|
|
|
|
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; |
|
|
|
|
grpc_combiner_execute(&exec_ctx, lock, grpc_closure_create(add_finally, lock), |
|
|
|
|
GRPC_ERROR_NONE); |
|
|
|
|
grpc_exec_ctx_finish(&exec_ctx); |
|
|
|
|
GPR_ASSERT(done); |
|
|
|
|
GPR_ASSERT(got_in_finally); |
|
|
|
|
grpc_combiner_destroy(lock); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -138,8 +149,8 @@ int main(int argc, char **argv) { |
|
|
|
|
grpc_init(); |
|
|
|
|
test_no_op(); |
|
|
|
|
test_execute_one(); |
|
|
|
|
test_execute_many(); |
|
|
|
|
test_execute_finally(); |
|
|
|
|
test_execute_many(); |
|
|
|
|
grpc_shutdown(); |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|