Be able to specify FCUnaryService just like AsyncService so that all

relevant methods get treated this way.
pull/7018/head
Vijay Pai 8 years ago
parent 581097fe0d
commit ff91dea149
  1. 16
      src/compiler/cpp_generator.cc
  2. 34
      test/cpp/end2end/hybrid_end2end_test.cc

@ -826,6 +826,22 @@ void PrintHeaderService(Printer *printer, const Service *service,
PrintHeaderServerMethodFCUnary(printer, service->method(i).get(), vars);
}
printer->Print("typedef ");
for (int i = 0; i < service->method_count(); ++i) {
(*vars)["method_name"] = service->method(i).get()->name();
if (service->method(i)->NoStreaming()) {
printer->Print(*vars, "WithFCUnaryMethod_$method_name$<");
}
}
printer->Print("Service");
for (int i = 0; i < service->method_count(); ++i) {
if (service->method(i)->NoStreaming()) {
printer->Print(" >");
}
}
printer->Print(" FCUnaryService;\n");
printer->Outdent();
printer->Print("};\n");
printer->Print(service->GetTrailingComments().c_str());

@ -454,6 +454,40 @@ TEST_F(HybridEnd2endTest, AsyncRequestStreamResponseStream_SyncFCUnaryDupService
request_stream_handler_thread.join();
}
// Add a second service that is fully FCUnary
class FullyFCUnaryDupPkg : public duplicate::EchoTestService::FCUnaryService {
public:
Status FCEcho(ServerContext* context, FCUnary<EchoRequest,EchoResponse>* fc_unary) GRPC_OVERRIDE {
EchoRequest req;
EchoResponse resp;
uint32_t next_msg_sz;
fc_unary->NextMessageSize(&next_msg_sz);
gpr_log(GPR_INFO, "FC Unary Next Message Size is %u", next_msg_sz);
GPR_ASSERT(fc_unary->Read(&req));
resp.set_message(req.message() + "_dup");
GPR_ASSERT(fc_unary->Write(resp));
return Status::OK;
}
};
TEST_F(HybridEnd2endTest, AsyncRequestStreamResponseStream_SyncFullyFCUnaryDupService) {
typedef EchoTestService::WithAsyncMethod_RequestStream<
EchoTestService::WithAsyncMethod_ResponseStream<TestServiceImpl>>
SType;
SType service;
FullyFCUnaryDupPkg dup_service;
SetUpServer(&service, &dup_service, nullptr, 8192);
ResetStub();
std::thread response_stream_handler_thread(HandleServerStreaming<SType>,
&service, cqs_[0].get());
std::thread request_stream_handler_thread(HandleClientStreaming<SType>,
&service, cqs_[1].get());
TestAllMethods();
SendEchoToDupService();
response_stream_handler_thread.join();
request_stream_handler_thread.join();
}
// Add a second service with one async method.
TEST_F(HybridEnd2endTest, AsyncRequestStreamResponseStream_AsyncDupService) {
typedef EchoTestService::WithAsyncMethod_RequestStream<

Loading…
Cancel
Save