diff --git a/test/cpp/qps/client_callback.cc b/test/cpp/qps/client_callback.cc index 815780e40ff6daf4861deb6d83ec5a825f2b7be5..dcfa2dbf875aaea5e38fab7c0528e6c1d7b4fbf6 100644 --- a/test/cpp/qps/client_callback.cc +++ b/test/cpp/qps/client_callback.cc @@ -285,8 +285,18 @@ class CallbackStreamingPingPongReactor final } return; } - write_time_ = UsageTimer::Now(); - StartWrite(client_->request()); + if (!client_->IsClosedLoop()) { + gpr_timespec next_issue_time = client_->NextRPCIssueTime(); + // Start an alarm callback to run the internal callback after + // next_issue_time + ctx_->alarm_.experimental().Set(next_issue_time, [this](bool ok) { + write_time_ = UsageTimer::Now(); + StartWrite(client_->request()); + }); + } else { + write_time_ = UsageTimer::Now(); + StartWrite(client_->request()); + } } void OnDone(const Status& s) override {