rls_server.h
Go to the documentation of this file.
1 //
2 // Copyright 2020 gRPC authors.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16 
17 #include "absl/types/optional.h"
18 
20 #include "src/proto/grpc/lookup/v1/rls.grpc.pb.h"
21 #include "src/proto/grpc/lookup/v1/rls.pb.h"
23 
24 namespace grpc {
25 namespace testing {
26 
27 using RlsService =
29 
30 class RlsServiceImpl : public RlsService {
31  public:
33 
34  explicit RlsServiceImpl(ContextProcessingFunc context_proc = nullptr)
35  : context_proc_(std::move(context_proc)) {}
36 
39  const grpc::lookup::v1::RouteLookupRequest* request,
40  grpc::lookup::v1::RouteLookupResponse* response) override;
41 
42  void Start() {}
43 
44  void Shutdown() {}
45 
46  void SetResponse(grpc::lookup::v1::RouteLookupRequest request,
47  grpc::lookup::v1::RouteLookupResponse response,
48  grpc_core::Duration response_delay = grpc_core::Duration());
49 
50  void RemoveResponse(const grpc::lookup::v1::RouteLookupRequest& request);
51 
52  std::vector<grpc::lookup::v1::RouteLookupRequest> GetUnmatchedRequests();
53 
54  private:
55  // Sorting thunk for RouteLookupRequest.
57  bool operator()(const grpc::lookup::v1::RouteLookupRequest& req1,
58  const grpc::lookup::v1::RouteLookupRequest& req2) const {
59  std::map<absl::string_view, absl::string_view> key_map1(
60  req1.key_map().begin(), req1.key_map().end());
61  std::map<absl::string_view, absl::string_view> key_map2(
62  req2.key_map().begin(), req2.key_map().end());
63  if (key_map1 < key_map2) return true;
64  if (req1.reason() < req2.reason()) return true;
65  if (req1.stale_header_data() < req2.stale_header_data()) return true;
66  return false;
67  }
68  };
69 
70  struct ResponseData {
71  grpc::lookup::v1::RouteLookupResponse response;
73  };
74 
77  std::map<grpc::lookup::v1::RouteLookupRequest, ResponseData,
79  responses_ ABSL_GUARDED_BY(&mu_);
80  std::vector<grpc::lookup::v1::RouteLookupRequest> unmatched_requests_
82 };
83 
84 grpc::lookup::v1::RouteLookupRequest BuildRlsRequest(
85  std::map<std::string, std::string> key,
86  grpc::lookup::v1::RouteLookupRequest::Reason reason =
87  grpc::lookup::v1::RouteLookupRequest::REASON_MISS,
88  const char* stale_header_data = "");
89 
90 grpc::lookup::v1::RouteLookupResponse BuildRlsResponse(
91  std::vector<std::string> targets, const char* header_data = "");
92 
93 } // namespace testing
94 } // namespace grpc
testing
Definition: aws_request_signer_test.cc:25
grpc::testing::RlsServiceImpl::Start
void Start()
Definition: rls_server.h:42
targets
std::vector< std::string > targets
Definition: rls.cc:252
grpc::ServerContext
Definition: grpcpp/impl/codegen/server_context.h:566
grpc::testing::RlsServiceImpl::context_proc_
ContextProcessingFunc context_proc_
Definition: rls_server.h:75
grpc::internal::Mutex
Definition: include/grpcpp/impl/codegen/sync.h:59
grpc
Definition: grpcpp/alarm.h:33
benchmark.request
request
Definition: benchmark.py:77
grpc::testing::RlsServiceImpl::ResponseData::response_delay
grpc_core::Duration response_delay
Definition: rls_server.h:72
grpc::testing::RlsService
CountedService< grpc::lookup::v1::RouteLookupService::Service > RlsService
Definition: rls_server.h:28
req1
static uv_shutdown_t req1
Definition: test-shutdown-twice.c:30
grpc::testing::RlsServiceImpl::GetUnmatchedRequests
std::vector< grpc::lookup::v1::RouteLookupRequest > GetUnmatchedRequests()
Definition: rls_server.cc:77
map
zval * map
Definition: php/ext/google/protobuf/encode_decode.c:480
grpc::testing::RlsServiceImpl::RlsRequestLessThan::operator()
bool operator()(const grpc::lookup::v1::RouteLookupRequest &req1, const grpc::lookup::v1::RouteLookupRequest &req2) const
Definition: rls_server.h:57
req2
static uv_shutdown_t req2
Definition: test-shutdown-twice.c:31
grpc::testing::RlsServiceImpl::RouteLookup
grpc::Status RouteLookup(grpc::ServerContext *context, const grpc::lookup::v1::RouteLookupRequest *request, grpc::lookup::v1::RouteLookupResponse *response) override
Definition: rls_server.cc:31
absl::move
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
Definition: abseil-cpp/absl/utility/utility.h:221
grpc::testing::RlsServiceImpl::RemoveResponse
void RemoveResponse(const grpc::lookup::v1::RouteLookupRequest &request)
Definition: rls_server.cc:72
grpc::testing::RlsServiceImpl::RlsRequestLessThan
Definition: rls_server.h:56
time.h
grpc::testing::RlsServiceImpl::Shutdown
void Shutdown()
Definition: rls_server.h:44
grpc::testing::BuildRlsRequest
grpc::lookup::v1::RouteLookupRequest BuildRlsRequest(std::map< std::string, std::string > key, grpc::lookup::v1::RouteLookupRequest::Reason reason, const char *stale_header_data)
Definition: rls_server.cc:82
grpc::testing::RlsServiceImpl::mu_
grpc::internal::Mutex mu_
Definition: rls_server.h:76
grpc::testing::RlsServiceImpl::SetResponse
void SetResponse(grpc::lookup::v1::RouteLookupRequest request, grpc::lookup::v1::RouteLookupResponse response, grpc_core::Duration response_delay=grpc_core::Duration())
Definition: rls_server.cc:65
key
const char * key
Definition: hpack_parser_table.cc:164
grpc::testing::RlsServiceImpl::RlsServiceImpl
RlsServiceImpl(ContextProcessingFunc context_proc=nullptr)
Definition: rls_server.h:34
asyncio_get_stats.response
response
Definition: asyncio_get_stats.py:28
std
Definition: grpcpp/impl/codegen/async_unary_call.h:407
grpc::testing::RlsServiceImpl::ResponseData::response
grpc::lookup::v1::RouteLookupResponse response
Definition: rls_server.h:71
grpc::testing::CountedService
Definition: counted_service.h:28
grpc::Status
Definition: include/grpcpp/impl/codegen/status.h:35
grpc::testing::CountedService::ABSL_GUARDED_BY
size_t request_count_ ABSL_GUARDED_BY(mu_)=0
grpc::testing::RlsServiceImpl
Definition: rls_server.h:30
grpc::testing::RlsServiceImpl::ContextProcessingFunc
std::function< void(grpc::ServerContext *)> ContextProcessingFunc
Definition: rls_server.h:32
context
grpc::ClientContext context
Definition: istio_echo_server_lib.cc:61
grpc::testing::BuildRlsResponse
grpc::lookup::v1::RouteLookupResponse BuildRlsResponse(std::vector< std::string > targets, const char *header_data)
Definition: rls_server.cc:94
header_data
std::string header_data
Definition: rls.cc:253
function
std::function< bool(GrpcTool *, int, const char **, const CliCredentials &, GrpcToolOutputCallback)> function
Definition: grpc_tool.cc:250
grpc_core::Duration
Definition: src/core/lib/gprpp/time.h:122
counted_service.h
grpc::testing::RlsServiceImpl::ResponseData
Definition: rls_server.h:70


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:12