Go to the documentation of this file.
19 #include <gtest/gtest.h>
40 #include "src/proto/grpc/testing/echo.grpc.pb.h"
48 static void*
tag(
intptr_t x) {
return reinterpret_cast<void*
>(
x); }
51 b->SetMaxReceiveMessageSize(INT_MAX);
52 b->SetMaxSendMessageSize(INT_MAX);
61 class EndpointPairFixture {
65 cq_ =
b.AddCompletionQueue(
true);
78 server_args, endpoints.
server,
false );
85 server_args,
nullptr)));
109 std::vector<std::unique_ptr<
127 std::unique_ptr<Server>
server_;
128 std::unique_ptr<ServerCompletionQueue>
cq_;
132 class InProcessCHTTP2 :
public EndpointPairFixture {
156 const int kIterations = 10000;
158 EchoTestService::AsyncService
service;
159 std::unique_ptr<InProcessCHTTP2>
fixture(
162 EchoResponse send_response;
163 EchoResponse recv_response;
164 if (request_size > 0) {
167 if (response_size > 0) {
168 send_response.set_message(
std::string(response_size,
'a'));
173 EchoRequest recv_request;
175 ServerEnv() : response_writer(&
ctx) {}
177 uint8_t server_env_buffer[2 *
sizeof(ServerEnv)];
178 ServerEnv* server_env[2] = {
179 reinterpret_cast<ServerEnv*
>(server_env_buffer),
180 reinterpret_cast<ServerEnv*
>(server_env_buffer +
sizeof(ServerEnv))};
181 new (server_env[0]) ServerEnv;
182 new (server_env[1]) ServerEnv;
183 service.RequestEcho(&server_env[0]->
ctx, &server_env[0]->recv_request,
184 &server_env[0]->response_writer,
fixture->cq(),
186 service.RequestEcho(&server_env[1]->
ctx, &server_env[1]->recv_request,
187 &server_env[1]->response_writer,
fixture->cq(),
189 std::unique_ptr<EchoTestService::Stub>
stub(
190 EchoTestService::NewStub(
fixture->channel()));
191 for (
int iteration = 0; iteration < kIterations; iteration++) {
192 recv_response.Clear();
194 std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
198 response_reader->Finish(&recv_response, &recv_status,
tag(4));
203 ServerEnv* senv = server_env[slot];
204 senv->response_writer.Finish(send_response,
Status::OK,
tag(3));
205 for (
int i = (1 << 3) | (1 << 4);
i != 0;) {
208 int tagnum =
static_cast<int>(
reinterpret_cast<intptr_t>(t));
215 senv =
new (senv) ServerEnv();
216 service.RequestEcho(&senv->ctx, &senv->recv_request, &senv->response_writer,
220 double writes_per_iteration =
221 static_cast<double>(
fixture->writes_performed()) /
222 static_cast<double>(kIterations);
225 server_env[0]->~ServerEnv();
226 server_env[1]->~ServerEnv();
228 return writes_per_iteration;
242 int main(
int argc,
char** argv) {
grpc_error_handle SetupTransport(grpc_transport *transport, grpc_pollset *accepting_pollset, const grpc_channel_args *args, const RefCountedPtr< channelz::SocketNode > &socket_node)
std::shared_ptr< Channel > CreateChannelInternal(const std::string &host, grpc_channel *c_channel, std::vector< std::unique_ptr< experimental::ClientInterceptorFactoryInterface >> interceptor_creators)
std::shared_ptr< Channel > channel_
bool ok() const
Is the status OK?
grpc_transport * grpc_create_chttp2_transport(const grpc_channel_args *channel_args, grpc_endpoint *ep, bool is_client)
const grpc_channel_args * channel_args() const
#define GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH
@ GRPC_CLIENT_DIRECT_CHANNEL
int writes_performed() const
static ChannelArgs FromC(const grpc_channel_args *args)
static struct test_ctx ctx
~InProcessCHTTP2() override
#define GRPC_LOG_IF_ERROR(what, error)
grpc_passthru_endpoint_stats * grpc_passthru_endpoint_stats_create()
#define GRPC_ARG_MAX_SEND_MESSAGE_LENGTH
Desriptor of an RPC service and its various RPC methods.
static grpc_endpoint_pair MakeEndpoints(grpc_passthru_endpoint_stats *stats)
InProcessCHTTP2(Service *service, grpc_passthru_endpoint_stats *stats)
#define GRPC_ARG_DEFAULT_AUTHORITY
void grpc_passthru_endpoint_create(grpc_endpoint **client, grpc_endpoint **server, grpc_passthru_endpoint_stats *stats, bool simulate_channel_actions)
const std::vector< grpc_pollset * > & pollsets() const
static const char fixture[]
A builder class for the creation and startup of grpc::Server instances.
virtual ~EndpointPairFixture()
static double UnaryPingPong(int request_size, int response_size)
int main(int argc, char **argv)
static const Status & OK
An OK pre-defined instance.
std::unique_ptr< ServerCompletionQueue > cq_
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
static void ApplyCommonServerBuilderConfig(ServerBuilder *b)
std::unique_ptr< Server > server_
static void * tag(intptr_t t)
std::shared_ptr< Channel > channel()
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
grpc_core::ExecCtx exec_ctx
static void ApplyCommonChannelArguments(ChannelArguments *c)
ServerCompletionQueue * cq()
grpc_passthru_endpoint_stats * stats_
UniquePtr< SSL_SESSION > ret
#define EXPECT_LT(val1, val2)
EndpointPairFixture(Service *service, grpc_endpoint_pair endpoints)
struct grpc_channel grpc_channel
TEST(StatsTest, IncCounters)
GRPCAPI void grpc_init(void)
__attribute__((deprecated("Please use GRPCProtoMethod."))) @interface ProtoMethod NSString * service
void grpc_endpoint_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset)
static Server * FromC(grpc_server *c_type)
void grpc_passthru_endpoint_stats_destroy(grpc_passthru_endpoint_stats *stats)
GRPCAPI void grpc_shutdown(void)
static absl::StatusOr< RefCountedPtr< Channel > > Create(const char *target, ChannelArgs args, grpc_channel_stack_type channel_stack_type, grpc_transport *optional_transport)
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)
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:55