Go to the documentation of this file.
19 #ifndef GRPC_TEST_CPP_END2END_TEST_SERVICE_IMPL_H
20 #define GRPC_TEST_CPP_END2END_TEST_SERVICE_IMPL_H
22 #include <condition_variable>
28 #include <gtest/gtest.h>
36 #include "src/proto/grpc/testing/echo.grpc.pb.h"
66 const std::string& expected_transport_security_type,
72 const std::multimap<grpc::string_ref, grpc::string_ref>&
metadata,
77 const std::multimap<grpc::string_ref, grpc::string_ref>&
metadata,
82 const std::multimap<grpc::string_ref, grpc::string_ref>&
metadata,
91 std::unique_lock<std::mutex> lock(
mu_);
95 std::unique_lock<std::mutex> lock(
mu_);
99 std::unique_lock<std::mutex> lock(
mu_);
104 std::unique_lock<std::mutex> lock(
mu_);
117 template <
typename RpcService>
127 request->param().server_notify_client_when_started()) {
133 if (
request->has_param() &&
request->param().server_sleep_us() > 0) {
144 if (
request->has_param() &&
request->param().has_expected_error()) {
147 error.error_message(),
error.binary_error_details());
164 }
else if (
request->has_param() &&
165 request->param().echo_host_from_authority_header()) {
166 auto authority =
context->ExperimentalGetAuthority();
167 std::string authority_str(authority.data(), authority.size());
170 if (
request->has_param() &&
request->param().client_cancel_after_us()) {
172 std::unique_lock<std::mutex> lock(
mu_);
176 while (!
context->IsCancelled()) {
183 std::unique_lock<std::mutex> lock(
mu_);
187 }
else if (
request->has_param() &&
188 request->param().server_cancel_after_us()) {
194 }
else if (!
request->has_param() ||
195 !
request->param().skip_cancelled_check()) {
199 if (
request->has_param() &&
request->param().echo_metadata_initially()) {
200 const std::multimap<grpc::string_ref, grpc::string_ref>& client_metadata =
202 for (
const auto& metadatum : client_metadata) {
209 const std::multimap<grpc::string_ref, grpc::string_ref>& client_metadata =
211 for (
const auto& metadatum : client_metadata) {
216 if (
request->param().debug_info().stack_entries_size() ||
217 !
request->param().debug_info().detail().empty()) {
219 request->param().debug_info().SerializeAsString();
221 serialized_debug_info);
226 (
request->param().expected_client_identity().length() > 0 ||
227 request->param().check_auth_context())) {
230 request->param().expected_client_identity());
233 request->param().response_message_length() > 0) {
291 server_try_cancel_thd =
295 int num_msgs_read = 0;
301 if (server_try_cancel_thd !=
nullptr) {
302 server_try_cancel_thd->join();
303 delete server_try_cancel_thd;
345 server_try_cancel_thd =
349 for (
int i = 0;
i < server_responses_to_send;
i++) {
351 if (
i == server_responses_to_send - 1 && server_coalescing_api != 0) {
358 if (server_try_cancel_thd !=
nullptr) {
359 server_try_cancel_thd->join();
360 delete server_try_cancel_thd;
398 server_try_cancel_thd =
412 if (read_counts == server_write_last) {
420 if (client_try_cancel) {
424 if (server_try_cancel_thd !=
nullptr) {
425 server_try_cancel_thd->join();
426 delete server_try_cancel_thd;
440 std::unique_lock<std::mutex> lock(
mu_);
446 std::unique_lock<std::mutex> lock(
mu_);
458 class CallbackTestServiceImpl
459 :
public grpc::testing::EchoTestService::CallbackService {
484 std::unique_lock<std::mutex> lock(
mu_);
503 #endif // GRPC_TEST_CPP_END2END_TEST_SERVICE_IMPL_H
#define EXPECT_FALSE(condition)
Status BidiStream(ServerContext *context, ServerReaderWriter< EchoResponse, EchoRequest > *stream)
static const Status & CANCELLED
A CANCELLED pre-defined instance.
ServerReadReactor is the interface for a client-streaming RPC.
std::unique_ptr< std::string > host_
const char *const kClientTryCancelRequest
TestServiceSignaller signaller_
void ClientWaitUntilRpcStarted()
bool server_should_continue_
void ServerWaitToContinue()
@ CANCEL_AFTER_PROCESSING
OPENSSL_EXPORT pem_password_cb void * u
CallbackTestServiceImpl()
int MetadataMatchCount(const std::multimap< grpc::string_ref, grpc::string_ref > &metadata, const std::string &key, const std::string &value)
ServerBidiReactor is the interface for a bidirectional streaming RPC.
TestMultipleServiceImpl< grpc::testing::EchoTestService::Service > TestServiceImpl
void CheckServerAuthContext(const ServerContextBase *context, const std::string &expected_transport_security_type, const std::string &expected_client_identity)
Per-message write options.
const char *const kCheckClientInitialMetadataKey
void SignalServerToContinue()
Status Echo2(ServerContext *context, const EchoRequest *request, EchoResponse *response)
void MaybeEchoDeadline(ServerContextBase *context, const EchoRequest *request, EchoResponse *response)
TestMultipleServiceImpl()
const int kServerDefaultResponseStreamsToSend
void ClientWaitUntilRpcStarted()
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
Base class of ServerContext.
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
Status ResponseStream(ServerContext *context, const EchoRequest *request, ServerWriter< EchoResponse > *writer)
const char *const kServerResponseStreamsToSend
GPRAPI void gpr_sleep_until(gpr_timespec until)
Status CheckClientInitialMetadata(ServerContext *context, const SimpleRequest *, SimpleResponse *)
unsigned __int64 uint64_t
ServerTryCancelRequestPhase
static const Status & OK
An OK pre-defined instance.
void ServerTryCancel(ServerContext *context)
Status RequestStream(ServerContext *context, ServerReader< EchoRequest > *reader, EchoResponse *response)
Status Echo(ServerContext *context, const EchoRequest *request, EchoResponse *response)
GPRAPI gpr_timespec gpr_now(gpr_clock_type clock)
void SignalClientThatRpcStarted()
const char *const kServerTryCancelRequest
const char *const kCheckClientInitialMetadataVal
GPRAPI gpr_timespec gpr_time_add(gpr_timespec a, gpr_timespec b)
uint64_t rpcs_waiting_for_client_cancel_
void SignalServerToContinue()
std::string ToString(const grpc::string_ref &r)
GPRAPI gpr_timespec gpr_time_from_micros(int64_t us, gpr_clock_type clock_type)
void SignalServerToContinue()
int GetIntValueFromMetadata(const char *key, const std::multimap< grpc::string_ref, grpc::string_ref > &metadata, int default_value)
GRPC_CUSTOM_UTIL_STATUS Status
const char *const kServerUseCoalescingApi
CallbackTestServiceImpl(const std::string &host)
int GetIntValueFromMetadataHelper(const char *key, const std::multimap< grpc::string_ref, grpc::string_ref > &metadata, int default_value)
EXPECT_EQ(options.token_exchange_service_uri, "https://foo/exchange")
@ CANCEL_DURING_PROCESSING
TestServiceSignaller signaller_
const char *const kServerFinishAfterNReads
std::unique_ptr< std::string > host_
grpc::ClientContext context
std::condition_variable cv_server_continue_
Status Echo1(ServerContext *context, const EchoRequest *request, EchoResponse *response)
EXPECT_TRUE(grpc::experimental::StsCredentialsOptionsFromJson(minimum_valid_json, &options) .ok())
const char *const kDebugInfoTrailerKey
void ClientWaitUntilRpcStarted()
TestMultipleServiceImpl(const std::string &host)
static bool to_string(zval *from)
ServerWriteReactor is the interface for a server-streaming RPC.
@ CANCEL_BEFORE_PROCESSING
static uv_thread_t thread
std::condition_variable cv_rpc_started_
uint64_t RpcsWaitingForClientCancel()
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:32