aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/interop/interop_server.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/cpp/interop/interop_server.cc')
-rw-r--r--test/cpp/interop/interop_server.cc22
1 files changed, 16 insertions, 6 deletions
diff --git a/test/cpp/interop/interop_server.cc b/test/cpp/interop/interop_server.cc
index 58f20aa611..5a810b45ef 100644
--- a/test/cpp/interop/interop_server.cc
+++ b/test/cpp/interop/interop_server.cc
@@ -31,8 +31,6 @@
*
*/
-#include <unistd.h>
-
#include <fstream>
#include <memory>
#include <sstream>
@@ -45,6 +43,7 @@
#include <grpc++/server_context.h>
#include <grpc/grpc.h>
#include <grpc/support/log.h>
+#include <grpc/support/time.h>
#include <grpc/support/useful.h>
#include "src/core/lib/support/string.h"
@@ -56,6 +55,7 @@
#include "test/cpp/util/test_config.h"
DEFINE_bool(use_tls, false, "Whether to use tls.");
+DEFINE_string(custom_credentials_type, "", "User provided credentials type.");
DEFINE_int32(port, 0, "Server port.");
DEFINE_int32(max_send_message_size, -1, "The maximum send message size.");
@@ -90,7 +90,9 @@ void MaybeEchoMetadata(ServerContext* context) {
auto iter = client_metadata.find(kEchoInitialMetadataKey);
if (iter != client_metadata.end()) {
- context->AddInitialMetadata(kEchoInitialMetadataKey, iter->second.data());
+ context->AddInitialMetadata(
+ kEchoInitialMetadataKey,
+ grpc::string(iter->second.begin(), iter->second.end()));
}
iter = client_metadata.find(kEchoTrailingBinMetadataKey);
if (iter != client_metadata.end()) {
@@ -104,7 +106,9 @@ void MaybeEchoMetadata(ServerContext* context) {
if (iter != client_metadata.end()) {
iter = client_metadata.find("user-agent");
if (iter != client_metadata.end()) {
- context->AddInitialMetadata(kEchoUserAgentKey, iter->second.data());
+ context->AddInitialMetadata(
+ kEchoUserAgentKey,
+ grpc::string(iter->second.begin(), iter->second.end()));
}
}
}
@@ -269,6 +273,11 @@ class TestServiceImpl : public TestService::Service {
StreamingOutputCallResponse response;
bool write_success = true;
while (write_success && stream->Read(&request)) {
+ if (request.has_response_status()) {
+ return Status(
+ static_cast<grpc::StatusCode>(request.response_status().code()),
+ request.response_status().message());
+ }
if (request.response_parameters_size() != 0) {
response.mutable_payload()->set_type(request.payload().type());
response.mutable_payload()->set_body(
@@ -339,7 +348,8 @@ void grpc::testing::interop::RunServer(
}
std::unique_ptr<Server> server(builder.BuildAndStart());
gpr_log(GPR_INFO, "Server listening on %s", server_address.str().c_str());
- while (!g_got_sigint) {
- sleep(5);
+ while (!gpr_atm_no_barrier_load(&g_got_sigint)) {
+ gpr_sleep_until(gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
+ gpr_time_from_seconds(5, GPR_TIMESPAN)));
}
}