diff --git a/test/cpp/interop/xds_interop_client.cc b/test/cpp/interop/xds_interop_client.cc index c76aac186e0ff..61a45442fa8e1 100644 --- a/test/cpp/interop/xds_interop_client.cc +++ b/test/cpp/interop/xds_interop_client.cc @@ -82,6 +82,8 @@ ABSL_FLAG( "If true, XdsCredentials are used, InsecureChannelCredentials otherwise"); ABSL_FLAG(bool, enable_csm_observability, false, "Whether to enable CSM Observability"); +ABSL_FLAG(bool, log_rpc_start_and_end, false, + "Whether to log when RPCs start and end."); using grpc::Channel; using grpc::ClientAsyncResponseReader; @@ -156,6 +158,9 @@ class TestClient { ? config.timeout_sec : absl::GetFlag(FLAGS_rpc_timeout_sec)); AsyncClientCall* call = new AsyncClientCall; + if (absl::GetFlag(FLAGS_log_rpc_start_and_end)) { + LOG(INFO) << "starting async unary call " << static_cast(call); + } for (const auto& data : config.metadata) { call->context.AddMetadata(data.first, data.second); // TODO(@donnadionne): move deadline to separate proto. @@ -195,6 +200,9 @@ class TestClient { ? config.timeout_sec : absl::GetFlag(FLAGS_rpc_timeout_sec)); AsyncClientCall* call = new AsyncClientCall; + if (absl::GetFlag(FLAGS_log_rpc_start_and_end)) { + LOG(INFO) << "starting async empty call " << static_cast(call); + } for (const auto& data : config.metadata) { call->context.AddMetadata(data.first, data.second); // TODO(@donnadionne): move deadline to separate proto. @@ -219,6 +227,9 @@ class TestClient { while (cq_.Next(&got_tag, &ok)) { AsyncClientCall* call = static_cast(got_tag); CHECK(ok); + if (absl::GetFlag(FLAGS_log_rpc_start_and_end)) { + LOG(INFO) << "completed async call " << static_cast(call); + } { std::lock_guard lock(stats_watchers_->mu); auto server_initial_metadata = call->context.GetServerInitialMetadata();