test/cpp/qps/server_callback.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 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 #include <grpc/grpc.h>
19 #include <grpc/support/alloc.h>
21 #include <grpcpp/server.h>
22 #include <grpcpp/server_context.h>
23 
25 #include "src/proto/grpc/testing/benchmark_service.grpc.pb.h"
27 #include "test/cpp/qps/server.h"
29 
30 namespace grpc {
31 namespace testing {
32 
34  : public BenchmarkService::CallbackService {
35  public:
37  const SimpleRequest* request,
38  SimpleResponse* response) override {
39  auto* reactor = context->DefaultReactor();
40  reactor->Finish(SetResponse(request, response));
41  return reactor;
42  }
43 
47  class Reactor
48  : public grpc::ServerBidiReactor<grpc::testing::SimpleRequest,
49  grpc::testing::SimpleResponse> {
50  public:
51  Reactor() { StartRead(&request_); }
52 
53  void OnReadDone(bool ok) override {
54  if (!ok) {
56  return;
57  }
58  auto s = SetResponse(&request_, &response_);
59  if (!s.ok()) {
60  Finish(s);
61  return;
62  }
63  StartWrite(&response_);
64  }
65 
66  void OnWriteDone(bool ok) override {
67  if (!ok) {
69  return;
70  }
71  StartRead(&request_);
72  }
73 
74  void OnDone() override { delete (this); }
75 
76  private:
79  };
80  return new Reactor;
81  }
82 
83  private:
86  if (request->response_size() > 0) {
87  if (!Server::SetPayload(request->response_type(),
88  request->response_size(),
89  response->mutable_payload())) {
90  return Status(grpc::StatusCode::INTERNAL, "Error creating payload.");
91  }
92  }
93  return Status::OK;
94  }
95 };
96 
97 class CallbackServer final : public grpc::testing::Server {
98  public:
99  explicit CallbackServer(const ServerConfig& config) : Server(config) {
100  std::unique_ptr<ServerBuilder> builder = CreateQpsServerBuilder();
101 
102  auto port_num = port();
103  // Negative port number means inproc server, so no listen port needed
104  if (port_num >= 0) {
106  builder->AddListeningPort(server_address.c_str(),
108  &port_num);
109  }
110 
112 
113  builder->RegisterService(&service_);
114 
115  impl_ = builder->BuildAndStart();
116  if (impl_ == nullptr) {
117  gpr_log(GPR_ERROR, "Server: Fail to BuildAndStart(port=%d)", port_num);
118  } else {
119  gpr_log(GPR_INFO, "Server: BuildAndStart(port=%d)", port_num);
120  }
121  }
122 
123  std::shared_ptr<Channel> InProcessChannel(
124  const ChannelArguments& args) override {
125  return impl_->InProcessChannel(args);
126  }
127 
128  private:
130  std::unique_ptr<grpc::Server> impl_;
131 };
132 
133 std::unique_ptr<grpc::testing::Server> CreateCallbackServer(
134  const ServerConfig& config) {
135  return std::unique_ptr<Server>(new CallbackServer(config));
136 }
137 
138 } // namespace testing
139 } // namespace grpc
messages_pb2.SimpleRequest
SimpleRequest
Definition: messages_pb2.py:597
GPR_INFO
#define GPR_INFO
Definition: include/grpc/impl/codegen/log.h:56
testing
Definition: aws_request_signer_test.cc:25
response_
grpc_http_response response_
Definition: google_c2p_resolver.cc:101
grpc
Definition: grpcpp/alarm.h:33
benchmark.request
request
Definition: benchmark.py:77
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
grpc::ServerBidiReactor
ServerBidiReactor is the interface for a bidirectional streaming RPC.
Definition: impl/codegen/server_callback.h:188
server_address
std::string server_address("0.0.0.0:10000")
qps_server_builder.h
grpc::testing::CallbackServer::InProcessChannel
std::shared_ptr< Channel > InProcessChannel(const ChannelArguments &args) override
Definition: test/cpp/qps/server_callback.cc:123
profile_analyzer.builder
builder
Definition: profile_analyzer.py:159
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
grpc::testing::CallbackServer::CallbackServer
CallbackServer(const ServerConfig &config)
Definition: test/cpp/qps/server_callback.cc:99
gpr_log
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
grpc.h
grpc_core::JoinHostPort
std::string JoinHostPort(absl::string_view host, int port)
Definition: host_port.cc:32
grpc::testing::Server::ApplyConfigToBuilder
static void ApplyConfigToBuilder(const ServerConfig &config, ServerBuilder *builder)
Definition: test/cpp/qps/server.h:123
grpc::testing::CreateCallbackServer
std::unique_ptr< Server > CreateCallbackServer(const ServerConfig &config)
Definition: test/cpp/qps/server_callback.cc:133
grpc::Status::OK
static const Status & OK
An OK pre-defined instance.
Definition: include/grpcpp/impl/codegen/status.h:113
grpc::testing::BenchmarkCallbackServiceImpl::SetResponse
static Status SetResponse(const SimpleRequest *request, SimpleResponse *response)
Definition: test/cpp/qps/server_callback.cc:84
host_port.h
GPR_ERROR
#define GPR_ERROR
Definition: include/grpc/impl/codegen/log.h:57
grpc::testing::Server::CreateServerCredentials
static std::shared_ptr< ServerCredentials > CreateServerCredentials(const ServerConfig &config)
Definition: test/cpp/qps/server.h:98
grpc::testing::Server::SetPayload
static bool SetPayload(PayloadType type, int size, Payload *payload)
Definition: test/cpp/qps/server.h:82
grpc::testing::CallbackServer::service_
BenchmarkCallbackServiceImpl service_
Definition: test/cpp/qps/server_callback.cc:129
grpc::CallbackServerContext
Definition: grpcpp/impl/codegen/server_context.h:606
grpc::testing::Server
Definition: test/cpp/qps/server.h:42
server_credentials.h
request_
EchoRequest request_
Definition: client_callback_end2end_test.cc:724
grpc::ChannelArguments
Definition: grpcpp/support/channel_arguments.h:39
grpc::testing::CreateQpsServerBuilder
std::unique_ptr< ServerBuilder > CreateQpsServerBuilder()
Definition: qps_server_builder.cc:37
benchmark::internal::Finish
double Finish(Counter const &c, IterationCount iterations, double cpu_time, double num_threads)
Definition: benchmark/src/counter.cc:20
alloc.h
server_context.h
asyncio_get_stats.response
response
Definition: asyncio_get_stats.py:28
grpc::testing::CallbackServer::impl_
std::unique_ptr< grpc::Server > impl_
Definition: test/cpp/qps/server_callback.cc:130
grpc::testing::Server::port
int port() const
Definition: test/cpp/qps/server.h:96
grpc::protobuf::util::Status
GRPC_CUSTOM_UTIL_STATUS Status
Definition: include/grpcpp/impl/codegen/config_protobuf.h:93
grpc::Status
Definition: include/grpcpp/impl/codegen/status.h:35
ok
bool ok
Definition: async_end2end_test.cc:197
config_s
Definition: bloaty/third_party/zlib/deflate.c:120
grpc::ServerUnaryReactor
Definition: impl/codegen/server_callback.h:699
grpc::testing::BenchmarkCallbackServiceImpl::StreamingCall
grpc::ServerBidiReactor< grpc::testing::SimpleRequest, grpc::testing::SimpleResponse > * StreamingCall(grpc::CallbackServerContext *) override
Definition: test/cpp/qps/server_callback.cc:46
context
grpc::ClientContext context
Definition: istio_echo_server_lib.cc:61
server.h
usage_timer.h
grpc.StatusCode.INTERNAL
tuple INTERNAL
Definition: src/python/grpcio/grpc/__init__.py:277
messages_pb2.SimpleResponse
SimpleResponse
Definition: messages_pb2.py:604
grpc::testing::CallbackServer
Definition: test/cpp/qps/server_callback.cc:97
grpc::testing::BenchmarkCallbackServiceImpl
Definition: test/cpp/qps/server_callback.cc:33
server.h
grpc::testing::BenchmarkCallbackServiceImpl::UnaryCall
grpc::ServerUnaryReactor * UnaryCall(grpc::CallbackServerContext *context, const SimpleRequest *request, SimpleResponse *response) override
Definition: test/cpp/qps/server_callback.cc:36


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:11