diff options
author | Yash Tibrewal <yashkt@google.com> | 2017-10-13 16:07:13 -0700 |
---|---|---|
committer | Yash Tibrewal <yashkt@google.com> | 2017-10-18 17:12:19 -0700 |
commit | 0ee7574732a06e8cace4e099a678f4bd5dbff679 (patch) | |
tree | e43d5de442fdcc3d39cd5af687f319fa39612d3f /test/cpp/naming/resolver_component_test.cc | |
parent | 6bf5f833efe2cb9e2ecc14358dd9699cd5d05263 (diff) |
Removing instances of exec_ctx being passed around in functions in
src/core. exec_ctx is now a thread_local pointer of type ExecCtx instead of
grpc_exec_ctx which is initialized whenever ExecCtx is instantiated. ExecCtx
also keeps track of the previous exec_ctx so that nesting of exec_ctx is
allowed. This means that there is only one exec_ctx being used at any
time. Also, grpc_exec_ctx_finish is called in the destructor of the
object, and the previous exec_ctx is restored to avoid breaking current
functionality. The code still explicitly calls grpc_exec_ctx_finish
because removing all such instances causes the code to break.
Diffstat (limited to 'test/cpp/naming/resolver_component_test.cc')
-rw-r--r-- | test/cpp/naming/resolver_component_test.cc | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/test/cpp/naming/resolver_component_test.cc b/test/cpp/naming/resolver_component_test.cc index 7d0371bea4..742fb8d966 100644 --- a/test/cpp/naming/resolver_component_test.cc +++ b/test/cpp/naming/resolver_component_test.cc @@ -151,32 +151,32 @@ struct ArgsStruct { std::string expected_lb_policy; }; -void ArgsInit(grpc_exec_ctx *exec_ctx, ArgsStruct *args) { +void ArgsInit(ArgsStruct *args) { gpr_event_init(&args->ev); args->pollset = (grpc_pollset *)gpr_zalloc(grpc_pollset_size()); grpc_pollset_init(args->pollset, &args->mu); args->pollset_set = grpc_pollset_set_create(); - grpc_pollset_set_add_pollset(exec_ctx, args->pollset_set, args->pollset); + grpc_pollset_set_add_pollset(args->pollset_set, args->pollset); args->lock = grpc_combiner_create(); gpr_atm_rel_store(&args->done_atm, 0); args->channel_args = NULL; } -void DoNothing(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {} +void DoNothing(void *arg, grpc_error *error) {} -void ArgsFinish(grpc_exec_ctx *exec_ctx, ArgsStruct *args) { +void ArgsFinish(ArgsStruct *args) { GPR_ASSERT(gpr_event_wait(&args->ev, TestDeadline())); - grpc_pollset_set_del_pollset(exec_ctx, args->pollset_set, args->pollset); - grpc_pollset_set_destroy(exec_ctx, args->pollset_set); + grpc_pollset_set_del_pollset(args->pollset_set, args->pollset); + grpc_pollset_set_destroy(args->pollset_set); grpc_closure DoNothing_cb; GRPC_CLOSURE_INIT(&DoNothing_cb, DoNothing, NULL, grpc_schedule_on_exec_ctx); - grpc_pollset_shutdown(exec_ctx, args->pollset, &DoNothing_cb); + grpc_pollset_shutdown(args->pollset, &DoNothing_cb); // exec_ctx needs to be flushed before calling grpc_pollset_destroy() - grpc_channel_args_destroy(exec_ctx, args->channel_args); - grpc_exec_ctx_flush(exec_ctx); - grpc_pollset_destroy(exec_ctx, args->pollset); + grpc_channel_args_destroy(args->channel_args); + grpc_exec_ctx_flush(); + grpc_pollset_destroy(args->pollset); gpr_free(args->pollset); - GRPC_COMBINER_UNREF(exec_ctx, args->lock, NULL); + GRPC_COMBINER_UNREF(args->lock, NULL); } gpr_timespec NSecondDeadline(int seconds) { @@ -197,14 +197,14 @@ void PollPollsetUntilRequestDone(ArgsStruct *args) { time_left.tv_sec, time_left.tv_nsec); GPR_ASSERT(gpr_time_cmp(time_left, gpr_time_0(GPR_TIMESPAN)) >= 0); grpc_pollset_worker *worker = NULL; - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; gpr_mu_lock(args->mu); GRPC_LOG_IF_ERROR("pollset_work", - grpc_pollset_work(&exec_ctx, args->pollset, &worker, + grpc_pollset_work(args->pollset, &worker, grpc_timespec_to_millis_round_up( NSecondDeadline(1)))); gpr_mu_unlock(args->mu); - grpc_exec_ctx_finish(&exec_ctx); + grpc_exec_ctx_finish(); } gpr_event_set(&args->ev, (void *)1); } @@ -236,8 +236,7 @@ void CheckLBPolicyResultLocked(grpc_channel_args *channel_args, } } -void CheckResolverResultLocked(grpc_exec_ctx *exec_ctx, void *argsp, - grpc_error *err) { +void CheckResolverResultLocked(void *argsp, grpc_error *err) { ArgsStruct *args = (ArgsStruct *)argsp; grpc_channel_args *channel_args = args->channel_args; const grpc_arg *channel_arg = @@ -272,15 +271,14 @@ void CheckResolverResultLocked(grpc_exec_ctx *exec_ctx, void *argsp, } gpr_atm_rel_store(&args->done_atm, 1); gpr_mu_lock(args->mu); - GRPC_LOG_IF_ERROR("pollset_kick", - grpc_pollset_kick(exec_ctx, args->pollset, NULL)); + GRPC_LOG_IF_ERROR("pollset_kick", grpc_pollset_kick(args->pollset, NULL)); gpr_mu_unlock(args->mu); } TEST(ResolverComponentTest, TestResolvesRelevantRecords) { - grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; + ExecCtx _local_exec_ctx; ArgsStruct args; - ArgsInit(&exec_ctx, &args); + ArgsInit(&args); args.expected_addrs = ParseExpectedAddrs(FLAGS_expected_addrs); args.expected_service_config_string = FLAGS_expected_chosen_service_config; args.expected_lb_policy = FLAGS_expected_lb_policy; @@ -290,19 +288,19 @@ TEST(ResolverComponentTest, TestResolvesRelevantRecords) { FLAGS_local_dns_server_address.c_str(), FLAGS_target_name.c_str())); // create resolver and resolve - grpc_resolver *resolver = grpc_resolver_create(&exec_ctx, whole_uri, NULL, - args.pollset_set, args.lock); + grpc_resolver *resolver = + grpc_resolver_create(whole_uri, NULL, args.pollset_set, args.lock); gpr_free(whole_uri); grpc_closure on_resolver_result_changed; GRPC_CLOSURE_INIT(&on_resolver_result_changed, CheckResolverResultLocked, (void *)&args, grpc_combiner_scheduler(args.lock)); - grpc_resolver_next_locked(&exec_ctx, resolver, &args.channel_args, + grpc_resolver_next_locked(resolver, &args.channel_args, &on_resolver_result_changed); - grpc_exec_ctx_flush(&exec_ctx); + grpc_exec_ctx_flush(); PollPollsetUntilRequestDone(&args); - GRPC_RESOLVER_UNREF(&exec_ctx, resolver, NULL); - ArgsFinish(&exec_ctx, &args); - grpc_exec_ctx_finish(&exec_ctx); + GRPC_RESOLVER_UNREF(resolver, NULL); + ArgsFinish(&args); + grpc_exec_ctx_finish(); } } // namespace |