aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/interop/interop_server.cc
diff options
context:
space:
mode:
authorGravatar Noah Eisen <ncteisen@google.com>2016-10-07 15:35:48 -0700
committerGravatar Noah Eisen <ncteisen@google.com>2016-10-07 15:35:48 -0700
commit2cef11c6674e67aea8e7f63f7ac2869e5d44a7c5 (patch)
treecc6e701ff1300fcde90ab5e20424fc819aeb34e9 /test/cpp/interop/interop_server.cc
parentc5b927abce05bb389be81d8e38c71a9144743653 (diff)
added status request ability to the FullDuplexCall so that cpp server can pass the node client's status_code_and_message test
Diffstat (limited to 'test/cpp/interop/interop_server.cc')
-rw-r--r--test/cpp/interop/interop_server.cc38
1 files changed, 28 insertions, 10 deletions
diff --git a/test/cpp/interop/interop_server.cc b/test/cpp/interop/interop_server.cc
index c05eb5d146..0da37e1551 100644
--- a/test/cpp/interop/interop_server.cc
+++ b/test/cpp/interop/interop_server.cc
@@ -82,6 +82,8 @@ const char kEchoInitialMetadataKey[] = "x-grpc-test-echo-initial";
const char kEchoTrailingBinMetadataKey[] = "x-grpc-test-echo-trailing-bin";
const char kEchoUserAgentKey[] = "x-grpc-test-echo-useragent";
+namespace {
+
void MaybeEchoMetadata(ServerContext* context) {
const auto& client_metadata = context->client_metadata();
GPR_ASSERT(client_metadata.count(kEchoInitialMetadataKey) <= 1);
@@ -145,6 +147,28 @@ bool CheckExpectedCompression(const ServerContext& context,
return true;
}
+Status RequestedStatusOrOk(const SimpleRequest* request) {
+ if (request->has_response_status()) {
+ return Status(
+ static_cast<grpc::StatusCode>(request->response_status().code()),
+ request->response_status().message());
+ } else {
+ return Status::OK;
+ }
+}
+
+Status RequestedStatusOrOk(const StreamingOutputCallRequest* request) {
+ if (request->has_response_status()) {
+ return Status(
+ static_cast<grpc::StatusCode>(request->response_status().code()),
+ request->response_status().message());
+ } else {
+ return Status::OK;
+ }
+}
+
+} // anonomous namespace
+
class TestServiceImpl : public TestService::Service {
public:
Status EmptyCall(ServerContext* context, const grpc::testing::Empty* request,
@@ -179,13 +203,7 @@ class TestServiceImpl : public TestService::Service {
}
}
- if (request->has_response_status()) {
- return Status(
- static_cast<grpc::StatusCode>(request->response_status().code()),
- request->response_status().message());
- }
-
- return Status::OK;
+ return RequestedStatusOrOk(request);
}
Status StreamingOutputCall(
@@ -223,7 +241,7 @@ class TestServiceImpl : public TestService::Service {
write_success = writer->Write(response, wopts);
}
if (write_success) {
- return Status::OK;
+ return RequestedStatusOrOk(request);
} else {
return Status(grpc::StatusCode::INTERNAL, "Error writing response.");
}
@@ -273,7 +291,7 @@ class TestServiceImpl : public TestService::Service {
}
}
if (write_success) {
- return Status::OK;
+ return RequestedStatusOrOk(&request);
} else {
return Status(grpc::StatusCode::INTERNAL, "Error writing response.");
}
@@ -302,7 +320,7 @@ class TestServiceImpl : public TestService::Service {
write_success = stream->Write(response);
}
if (write_success) {
- return Status::OK;
+ return RequestedStatusOrOk(&request);
} else {
return Status(grpc::StatusCode::INTERNAL, "Error writing response.");
}