fullstack_fixtures.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2017 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef TEST_CPP_MICROBENCHMARKS_FULLSTACK_FIXTURES_H
20 #define TEST_CPP_MICROBENCHMARKS_FULLSTACK_FIXTURES_H
21 
22 #include <grpc/support/atm.h>
23 #include <grpc/support/log.h>
24 #include <grpcpp/channel.h>
25 #include <grpcpp/create_channel.h>
28 #include <grpcpp/server.h>
29 #include <grpcpp/server_builder.h>
30 
42 #include "test/core/util/port.h"
45 
46 namespace grpc {
47 namespace testing {
48 
50  public:
51  virtual ~FixtureConfiguration() {}
53  c->SetInt(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, INT_MAX);
54  c->SetInt(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, INT_MAX);
55  c->SetResourceQuota(ResourceQuota());
56  }
57 
59  b->SetMaxReceiveMessageSize(INT_MAX);
60  b->SetMaxSendMessageSize(INT_MAX);
61  }
62 };
63 
64 class BaseFixture : public TrackCounters {};
65 
66 class FullstackFixture : public BaseFixture {
67  public:
69  const std::string& address) {
71  if (address.length() > 0) {
72  b.AddListeningPort(address, InsecureServerCredentials());
73  }
74  cq_ = b.AddCompletionQueue(true);
75  b.RegisterService(service);
76  config.ApplyCommonServerBuilderConfig(&b);
77  server_ = b.BuildAndStart();
79  config.ApplyCommonChannelArguments(&args);
80  if (address.length() > 0) {
83  } else {
84  channel_ = server_->InProcessChannel(args);
85  }
86  }
87 
88  ~FullstackFixture() override {
90  cq_->Shutdown();
91  void* tag;
92  bool ok;
93  while (cq_->Next(&tag, &ok)) {
94  }
95  }
96 
97  void AddToLabel(std::ostream& out, benchmark::State& state) override {
99  out << " polls/iter:"
100  << static_cast<double>(grpc_get_cq_poll_num(this->cq()->cq())) /
101  state.iterations();
102  }
103 
104  ServerCompletionQueue* cq() { return cq_.get(); }
105  std::shared_ptr<Channel> channel() { return channel_; }
106 
107  private:
108  std::unique_ptr<Server> server_;
109  std::unique_ptr<ServerCompletionQueue> cq_;
110  std::shared_ptr<Channel> channel_;
111 };
112 
113 class TCP : public FullstackFixture {
114  public:
115  explicit TCP(Service* service,
116  const FixtureConfiguration& fixture_configuration =
118  : FullstackFixture(service, fixture_configuration, MakeAddress(&port_)) {}
119 
121 
122  private:
123  int port_;
124 
125  static std::string MakeAddress(int* port) {
127  std::stringstream addr;
128  addr << "localhost:" << *port;
129  return addr.str();
130  }
131 };
132 
133 class UDS : public FullstackFixture {
134  public:
135  explicit UDS(Service* service,
136  const FixtureConfiguration& fixture_configuration =
138  : FullstackFixture(service, fixture_configuration, MakeAddress(&port_)) {}
139 
141 
142  private:
143  int port_;
144 
145  static std::string MakeAddress(int* port) {
146  *port = grpc_pick_unused_port_or_die(); // just for a unique id - not a
147  // real port
148  std::stringstream addr;
149  addr << "unix:/tmp/bm_fullstack." << *port;
150  return addr.str();
151  }
152 };
153 
154 class InProcess : public FullstackFixture {
155  public:
157  const FixtureConfiguration& fixture_configuration =
159  : FullstackFixture(service, fixture_configuration, "") {}
160  ~InProcess() override {}
161 };
162 
164  public:
166  const FixtureConfiguration& fixture_configuration)
167  : endpoint_pair_(endpoints) {
169  cq_ = b.AddCompletionQueue(true);
170  b.RegisterService(service);
171  fixture_configuration.ApplyCommonServerBuilderConfig(&b);
172  server_ = b.BuildAndStart();
174  /* add server endpoint to server_
175  * */
176  {
177  grpc_core::Server* core_server =
178  grpc_core::Server::FromC(server_->c_server());
179  const grpc_channel_args* server_args = core_server->channel_args();
181  server_args, endpoints.server, false /* is_client */);
182  for (grpc_pollset* pollset : core_server->pollsets()) {
183  grpc_endpoint_add_to_pollset(endpoints.server, pollset);
184  }
185 
187  "SetupTransport",
188  core_server->SetupTransport(server_transport_, nullptr, server_args,
189  nullptr)));
191  nullptr);
192  }
193 
194  /* create channel */
195  {
197  args.SetString(GRPC_ARG_DEFAULT_AUTHORITY, "test.authority");
198  fixture_configuration.ApplyCommonChannelArguments(&args);
199 
200  grpc_channel_args c_args = args.c_channel_args();
202  grpc_create_chttp2_transport(&c_args, endpoints.client, true);
206  "target", grpc_core::ChannelArgs::FromC(&c_args),
208  ->release()
209  ->c_ptr();
211  nullptr);
212 
214  "", channel,
215  std::vector<std::unique_ptr<
217  }
218  }
219 
220  ~EndpointPairFixture() override {
222  cq_->Shutdown();
223  void* tag;
224  bool ok;
225  while (cq_->Next(&tag, &ok)) {
226  }
227  }
228 
229  void AddToLabel(std::ostream& out, benchmark::State& state) override {
231  out << " polls/iter:"
232  << static_cast<double>(grpc_get_cq_poll_num(this->cq()->cq())) /
233  state.iterations();
234  }
235 
236  ServerCompletionQueue* cq() { return cq_.get(); }
237  std::shared_ptr<Channel> channel() { return channel_; }
238 
239  protected:
243 
244  private:
245  std::unique_ptr<Server> server_;
246  std::unique_ptr<ServerCompletionQueue> cq_;
247  std::shared_ptr<Channel> channel_;
248 };
249 
251  public:
253  const FixtureConfiguration& fixture_configuration =
256  grpc_iomgr_create_endpoint_pair("test", nullptr),
257  fixture_configuration) {}
258 };
259 
260 /* Use InProcessCHTTP2 instead. This class (with stats as an explicit parameter)
261  is here only to be able to initialize both the base class and stats_ with the
262  same stats instance without accessing the stats_ fields before the object is
263  properly initialized. */
265  public:
268  const FixtureConfiguration& fixture_configuration)
270  fixture_configuration),
271  stats_(stats) {}
272 
274  if (stats_ != nullptr) {
276  }
277  }
278 
279  void AddToLabel(std::ostream& out, benchmark::State& state) override {
281  out << " writes/iter:"
282  << static_cast<double>(gpr_atm_no_barrier_load(&stats_->num_writes)) /
283  static_cast<double>(state.iterations());
284  }
285 
286  private:
288 
291  grpc_passthru_endpoint_create(&p.client, &p.server, stats);
292  return p;
293  }
294 };
295 
297  public:
299  const FixtureConfiguration& fixture_configuration =
303  fixture_configuration) {}
304 };
305 
307 // Minimal stack fixtures
308 
311  a->SetInt(GRPC_ARG_MINIMAL_STACK, 1);
313  }
314 
316  b->AddChannelArgument(GRPC_ARG_MINIMAL_STACK, 1);
318  }
319 };
320 
321 template <class Base>
322 class MinStackize : public Base {
323  public:
325  : Base(service, MinStackConfiguration()) {}
326 };
327 
333 
334 } // namespace testing
335 } // namespace grpc
336 
337 #endif
grpc::testing::TCP::MakeAddress
static std::string MakeAddress(int *port)
Definition: fullstack_fixtures.h:125
grpc_core::Server::SetupTransport
grpc_error_handle SetupTransport(grpc_transport *transport, grpc_pollset *accepting_pollset, const grpc_channel_args *args, const RefCountedPtr< channelz::SocketNode > &socket_node)
Definition: src/core/lib/surface/server.cc:605
grpc::CreateChannelInternal
std::shared_ptr< Channel > CreateChannelInternal(const std::string &host, grpc_channel *c_channel, std::vector< std::unique_ptr< experimental::ClientInterceptorFactoryInterface >> interceptor_creators)
testing
Definition: aws_request_signer_test.cc:25
grpc::ServerCompletionQueue
Definition: include/grpcpp/impl/codegen/completion_queue.h:436
gen_build_yaml.out
dictionary out
Definition: src/benchmark/gen_build_yaml.py:24
gpr_atm_no_barrier_load
#define gpr_atm_no_barrier_load(p)
Definition: impl/codegen/atm_gcc_atomic.h:53
create_channel_internal.h
grpc::testing::FixtureConfiguration::ApplyCommonServerBuilderConfig
virtual void ApplyCommonServerBuilderConfig(ServerBuilder *b) const
Definition: fullstack_fixtures.h:58
log.h
port.h
grpc::testing::EndpointPairFixture::channel_
std::shared_ptr< Channel > channel_
Definition: fullstack_fixtures.h:247
grpc::testing::UDS::UDS
UDS(Service *service, const FixtureConfiguration &fixture_configuration=FixtureConfiguration())
Definition: fullstack_fixtures.h:135
grpc
Definition: grpcpp/alarm.h:33
grpc_create_chttp2_transport
grpc_transport * grpc_create_chttp2_transport(const grpc_channel_args *channel_args, grpc_endpoint *ep, bool is_client)
Definition: chttp2_transport.cc:3122
grpc_core::Server::channel_args
const grpc_channel_args * channel_args() const
Definition: src/core/lib/surface/server.h:132
GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
#define GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
Definition: grpc_types.h:153
grpc::testing::MinStackize
Definition: fullstack_fixtures.h:322
grpc::testing::MinInProcessCHTTP2
MinStackize< InProcessCHTTP2 > MinInProcessCHTTP2
Definition: fullstack_fixtures.h:332
grpc::testing::MinInProcess
MinStackize< InProcess > MinInProcess
Definition: fullstack_fixtures.h:330
GRPC_CLIENT_DIRECT_CHANNEL
@ GRPC_CLIENT_DIRECT_CHANNEL
Definition: channel_stack_type.h:34
grpc::testing::InProcess::~InProcess
~InProcess() override
Definition: fullstack_fixtures.h:160
grpc::testing::FixtureConfiguration::ApplyCommonChannelArguments
virtual void ApplyCommonChannelArguments(ChannelArguments *c) const
Definition: fullstack_fixtures.h:52
grpc::testing::InProcessCHTTP2::InProcessCHTTP2
InProcessCHTTP2(Service *service, const FixtureConfiguration &fixture_configuration=FixtureConfiguration())
Definition: fullstack_fixtures.h:298
grpc::testing::UDS::~UDS
~UDS() override
Definition: fullstack_fixtures.h:140
grpc::testing::InProcess::InProcess
InProcess(Service *service, const FixtureConfiguration &fixture_configuration=FixtureConfiguration())
Definition: fullstack_fixtures.h:156
grpc::experimental::ClientInterceptorFactoryInterface
Definition: impl/codegen/client_interceptor.h:48
grpc_recycle_unused_port
void grpc_recycle_unused_port(int port)
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
grpc_passthru_endpoint_stats::num_writes
gpr_atm num_writes
Definition: passthru_endpoint.h:31
grpc_core::ChannelArgs::FromC
static ChannelArgs FromC(const grpc_channel_args *args)
Definition: channel_args.cc:84
completion_queue.h
grpc::ResourceQuota
Definition: include/grpcpp/resource_quota.h:34
grpc::testing::FixtureConfiguration
Definition: fullstack_fixtures.h:49
grpc_endpoint_pair::server
grpc_endpoint * server
Definition: endpoint_pair.h:28
GRPC_LOG_IF_ERROR
#define GRPC_LOG_IF_ERROR(what, error)
Definition: error.h:398
a
int a
Definition: abseil-cpp/absl/container/internal/hash_policy_traits_test.cc:88
grpc::testing::TCP
Definition: fullstack_fixtures.h:113
grpc_passthru_endpoint_stats_create
grpc_passthru_endpoint_stats * grpc_passthru_endpoint_stats_create()
Definition: passthru_endpoint.cc:440
GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
#define GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
Definition: grpc_types.h:159
grpc::testing::MinStackConfiguration::ApplyCommonChannelArguments
void ApplyCommonChannelArguments(ChannelArguments *a) const override
Definition: fullstack_fixtures.h:310
grpc::testing::UDS::port_
int port_
Definition: fullstack_fixtures.h:143
grpc_channel_args
Definition: grpc_types.h:132
grpc::testing::FullstackFixture::server_
std::unique_ptr< Server > server_
Definition: fullstack_fixtures.h:108
grpc::testing::TCP::~TCP
~TCP() override
Definition: fullstack_fixtures.h:120
grpc::testing::EndpointPairFixture::server_transport_
grpc_transport * server_transport_
Definition: fullstack_fixtures.h:242
grpc::Service
Desriptor of an RPC service and its various RPC methods.
Definition: grpcpp/impl/codegen/service_type.h:58
endpoint_pair.h
grpc::testing::UDS
Definition: fullstack_fixtures.h:133
TrackCounters
Definition: helpers.h:51
grpc::testing::TCP::TCP
TCP(Service *service, const FixtureConfiguration &fixture_configuration=FixtureConfiguration())
Definition: fullstack_fixtures.h:115
GRPC_ARG_DEFAULT_AUTHORITY
#define GRPC_ARG_DEFAULT_AUTHORITY
Definition: grpc_types.h:251
grpc_passthru_endpoint_create
void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_endpoint **server, grpc_passthru_endpoint_stats *stats, bool simulate_channel_actions)
Definition: passthru_endpoint.cc:413
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
grpc_core::Server::pollsets
const std::vector< grpc_pollset * > & pollsets() const
Definition: src/core/lib/surface/server.h:138
GPR_ASSERT
#define GPR_ASSERT(x)
Definition: include/grpc/impl/codegen/log.h:94
grpc::testing::FullstackFixture::~FullstackFixture
~FullstackFixture() override
Definition: fullstack_fixtures.h:88
grpc::testing::InProcessCHTTP2WithExplicitStats::~InProcessCHTTP2WithExplicitStats
~InProcessCHTTP2WithExplicitStats() override
Definition: fullstack_fixtures.h:273
grpc::testing::MinStackize::MinStackize
MinStackize(Service *service)
Definition: fullstack_fixtures.h:324
grpc::testing::MinStackConfiguration
Definition: fullstack_fixtures.h:309
grpc::ServerBuilder
A builder class for the creation and startup of grpc::Server instances.
Definition: grpcpp/server_builder.h:86
grpc_timeout_milliseconds_to_deadline
gpr_timespec grpc_timeout_milliseconds_to_deadline(int64_t time_ms)
Definition: test/core/util/test_config.cc:89
tcp_posix.h
gen_stats_data.stats
list stats
Definition: gen_stats_data.py:58
channel.h
grpc::testing::MinSockPair
MinStackize< SockPair > MinSockPair
Definition: fullstack_fixtures.h:331
grpc::testing::UDS::MakeAddress
static std::string MakeAddress(int *port)
Definition: fullstack_fixtures.h:145
grpc::testing::EndpointPairFixture::cq_
std::unique_ptr< ServerCompletionQueue > cq_
Definition: fullstack_fixtures.h:246
grpc::testing::InProcessCHTTP2WithExplicitStats::stats_
grpc_passthru_endpoint_stats * stats_
Definition: fullstack_fixtures.h:287
grpc_pick_unused_port_or_die
int grpc_pick_unused_port_or_die(void)
b
uint64_t b
Definition: abseil-cpp/absl/container/internal/layout_test.cc:53
helpers.h
grpc_core::ExecCtx
Definition: exec_ctx.h:97
grpc_passthru_endpoint_stats
Definition: passthru_endpoint.h:29
grpc::testing::EndpointPairFixture::server_
std::unique_ptr< Server > server_
Definition: fullstack_fixtures.h:245
grpc::testing::SockPair::SockPair
SockPair(Service *service, const FixtureConfiguration &fixture_configuration=FixtureConfiguration())
Definition: fullstack_fixtures.h:252
server_credentials.h
grpc::testing::tag
static void * tag(intptr_t t)
Definition: h2_ssl_cert_test.cc:263
grpc::testing::InProcessCHTTP2WithExplicitStats
Definition: fullstack_fixtures.h:264
tests.unit._exit_scenarios.port
port
Definition: _exit_scenarios.py:179
test_config.h
grpc::testing::EndpointPairFixture::channel
std::shared_ptr< Channel > channel()
Definition: fullstack_fixtures.h:237
grpc::testing::EndpointPairFixture::client_transport_
grpc_transport * client_transport_
Definition: fullstack_fixtures.h:241
grpc::ChannelArguments
Definition: grpcpp/support/channel_arguments.h:39
grpc_core::Server
Definition: src/core/lib/surface/server.h:75
credentials.h
grpc::testing::InProcessCHTTP2WithExplicitStats::InProcessCHTTP2WithExplicitStats
InProcessCHTTP2WithExplicitStats(Service *service, grpc_passthru_endpoint_stats *stats, const FixtureConfiguration &fixture_configuration)
Definition: fullstack_fixtures.h:266
grpc::testing::FullstackFixture::channel
std::shared_ptr< Channel > channel()
Definition: fullstack_fixtures.h:105
grpc::testing::InProcessCHTTP2WithExplicitStats::AddToLabel
void AddToLabel(std::ostream &out, benchmark::State &state) override
Definition: fullstack_fixtures.h:279
grpc::testing::TCP::port_
int port_
Definition: fullstack_fixtures.h:123
grpc::testing::InProcess
Definition: fullstack_fixtures.h:154
grpc::testing::FullstackFixture::AddToLabel
void AddToLabel(std::ostream &out, benchmark::State &state) override
Definition: fullstack_fixtures.h:97
exec_ctx
grpc_core::ExecCtx exec_ctx
Definition: end2end_binder_transport_test.cc:75
grpc_endpoint_pair::client
grpc_endpoint * client
Definition: endpoint_pair.h:27
grpc::testing::FullstackFixture::cq_
std::unique_ptr< ServerCompletionQueue > cq_
Definition: fullstack_fixtures.h:109
grpc::testing::EndpointPairFixture::cq
ServerCompletionQueue * cq()
Definition: fullstack_fixtures.h:236
passthru_endpoint.h
benchmark::State
Definition: benchmark/include/benchmark/benchmark.h:503
grpc_iomgr_create_endpoint_pair
grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char *name, grpc_channel_args *args)
GRPC_ARG_MINIMAL_STACK
#define GRPC_ARG_MINIMAL_STACK
Definition: grpc_types.h:147
grpc::CreateCustomChannel
std::shared_ptr< Channel > CreateCustomChannel(const grpc::string &target, const std::shared_ptr< ChannelCredentials > &creds, const ChannelArguments &args)
chttp2_transport.h
benchmark::State::iterations
BENCHMARK_ALWAYS_INLINE IterationCount iterations() const
Definition: benchmark/include/benchmark/benchmark.h:683
grpc::testing::MinTCP
MinStackize< TCP > MinTCP
Definition: fullstack_fixtures.h:328
ok
bool ok
Definition: async_end2end_test.cc:197
state
Definition: bloaty/third_party/zlib/contrib/blast/blast.c:41
exec_ctx.h
server.h
grpc::testing::FixtureConfiguration::~FixtureConfiguration
virtual ~FixtureConfiguration()
Definition: fullstack_fixtures.h:51
grpc_channel
struct grpc_channel grpc_channel
Definition: grpc_types.h:62
grpc::testing::BaseFixture
Definition: fullstack_fixtures.h:64
config_s
Definition: bloaty/third_party/zlib/deflate.c:120
grpc_transport
Definition: transport_impl.h:89
grpc::testing::FullstackFixture::channel_
std::shared_ptr< Channel > channel_
Definition: fullstack_fixtures.h:110
grpc::testing::EndpointPairFixture::~EndpointPairFixture
~EndpointPairFixture() override
Definition: fullstack_fixtures.h:220
channel_args.h
grpc::InsecureServerCredentials
std::shared_ptr< ServerCredentials > InsecureServerCredentials()
Definition: insecure_server_credentials.cc:52
grpc::testing::EndpointPairFixture::AddToLabel
void AddToLabel(std::ostream &out, benchmark::State &state) override
Definition: fullstack_fixtures.h:229
atm.h
grpc::testing::FullstackFixture::FullstackFixture
FullstackFixture(Service *service, const FixtureConfiguration &config, const std::string &address)
Definition: fullstack_fixtures.h:68
grpc::testing::InProcessCHTTP2WithExplicitStats::MakeEndpoints
static grpc_endpoint_pair MakeEndpoints(grpc_passthru_endpoint_stats *stats)
Definition: fullstack_fixtures.h:289
server.h
grpc::testing::FullstackFixture
Definition: fullstack_fixtures.h:66
endpoint.h
grpc::InsecureChannelCredentials
std::shared_ptr< ChannelCredentials > InsecureChannelCredentials()
Credentials for an unencrypted, unauthenticated channel.
Definition: cpp/client/insecure_credentials.cc:69
service
__attribute__((deprecated("Please use GRPCProtoMethod."))) @interface ProtoMethod NSString * service
Definition: ProtoMethod.h:25
grpc_endpoint_pair
Definition: endpoint_pair.h:26
grpc_endpoint_add_to_pollset
void grpc_endpoint_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset)
Definition: endpoint.cc:35
grpc_core::CppImplOf< Server, grpc_server >::FromC
static Server * FromC(grpc_server *c_type)
Definition: cpp_impl_of.h:30
grpc::testing::FullstackFixture::cq
ServerCompletionQueue * cq()
Definition: fullstack_fixtures.h:104
grpc::testing::InProcessCHTTP2
Definition: fullstack_fixtures.h:296
grpc_pollset
Definition: bm_cq_multiple_threads.cc:37
grpc::testing::MinStackConfiguration::ApplyCommonServerBuilderConfig
void ApplyCommonServerBuilderConfig(ServerBuilder *b) const override
Definition: fullstack_fixtures.h:315
TrackCounters::AddToLabel
virtual void AddToLabel(std::ostream &out, benchmark::State &state)
Definition: helpers.cc:61
grpc_passthru_endpoint_stats_destroy
void grpc_passthru_endpoint_stats_destroy(grpc_passthru_endpoint_stats *stats)
Definition: passthru_endpoint.cc:449
grpc_get_cq_poll_num
int grpc_get_cq_poll_num(grpc_completion_queue *cq)
Definition: completion_queue.cc:585
grpc::testing::MinUDS
MinStackize< UDS > MinUDS
Definition: fullstack_fixtures.h:329
addr
struct sockaddr_in addr
Definition: libuv/docs/code/tcp-echo-server/main.c:10
server_builder.h
grpc_core::Channel::Create
static absl::StatusOr< RefCountedPtr< Channel > > Create(const char *target, ChannelArgs args, grpc_channel_stack_type channel_stack_type, grpc_transport *optional_transport)
Definition: channel.cc:202
grpc::testing::EndpointPairFixture::EndpointPairFixture
EndpointPairFixture(Service *service, grpc_endpoint_pair endpoints, const FixtureConfiguration &fixture_configuration)
Definition: fullstack_fixtures.h:165
grpc_chttp2_transport_start_reading
void grpc_chttp2_transport_start_reading(grpc_transport *transport, grpc_slice_buffer *read_buffer, grpc_closure *notify_on_receive_settings, grpc_closure *notify_on_close)
Definition: chttp2_transport.cc:3128
grpc::testing::EndpointPairFixture
Definition: fullstack_fixtures.h:163
create_channel.h
grpc::testing::EndpointPairFixture::endpoint_pair_
grpc_endpoint_pair endpoint_pair_
Definition: fullstack_fixtures.h:240
grpc::testing::SockPair
Definition: fullstack_fixtures.h:250
channel.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:22