Merge pull request #6585 from ctiller/connect_first

Make qps workers connect before even warmup stage begins
pull/6655/head
Jan Tattermusch 9 years ago
commit 1226387698
  1. 10
      include/grpc++/impl/codegen/channel_interface.h
  2. 5
      test/cpp/qps/client.h

@ -85,6 +85,16 @@ class ChannelInterface {
return WaitForStateChangeImpl(last_observed, deadline_tp.raw_time());
}
/// Wait for this channel to be connected
template <typename T>
bool WaitForConnected(T deadline) {
grpc_connectivity_state state;
while ((state = GetState(true)) != GRPC_CHANNEL_READY) {
if (!WaitForStateChange(state, deadline)) return false;
}
return true;
}
private:
template <class R>
friend class ::grpc::ClientReader;

@ -38,6 +38,7 @@
#include <mutex>
#include <vector>
#include <grpc++/channel.h>
#include <grpc++/support/byte_buffer.h>
#include <grpc++/support/channel_arguments.h>
#include <grpc++/support/slice.h>
@ -315,6 +316,10 @@ class ClientImpl : public Client {
target, config.security_params().server_host_override(),
config.has_security_params(), !config.security_params().use_test_ca(),
std::shared_ptr<CallCredentials>(), args);
gpr_log(GPR_INFO, "Connecting to %s", target.c_str());
GPR_ASSERT(channel_->WaitForConnected(
gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
gpr_time_from_seconds(30, GPR_TIMESPAN))));
stub_ = create_stub(channel_);
}
Channel* get_channel() { return channel_.get(); }

Loading…
Cancel
Save