aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Mahak Mukhi <mmukhi@google.com>2017-04-13 14:45:26 -0700
committerGravatar Mahak Mukhi <mmukhi@google.com>2017-04-13 14:45:26 -0700
commit2814b5148e9f902ef2893da34cc7a81106668e9a (patch)
tree12e4d598d5ca19c6ac2fea21e3daaaeddb0d70ce /src
parent13d85d499a1f7a3a48066511dd9db856f7671e2d (diff)
formatting
Diffstat (limited to 'src')
-rw-r--r--src/compiler/cpp_generator.cc60
-rw-r--r--src/compiler/cpp_generator.h26
-rw-r--r--src/compiler/cpp_plugin.cc11
3 files changed, 54 insertions, 43 deletions
diff --git a/src/compiler/cpp_generator.cc b/src/compiler/cpp_generator.cc
index c13577ce52..d64f8c9532 100644
--- a/src/compiler/cpp_generator.cc
+++ b/src/compiler/cpp_generator.cc
@@ -1408,7 +1408,8 @@ grpc::string GetSourceEpilogue(grpc_generator::File *file,
}
// TODO(mmukhi): Make sure we need parameters or not.
-grpc::string GetMockPrologue(grpc_generator::File *file, const Parameters & /*params*/ ) {
+grpc::string GetMockPrologue(grpc_generator::File *file,
+ const Parameters & /*params*/) {
grpc::string output;
{
// Scope the output stream so it closes and finalizes output to the string.
@@ -1434,7 +1435,8 @@ grpc::string GetMockPrologue(grpc_generator::File *file, const Parameters & /*pa
}
// TODO(mmukhi): Add client-stream and completion-queue headers.
-grpc::string GetMockIncludes(grpc_generator::File *file, const Parameters &params) {
+grpc::string GetMockIncludes(grpc_generator::File *file,
+ const Parameters &params) {
grpc::string output;
{
// Scope the output stream so it closes and finalizes output to the string.
@@ -1442,9 +1444,8 @@ grpc::string GetMockIncludes(grpc_generator::File *file, const Parameters &param
std::map<grpc::string, grpc::string> vars;
static const char *headers_strs[] = {
- "grpc++/impl/codegen/async_stream.h",
- "grpc++/impl/codegen/sync_stream.h",
- "gmock/gmock.h",
+ "grpc++/impl/codegen/async_stream.h",
+ "grpc++/impl/codegen/sync_stream.h", "gmock/gmock.h",
};
std::vector<grpc::string> headers(headers_strs, array_end(headers_strs));
PrintIncludes(printer.get(), headers, params);
@@ -1452,7 +1453,7 @@ grpc::string GetMockIncludes(grpc_generator::File *file, const Parameters &param
if (!file->package().empty()) {
std::vector<grpc::string> parts = file->package_parts();
- for(auto part = parts.begin(); part != parts.end(); part++) {
+ for (auto part = parts.begin(); part != parts.end(); part++) {
vars["part"] = *part;
printer->Print(vars, "namespace $part$ {\n");
}
@@ -1475,36 +1476,33 @@ void PrintMockClientMethods(grpc_generator::Printer *printer,
*vars,
"MOCK_METHOD3($Method$, ::grpc::Status(::grpc::ClientContext* context, "
"const $Request$& request, $Response$* response));\n");
- printer->Print(
- *vars,
- "MOCK_METHOD3(Async$Method$Raw, "
- "::grpc::ClientAsyncResponseReaderInterface< $Response$>*"
- "(::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq));\n");
+ printer->Print(*vars,
+ "MOCK_METHOD3(Async$Method$Raw, "
+ "::grpc::ClientAsyncResponseReaderInterface< $Response$>*"
+ "(::grpc::ClientContext* context, const $Request$& request, "
+ "::grpc::CompletionQueue* cq));\n");
} else if (ClientOnlyStreaming(method)) {
printer->Print(
*vars,
"MOCK_METHOD2($Method$Raw, "
"::grpc::ClientWriterInterface< $Request$>*"
"(::grpc::ClientContext* context, $Response$* response));\n");
- printer->Print(
- *vars,
- "MOCK_METHOD4(Async$Method$Raw, "
- "::grpc::ClientAsyncWriterInterface< $Request$>*"
- "(::grpc::ClientContext* context, $Response$* response, "
- "::grpc::CompletionQueue* cq, void* tag));\n");
+ printer->Print(*vars,
+ "MOCK_METHOD4(Async$Method$Raw, "
+ "::grpc::ClientAsyncWriterInterface< $Request$>*"
+ "(::grpc::ClientContext* context, $Response$* response, "
+ "::grpc::CompletionQueue* cq, void* tag));\n");
} else if (ServerOnlyStreaming(method)) {
printer->Print(
*vars,
"MOCK_METHOD2($Method$Raw, "
"::grpc::ClientReaderInterface< $Response$>*"
"(::grpc::ClientContext* context, const $Request$& request));\n");
- printer->Print(
- *vars,
- "MOCK_METHOD4(Async$Method$Raw, "
- "::grpc::ClientAsyncReaderInterface< $Response$>*"
- "(::grpc::ClientContext* context, const $Request$& request, "
- "::grpc::CompletionQueue* cq, void* tag));\n");
+ printer->Print(*vars,
+ "MOCK_METHOD4(Async$Method$Raw, "
+ "::grpc::ClientAsyncReaderInterface< $Response$>*"
+ "(::grpc::ClientContext* context, const $Request$& request, "
+ "::grpc::CompletionQueue* cq, void* tag));\n");
} else if (method->BidiStreaming()) {
printer->Print(
*vars,
@@ -1521,8 +1519,8 @@ void PrintMockClientMethods(grpc_generator::Printer *printer,
}
void PrintMockService(grpc_generator::Printer *printer,
- const grpc_generator::Service *service,
- std::map<grpc::string, grpc::string> *vars) {
+ const grpc_generator::Service *service,
+ std::map<grpc::string, grpc::string> *vars) {
(*vars)["Service"] = service->name();
printer->Print(service->GetLeadingComments("//").c_str());
@@ -1540,7 +1538,6 @@ void PrintMockService(grpc_generator::Printer *printer,
}
printer->Outdent();
printer->Print("};\n");
-
}
grpc::string GetMockServices(grpc_generator::File *file,
@@ -1557,12 +1554,12 @@ grpc::string GetMockServices(grpc_generator::File *file,
vars["Package"].append(".");
}
- if(!params.services_namespace.empty()) {
+ if (!params.services_namespace.empty()) {
vars["services_namespace"] = params.services_namespace;
printer->Print(vars, "\nnamespace $services_namespace$ {\n\n");
}
- for (int i =0; i < file->service_count(); i++) {
+ for (int i = 0; i < file->service_count(); i++) {
PrintMockService(printer.get(), file->service(i).get(), &vars);
printer->Print("\n");
}
@@ -1574,13 +1571,14 @@ grpc::string GetMockServices(grpc_generator::File *file,
return output;
}
-grpc::string GetMockEpilogue(grpc_generator::File *file, const Parameters & /*params*/) {
+grpc::string GetMockEpilogue(grpc_generator::File *file,
+ const Parameters & /*params*/) {
grpc::string temp;
if (!file->package().empty()) {
std::vector<grpc::string> parts = file->package_parts();
- for (auto part = parts.begin(); part != parts.end(); part++){
+ for (auto part = parts.begin(); part != parts.end(); part++) {
temp.append("} // namespace ");
temp.append(*part);
temp.append("\n");
diff --git a/src/compiler/cpp_generator.h b/src/compiler/cpp_generator.h
index cd672d120d..6119ebe289 100644
--- a/src/compiler/cpp_generator.h
+++ b/src/compiler/cpp_generator.h
@@ -65,6 +65,8 @@ struct Parameters {
bool use_system_headers;
// Prefix to any grpc include
grpc::string grpc_search_path;
+ // Generate GMOCK code to facilitate unit testing.
+ bool generate_mock_code;
};
// Return the prologue of the generated header file.
@@ -101,35 +103,35 @@ grpc::string GetSourceEpilogue(grpc_generator::File *file,
// Return the prologue of the generated mock file.
grpc::string GetMockPrologue(grpc_generator::File *file,
- const Parameters &params);
+ const Parameters &params);
// Return the includes needed for generated mock file.
grpc::string GetMockIncludes(grpc_generator::File *file,
- const Parameters &params);
+ const Parameters &params);
// Return the services for generated mock file.
-grpc::string GetMockServices(grpc_generator::File* file,
- const Parameters &params);
+grpc::string GetMockServices(grpc_generator::File *file,
+ const Parameters &params);
// Return the epilogue of generated mock file.
-grpc::string GetMockEpilogue(grpc_generator::File* file,
- const Parameters &params);
+grpc::string GetMockEpilogue(grpc_generator::File *file,
+ const Parameters &params);
// Return the prologue of the generated mock file.
grpc::string GetMockPrologue(grpc_generator::File *file,
- const Parameters &params);
+ const Parameters &params);
// Return the includes needed for generated mock file.
grpc::string GetMockIncludes(grpc_generator::File *file,
- const Parameters &params);
+ const Parameters &params);
// Return the services for generated mock file.
-grpc::string GetMockServices(grpc_generator::File* file,
- const Parameters &params);
+grpc::string GetMockServices(grpc_generator::File *file,
+ const Parameters &params);
// Return the epilogue of generated mock file.
-grpc::string GetMockEpilogue(grpc_generator::File* file,
- const Parameters &params);
+grpc::string GetMockEpilogue(grpc_generator::File *file,
+ const Parameters &params);
} // namespace grpc_cpp_generator
diff --git a/src/compiler/cpp_plugin.cc b/src/compiler/cpp_plugin.cc
index a0986d92ce..35f1bf3e93 100644
--- a/src/compiler/cpp_plugin.cc
+++ b/src/compiler/cpp_plugin.cc
@@ -62,6 +62,7 @@ class CppGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
grpc_cpp_generator::Parameters generator_parameters;
generator_parameters.use_system_headers = true;
+ generator_parameters.generate_mock_code = false;
ProtoBufFile pbfile(file);
@@ -85,6 +86,13 @@ class CppGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
}
} else if (param[0] == "grpc_search_path") {
generator_parameters.grpc_search_path = param[1];
+ } else if (param[0] == "generate_mock_code") {
+ if (param[1] == "true") {
+ generator_parameters.generate_mock_code = true;
+ } else if (param[1] != "false") {
+ *error = grpc::string("Invalid parameter: ") + *parameter_string;
+ return false;
+ }
} else {
*error = grpc::string("Unknown parameter: ") + *parameter_string;
return false;
@@ -114,6 +122,9 @@ class CppGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
grpc::protobuf::io::CodedOutputStream source_coded_out(source_output.get());
source_coded_out.WriteRaw(source_code.data(), source_code.size());
+ if (!generator_parameters.generate_mock_code) {
+ return true;
+ }
grpc::string mock_code =
grpc_cpp_generator::GetMockPrologue(&pbfile, generator_parameters) +
grpc_cpp_generator::GetMockIncludes(&pbfile, generator_parameters) +