diff options
author | Craig Tiller <ctiller@google.com> | 2023-10-04 19:06:58 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-04 19:06:58 -0700 |
commit | 3b0916fc0aa61d5e2fd452de089f080763dcc531 (patch) | |
tree | 3ad6284a68031f804ccee401e008501164221965 | |
parent | 36b70504e53669a26d5394366015a394983b4e20 (diff) | |
download | grpc-grpc-3b0916fc0aa61d5e2fd452de089f080763dcc531.tar.gz |
Revert "[reflection] Add v1 reflection" (#34594)
Reverts grpc/grpc#34535
-rw-r--r-- | BUILD | 1 | ||||
-rw-r--r-- | CMakeLists.txt | 7 | ||||
-rw-r--r-- | build_autogenerated.yaml | 1 | ||||
-rw-r--r-- | grpc.gyp | 1 | ||||
-rw-r--r-- | include/grpcpp/ext/proto_server_reflection_plugin.h | 8 | ||||
-rw-r--r-- | src/cpp/ext/proto_server_reflection.cc | 116 | ||||
-rw-r--r-- | src/cpp/ext/proto_server_reflection.h | 104 | ||||
-rw-r--r-- | src/cpp/ext/proto_server_reflection_plugin.cc | 30 | ||||
-rw-r--r-- | test/cpp/end2end/proto_server_reflection_test.cc | 80 | ||||
-rw-r--r-- | test/cpp/util/grpc_tool_test.cc | 26 |
10 files changed, 117 insertions, 257 deletions
@@ -2108,7 +2108,6 @@ grpc_cc_library( deps = [ "grpc++", "grpc++_config_proto", - "//src/proto/grpc/reflection/v1:reflection_proto", "//src/proto/grpc/reflection/v1alpha:reflection_proto", ], alwayslink = 1, diff --git a/CMakeLists.txt b/CMakeLists.txt index 925843e7cf..55e4a78f57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -625,9 +625,6 @@ protobuf_generate_grpc_cpp_with_import_path_correction( src/proto/grpc/lookup/v1/rls_config.proto src/proto/grpc/lookup/v1/rls_config.proto ) protobuf_generate_grpc_cpp_with_import_path_correction( - src/proto/grpc/reflection/v1/reflection.proto src/proto/grpc/reflection/v1/reflection.proto -) -protobuf_generate_grpc_cpp_with_import_path_correction( src/proto/grpc/reflection/v1alpha/reflection.proto src/proto/grpc/reflection/v1alpha/reflection.proto ) protobuf_generate_grpc_cpp_with_import_path_correction( @@ -4283,10 +4280,6 @@ endif() if(gRPC_BUILD_CODEGEN) add_library(grpc++_reflection - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1/reflection.pb.cc - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1/reflection.grpc.pb.cc - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1/reflection.pb.h - ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1/reflection.grpc.pb.h ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1alpha/reflection.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc ${_gRPC_PROTO_GENS_DIR}/src/proto/grpc/reflection/v1alpha/reflection.pb.h diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index f2370733b8..a1b0db7444 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -3673,7 +3673,6 @@ libs: headers: - src/cpp/ext/proto_server_reflection.h src: - - src/proto/grpc/reflection/v1/reflection.proto - src/proto/grpc/reflection/v1alpha/reflection.proto - src/cpp/ext/proto_server_reflection.cc - src/cpp/ext/proto_server_reflection_plugin.cc @@ -1842,7 +1842,6 @@ 'grpc++', ], 'sources': [ - 'src/proto/grpc/reflection/v1/reflection.proto', 'src/proto/grpc/reflection/v1alpha/reflection.proto', 'src/cpp/ext/proto_server_reflection.cc', 'src/cpp/ext/proto_server_reflection_plugin.cc', diff --git a/include/grpcpp/ext/proto_server_reflection_plugin.h b/include/grpcpp/ext/proto_server_reflection_plugin.h index b1cbb5a67c..2e3964c957 100644 --- a/include/grpcpp/ext/proto_server_reflection_plugin.h +++ b/include/grpcpp/ext/proto_server_reflection_plugin.h @@ -19,15 +19,11 @@ #ifndef GRPCPP_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H #define GRPCPP_EXT_PROTO_SERVER_REFLECTION_PLUGIN_H -#include <memory> - #include <grpcpp/impl/server_builder_plugin.h> #include <grpcpp/support/config.h> namespace grpc { class ProtoServerReflection; -class ProtoServerReflectionBackend; -class ProtoServerReflectionV1; class ServerInitializer; namespace reflection { @@ -43,9 +39,7 @@ class ProtoServerReflectionPlugin : public grpc::ServerBuilderPlugin { bool has_sync_methods() const override; private: - std::shared_ptr<grpc::ProtoServerReflectionBackend> backend_; - std::shared_ptr<grpc::ProtoServerReflection> reflection_service_v1alpha_; - std::shared_ptr<grpc::ProtoServerReflectionV1> reflection_service_v1_; + std::shared_ptr<grpc::ProtoServerReflection> reflection_service_; }; /// Add proto reflection plugin to \a ServerBuilder. diff --git a/src/cpp/ext/proto_server_reflection.cc b/src/cpp/ext/proto_server_reflection.cc index 7d008794c4..ce49768c6a 100644 --- a/src/cpp/ext/proto_server_reflection.cc +++ b/src/cpp/ext/proto_server_reflection.cc @@ -23,41 +23,58 @@ #include <grpcpp/grpcpp.h> #include <grpcpp/support/interceptor.h> -#include <grpcpp/support/sync_stream.h> // IWYU pragma: no_include "google/protobuf/descriptor.h" // IWYU pragma: no_include <google/protobuf/descriptor.h> -// IWYU pragma: no_include "src/proto/grpc/reflection/v1/reflection.pb.h" -// IWYU pragma: no_include "src/proto/grpc/reflection/v1alpha/reflection.pb.h" + +using grpc::reflection::v1alpha::ErrorResponse; +using grpc::reflection::v1alpha::ExtensionNumberResponse; +using grpc::reflection::v1alpha::ExtensionRequest; +using grpc::reflection::v1alpha::ListServiceResponse; +using grpc::reflection::v1alpha::ServerReflectionRequest; +using grpc::reflection::v1alpha::ServerReflectionResponse; +using grpc::reflection::v1alpha::ServiceResponse; namespace grpc { -template <typename Request, typename Response> -Status ProtoServerReflectionBackend::ServerReflectionInfo( - ServerReaderWriter<Response, Request>* stream) const { - Request request; - Response response; +ProtoServerReflection::ProtoServerReflection() + : descriptor_pool_(protobuf::DescriptorPool::generated_pool()) {} + +void ProtoServerReflection::SetServiceList( + const std::vector<std::string>* services) { + services_ = services; +} + +Status ProtoServerReflection::ServerReflectionInfo( + ServerContext* context, + ServerReaderWriter<ServerReflectionResponse, ServerReflectionRequest>* + stream) { + ServerReflectionRequest request; + ServerReflectionResponse response; Status status; while (stream->Read(&request)) { switch (request.message_request_case()) { - case Request::MessageRequestCase::kFileByFilename: - status = GetFileByName(request.file_by_filename(), &response); + case ServerReflectionRequest::MessageRequestCase::kFileByFilename: + status = GetFileByName(context, request.file_by_filename(), &response); break; - case Request::MessageRequestCase::kFileContainingSymbol: - status = GetFileContainingSymbol(request.file_containing_symbol(), - &response); + case ServerReflectionRequest::MessageRequestCase::kFileContainingSymbol: + status = GetFileContainingSymbol( + context, request.file_containing_symbol(), &response); break; - case Request::MessageRequestCase::kFileContainingExtension: + case ServerReflectionRequest::MessageRequestCase:: + kFileContainingExtension: status = GetFileContainingExtension( - &request.file_containing_extension(), &response); + context, &request.file_containing_extension(), &response); break; - case Request::MessageRequestCase::kAllExtensionNumbersOfType: + case ServerReflectionRequest::MessageRequestCase:: + kAllExtensionNumbersOfType: status = GetAllExtensionNumbers( - request.all_extension_numbers_of_type(), + context, request.all_extension_numbers_of_type(), response.mutable_all_extension_numbers_response()); break; - case Request::MessageRequestCase::kListServices: - status = ListService(response.mutable_list_services_response()); + case ServerReflectionRequest::MessageRequestCase::kListServices: + status = + ListService(context, response.mutable_list_services_response()); break; default: status = Status(StatusCode::UNIMPLEMENTED, ""); @@ -67,34 +84,35 @@ Status ProtoServerReflectionBackend::ServerReflectionInfo( FillErrorResponse(status, response.mutable_error_response()); } response.set_valid_host(request.host()); - response.set_allocated_original_request(new Request(request)); + response.set_allocated_original_request( + new ServerReflectionRequest(request)); stream->Write(response); } + return Status::OK; } -template <typename Response> -void ProtoServerReflectionBackend::FillErrorResponse( - const Status& status, Response* error_response) const { +void ProtoServerReflection::FillErrorResponse(const Status& status, + ErrorResponse* error_response) { error_response->set_error_code(status.error_code()); error_response->set_error_message(status.error_message()); } -template <typename Response> -Status ProtoServerReflectionBackend::ListService(Response* response) const { +Status ProtoServerReflection::ListService(ServerContext* /*context*/, + ListServiceResponse* response) { if (services_ == nullptr) { return Status(StatusCode::NOT_FOUND, "Services not found."); } for (const auto& value : *services_) { - auto* service_response = response->add_service(); + ServiceResponse* service_response = response->add_service(); service_response->set_name(value); } return Status::OK; } -template <typename Response> -Status ProtoServerReflectionBackend::GetFileByName(const std::string& file_name, - Response* response) const { +Status ProtoServerReflection::GetFileByName( + ServerContext* /*context*/, const std::string& file_name, + ServerReflectionResponse* response) { if (descriptor_pool_ == nullptr) { return Status::CANCELLED; } @@ -109,9 +127,9 @@ Status ProtoServerReflectionBackend::GetFileByName(const std::string& file_name, return Status::OK; } -template <typename Response> -Status ProtoServerReflectionBackend::GetFileContainingSymbol( - const std::string& symbol, Response* response) const { +Status ProtoServerReflection::GetFileContainingSymbol( + ServerContext* /*context*/, const std::string& symbol, + ServerReflectionResponse* response) { if (descriptor_pool_ == nullptr) { return Status::CANCELLED; } @@ -126,9 +144,9 @@ Status ProtoServerReflectionBackend::GetFileContainingSymbol( return Status::OK; } -template <typename Request, typename Response> -Status ProtoServerReflectionBackend::GetFileContainingExtension( - const Request* request, Response* response) const { +Status ProtoServerReflection::GetFileContainingExtension( + ServerContext* /*context*/, const ExtensionRequest* request, + ServerReflectionResponse* response) { if (descriptor_pool_ == nullptr) { return Status::CANCELLED; } @@ -150,9 +168,9 @@ Status ProtoServerReflectionBackend::GetFileContainingExtension( return Status::OK; } -template <typename Response> -Status ProtoServerReflectionBackend::GetAllExtensionNumbers( - const std::string& type, Response* response) const { +Status ProtoServerReflection::GetAllExtensionNumbers( + ServerContext* /*context*/, const std::string& type, + ExtensionNumberResponse* response) { if (descriptor_pool_ == nullptr) { return Status::CANCELLED; } @@ -172,10 +190,10 @@ Status ProtoServerReflectionBackend::GetAllExtensionNumbers( return Status::OK; } -template <typename Response> -void ProtoServerReflectionBackend::FillFileDescriptorResponse( - const protobuf::FileDescriptor* file_desc, Response* response, - std::unordered_set<std::string>* seen_files) const { +void ProtoServerReflection::FillFileDescriptorResponse( + const protobuf::FileDescriptor* file_desc, + ServerReflectionResponse* response, + std::unordered_set<std::string>* seen_files) { if (seen_files->find(file_desc->name()) != seen_files->end()) { return; } @@ -192,18 +210,4 @@ void ProtoServerReflectionBackend::FillFileDescriptorResponse( } } -Status ProtoServerReflection::ServerReflectionInfo( - ServerContext* /* context */, - ServerReaderWriter<reflection::v1alpha::ServerReflectionResponse, - reflection::v1alpha::ServerReflectionRequest>* stream) { - return backend_->ServerReflectionInfo(stream); -} - -Status ProtoServerReflectionV1::ServerReflectionInfo( - ServerContext* /* context */, - ServerReaderWriter<reflection::v1::ServerReflectionResponse, - reflection::v1::ServerReflectionRequest>* stream) { - return backend_->ServerReflectionInfo(stream); -} - } // namespace grpc diff --git a/src/cpp/ext/proto_server_reflection.h b/src/cpp/ext/proto_server_reflection.h index 5482c9bc25..60a6f5614a 100644 --- a/src/cpp/ext/proto_server_reflection.h +++ b/src/cpp/ext/proto_server_reflection.h @@ -19,10 +19,8 @@ #ifndef GRPC_SRC_CPP_EXT_PROTO_SERVER_REFLECTION_H #define GRPC_SRC_CPP_EXT_PROTO_SERVER_REFLECTION_H -#include <memory> #include <string> #include <unordered_set> -#include <utility> #include <vector> #include <grpcpp/grpcpp.h> @@ -31,72 +29,18 @@ #include <grpcpp/support/status.h> #include <grpcpp/support/sync_stream.h> -#include "src/proto/grpc/reflection/v1/reflection.grpc.pb.h" -#include "src/proto/grpc/reflection/v1/reflection.pb.h" #include "src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.h" #include "src/proto/grpc/reflection/v1alpha/reflection.pb.h" namespace grpc { -class ProtoServerReflectionBackend { - public: - ProtoServerReflectionBackend() - : descriptor_pool_(protobuf::DescriptorPool::generated_pool()) {} - - void SetServiceList(const std::vector<std::string>* services) { - services_ = services; - } - - template <typename Request, typename Response> - Status ServerReflectionInfo( - ServerReaderWriter<Response, Request>* stream) const; - - private: - template <typename Response> - Status ListService(Response* response) const; - - template <typename Response> - Status GetFileByName(const std::string& file_name, Response* response) const; - - template <typename Response> - Status GetFileContainingSymbol(const std::string& symbol, - Response* response) const; - - template <typename Request, typename Response> - Status GetFileContainingExtension(const Request* request, - Response* response) const; - - template <typename Response> - Status GetAllExtensionNumbers(const std::string& type, - Response* response) const; - - template <typename Response> - void FillFileDescriptorResponse( - const protobuf::FileDescriptor* file_desc, Response* response, - std::unordered_set<std::string>* seen_files) const; - - template <typename Response> - void FillErrorResponse(const Status& status, Response* error_response) const; - - const protobuf::DescriptorPool* descriptor_pool_; - const std::vector<string>* services_; -}; - class ProtoServerReflection final : public reflection::v1alpha::ServerReflection::Service { public: - ProtoServerReflection() - : grpc::ProtoServerReflection( - std::make_shared<ProtoServerReflectionBackend>()) {} - - explicit ProtoServerReflection( - std::shared_ptr<ProtoServerReflectionBackend> backend) - : backend_(std::move(backend)) {} + ProtoServerReflection(); // Add the full names of registered services - void SetServiceList(const std::vector<std::string>* services) { - backend_->SetServiceList(services); - } + void SetServiceList(const std::vector<std::string>* services); // implementation of ServerReflectionInfo(stream ServerReflectionRequest) rpc // in ServerReflection service @@ -106,26 +50,36 @@ class ProtoServerReflection final reflection::v1alpha::ServerReflectionRequest>* stream) override; - std::shared_ptr<ProtoServerReflectionBackend> backend_; -}; + private: + Status ListService(ServerContext* context, + reflection::v1alpha::ListServiceResponse* response); -class ProtoServerReflectionV1 final - : public reflection::v1::ServerReflection::Service { - public: - explicit ProtoServerReflectionV1( - std::shared_ptr<ProtoServerReflectionBackend> backend) - : backend_(std::move(backend)) {} + Status GetFileByName(ServerContext* context, const std::string& file_name, + reflection::v1alpha::ServerReflectionResponse* response); - // implementation of ServerReflectionInfo(stream ServerReflectionRequest) rpc - // in ServerReflection service - Status ServerReflectionInfo( - ServerContext* /* context */, - ServerReaderWriter<reflection::v1::ServerReflectionResponse, - reflection::v1::ServerReflectionRequest>* stream) - override; + Status GetFileContainingSymbol( + ServerContext* context, const std::string& symbol, + reflection::v1alpha::ServerReflectionResponse* response); - private: - std::shared_ptr<ProtoServerReflectionBackend> backend_; + Status GetFileContainingExtension( + ServerContext* context, + const reflection::v1alpha::ExtensionRequest* request, + reflection::v1alpha::ServerReflectionResponse* response); + + Status GetAllExtensionNumbers( + ServerContext* context, const std::string& type, + reflection::v1alpha::ExtensionNumberResponse* response); + + void FillFileDescriptorResponse( + const protobuf::FileDescriptor* file_desc, + reflection::v1alpha::ServerReflectionResponse* response, + std::unordered_set<std::string>* seen_files); + + void FillErrorResponse(const Status& status, + reflection::v1alpha::ErrorResponse* error_response); + + const protobuf::DescriptorPool* descriptor_pool_; + const std::vector<string>* services_; }; } // namespace grpc diff --git a/src/cpp/ext/proto_server_reflection_plugin.cc b/src/cpp/ext/proto_server_reflection_plugin.cc index 78080fa8cb..4aae3ea17b 100644 --- a/src/cpp/ext/proto_server_reflection_plugin.cc +++ b/src/cpp/ext/proto_server_reflection_plugin.cc @@ -16,9 +16,6 @@ // // -#include <memory> -#include <string> - #include <grpcpp/ext/proto_server_reflection_plugin.h> #include <grpcpp/impl/server_builder_plugin.h> #include <grpcpp/impl/server_initializer.h> @@ -30,40 +27,35 @@ namespace grpc { namespace reflection { ProtoServerReflectionPlugin::ProtoServerReflectionPlugin() - : backend_(std::make_shared<ProtoServerReflectionBackend>()), - reflection_service_v1alpha_( - std::make_shared<ProtoServerReflection>(backend_)), - reflection_service_v1_( - std::make_shared<ProtoServerReflectionV1>(backend_)) {} + : reflection_service_(new grpc::ProtoServerReflection()) {} std::string ProtoServerReflectionPlugin::name() { return "proto_server_reflection"; } void ProtoServerReflectionPlugin::InitServer(grpc::ServerInitializer* si) { - si->RegisterService(reflection_service_v1_); - si->RegisterService(reflection_service_v1alpha_); + si->RegisterService(reflection_service_); } void ProtoServerReflectionPlugin::Finish(grpc::ServerInitializer* si) { - backend_->SetServiceList(si->GetServiceList()); + reflection_service_->SetServiceList(si->GetServiceList()); } void ProtoServerReflectionPlugin::ChangeArguments(const std::string& /*name*/, void* /*value*/) {} bool ProtoServerReflectionPlugin::has_sync_methods() const { - return (reflection_service_v1_ && - reflection_service_v1_->has_synchronous_methods()) || - (reflection_service_v1alpha_ && - reflection_service_v1alpha_->has_synchronous_methods()); + if (reflection_service_) { + return reflection_service_->has_synchronous_methods(); + } + return false; } bool ProtoServerReflectionPlugin::has_async_methods() const { - return (reflection_service_v1_ && - reflection_service_v1_->has_async_methods()) || - (reflection_service_v1alpha_ && - reflection_service_v1alpha_->has_async_methods()); + if (reflection_service_) { + return reflection_service_->has_async_methods(); + } + return false; } static std::unique_ptr<grpc::ServerBuilderPlugin> CreateProtoReflection() { diff --git a/test/cpp/end2end/proto_server_reflection_test.cc b/test/cpp/end2end/proto_server_reflection_test.cc index 17b3913b36..5f6c38f3c1 100644 --- a/test/cpp/end2end/proto_server_reflection_test.cc +++ b/test/cpp/end2end/proto_server_reflection_test.cc @@ -16,12 +16,10 @@ // // -#include <memory> -#include <vector> - -#include <gmock/gmock-matchers.h> #include <gtest/gtest.h> +#include "absl/memory/memory.h" + #include <grpc/grpc.h> #include <grpcpp/channel.h> #include <grpcpp/client_context.h> @@ -33,13 +31,10 @@ #include <grpcpp/server_builder.h> #include <grpcpp/server_context.h> -#include "src/proto/grpc/reflection/v1/reflection.grpc.pb.h" -#include "src/proto/grpc/reflection/v1/reflection.pb.h" -#include "src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.h" -#include "src/proto/grpc/reflection/v1alpha/reflection.pb.h" #include "src/proto/grpc/testing/echo.grpc.pb.h" #include "test/core/util/port.h" #include "test/core/util/test_config.h" +#include "test/cpp/end2end/test_service_impl.h" #include "test/cpp/util/proto_reflection_descriptor_database.h" namespace grpc { @@ -61,9 +56,10 @@ class ProtoServerReflectionTest : public ::testing::Test { void ResetStub() { string target = "dns:localhost:" + to_string(port_); - channel_ = grpc::CreateChannel(target, InsecureChannelCredentials()); - stub_ = grpc::testing::EchoTestService::NewStub(channel_); - desc_db_ = std::make_unique<ProtoReflectionDescriptorDatabase>(channel_); + std::shared_ptr<Channel> channel = + grpc::CreateChannel(target, InsecureChannelCredentials()); + stub_ = grpc::testing::EchoTestService::NewStub(channel); + desc_db_ = std::make_unique<ProtoReflectionDescriptorDatabase>(channel); desc_pool_ = std::make_unique<protobuf::DescriptorPool>(desc_db_.get()); } @@ -121,18 +117,8 @@ class ProtoServerReflectionTest : public ::testing::Test { EXPECT_EQ(desc->DebugString(), ref_desc->DebugString()); } - template <typename Response> - std::vector<std::string> ServicesFromResponse(const Response& response) { - std::vector<std::string> services; - for (const auto& service : response.list_services_response().service()) { - services.emplace_back(service.name()); - } - return services; - } - protected: std::unique_ptr<Server> server_; - std::shared_ptr<Channel> channel_; std::unique_ptr<grpc::testing::EchoTestService::Stub> stub_; std::unique_ptr<ProtoReflectionDescriptorDatabase> desc_db_; std::unique_ptr<protobuf::DescriptorPool> desc_pool_; @@ -156,58 +142,6 @@ TEST_F(ProtoServerReflectionTest, CheckResponseWithLocalDescriptorPool) { } } -TEST_F(ProtoServerReflectionTest, V1AlphaApiInstalled) { - ResetStub(); - using Service = reflection::v1alpha::ServerReflection; - using Request = reflection::v1alpha::ServerReflectionRequest; - using Response = reflection::v1alpha::ServerReflectionResponse; - Service::Stub stub(channel_); - ClientContext context; - auto reader_writer = stub.ServerReflectionInfo(&context); - Request request; - request.set_list_services("*"); - reader_writer->Write(request); - Response response; - ASSERT_EQ(reader_writer->Read(&response), true); - EXPECT_THAT(ServicesFromResponse(response), - ::testing::UnorderedElementsAre( - reflection::v1alpha::ServerReflection::service_full_name(), - reflection::v1::ServerReflection::service_full_name())); - request = Request::default_instance(); - request.set_file_containing_symbol(Service::service_full_name()); - reader_writer->WriteLast(request, WriteOptions()); - response = Response::default_instance(); - ASSERT_EQ(reader_writer->Read(&response), true); - EXPECT_EQ(response.file_descriptor_response().file_descriptor_proto_size(), 1) - << response.DebugString(); -} - -TEST_F(ProtoServerReflectionTest, V1ApiInstalled) { - ResetStub(); - using Service = reflection::v1::ServerReflection; - using Request = reflection::v1::ServerReflectionRequest; - using Response = reflection::v1::ServerReflectionResponse; - Service::Stub stub(channel_); - ClientContext context; - auto reader_writer = stub.ServerReflectionInfo(&context); - Request request; - request.set_list_services("*"); - reader_writer->Write(request); - Response response; - ASSERT_TRUE(reader_writer->Read(&response)); - EXPECT_THAT(ServicesFromResponse(response), - ::testing::UnorderedElementsAre( - reflection::v1alpha::ServerReflection::service_full_name(), - reflection::v1::ServerReflection::service_full_name())); - request = Request::default_instance(); - request.set_file_containing_symbol(Service::service_full_name()); - reader_writer->WriteLast(request, WriteOptions()); - response = Response::default_instance(); - ASSERT_TRUE(reader_writer->Read(&response)); - EXPECT_EQ(response.file_descriptor_response().file_descriptor_proto_size(), 1) - << response.DebugString(); -} - } // namespace testing } // namespace grpc diff --git a/test/cpp/util/grpc_tool_test.cc b/test/cpp/util/grpc_tool_test.cc index 890c554665..c204702dfd 100644 --- a/test/cpp/util/grpc_tool_test.cc +++ b/test/cpp/util/grpc_tool_test.cc @@ -21,12 +21,10 @@ #include <chrono> #include <sstream> -#include <gmock/gmock-matchers.h> #include <gtest/gtest.h> #include "absl/flags/declare.h" #include "absl/flags/flag.h" -#include "absl/strings/str_split.h" #include <grpc/grpc.h> #include <grpc/support/alloc.h> @@ -386,11 +384,9 @@ TEST_F(GrpcToolTest, ListCommand) { EXPECT_TRUE(0 == GrpcToolMainLib(ArraySize(argv), argv, TestCliCredentials(), std::bind(PrintStream, &output_stream, std::placeholders::_1))); - EXPECT_THAT(absl::StrSplit(output_stream.str(), "\n"), - ::testing::UnorderedElementsAre( - "grpc.testing.EchoTestService", - "grpc.reflection.v1alpha.ServerReflection", - "grpc.reflection.v1.ServerReflection", "")); + EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(), + "grpc.testing.EchoTestService\n" + "grpc.reflection.v1alpha.ServerReflection\n")); ShutdownServer(); } @@ -1399,11 +1395,9 @@ TEST_F(GrpcToolTest, ListCommandOverrideSslHostName) { 0 == GrpcToolMainLib( ArraySize(argv), argv, TestCliCredentials(true), std::bind(PrintStream, &output_stream, std::placeholders::_1))); - EXPECT_THAT( - absl::StrSplit(output_stream.str(), '\n'), - ::testing::UnorderedElementsAre( - "grpc.testing.EchoTestService", "grpc.reflection.v1.ServerReflection", - "grpc.reflection.v1alpha.ServerReflection", "")); + EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(), + "grpc.testing.EchoTestService\n" + "grpc.reflection.v1alpha.ServerReflection\n")); absl::SetFlag(&FLAGS_channel_creds_type, ""); absl::SetFlag(&FLAGS_ssl_target, ""); @@ -1426,11 +1420,9 @@ TEST_F(GrpcToolTest, ConfiguringDefaultServiceConfig) { std::bind(PrintStream, &output_stream, std::placeholders::_1))); absl::SetFlag(&FLAGS_default_service_config, ""); - EXPECT_THAT( - absl::StrSplit(output_stream.str().c_str(), '\n'), - ::testing::UnorderedElementsAre( - "grpc.testing.EchoTestService", "grpc.reflection.v1.ServerReflection", - "grpc.reflection.v1alpha.ServerReflection", "")); + EXPECT_TRUE(0 == strcmp(output_stream.str().c_str(), + "grpc.testing.EchoTestService\n" + "grpc.reflection.v1alpha.ServerReflection\n")); ShutdownServer(); } |