diff options
Diffstat (limited to 'test/cpp')
-rw-r--r-- | test/cpp/end2end/async_end2end_test.cc | 11 | ||||
-rw-r--r-- | test/cpp/end2end/end2end_test.cc | 1 | ||||
-rw-r--r-- | test/cpp/end2end/generic_end2end_test.cc | 4 | ||||
-rw-r--r-- | test/cpp/interop/interop_client.cc | 42 | ||||
-rw-r--r-- | test/cpp/interop/interop_client.h | 9 | ||||
-rw-r--r-- | test/cpp/interop/metrics_client.cc | 2 |
6 files changed, 53 insertions, 16 deletions
diff --git a/test/cpp/end2end/async_end2end_test.cc b/test/cpp/end2end/async_end2end_test.cc index 74290c36d2..279423a8cb 100644 --- a/test/cpp/end2end/async_end2end_test.cc +++ b/test/cpp/end2end/async_end2end_test.cc @@ -179,6 +179,17 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<bool> { void SetUp() GRPC_OVERRIDE { int port = grpc_pick_unused_port_or_die(); server_address_ << "localhost:" << port; + + // It is currently unsupported to mix sync and async services + // in the same server, so first test that (for coverage) + ServerBuilder build_bad; + build_bad.AddListeningPort(server_address_.str(), + grpc::InsecureServerCredentials()); + build_bad.RegisterAsyncService(&service_); + grpc::cpp::test::util::TestService::Service sync_service; + build_bad.RegisterService(&sync_service); + GPR_ASSERT(build_bad.BuildAndStart() == nullptr); + // Setup server ServerBuilder builder; builder.AddListeningPort(server_address_.str(), diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index dd02c4ac16..bbeac7a30b 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -543,6 +543,7 @@ TEST_P(End2endTest, BidiStream) { stream->WritesDone(); EXPECT_FALSE(stream->Read(&response)); + EXPECT_FALSE(stream->Read(&response)); Status s = stream->Finish(); EXPECT_TRUE(s.ok()); diff --git a/test/cpp/end2end/generic_end2end_test.cc b/test/cpp/end2end/generic_end2end_test.cc index 082119d6d5..6ecf7eb2fe 100644 --- a/test/cpp/end2end/generic_end2end_test.cc +++ b/test/cpp/end2end/generic_end2end_test.cc @@ -102,6 +102,10 @@ class GenericEnd2endTest : public ::testing::Test { builder.AddListeningPort(server_address_.str(), InsecureServerCredentials()); builder.RegisterAsyncGenericService(&generic_service_); + // Include a second call to RegisterAsyncGenericService to make sure that + // we get an error in the log, since it is not allowed to have 2 async + // generic services + builder.RegisterAsyncGenericService(&generic_service_); srv_cq_ = builder.AddCompletionQueue(); server_ = builder.BuildAndStart(); } diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc index 6340007fa4..05ef0c8d9d 100644 --- a/test/cpp/interop/interop_client.cc +++ b/test/cpp/interop/interop_client.cc @@ -80,6 +80,24 @@ CompressionType GetInteropCompressionTypeFromCompressionAlgorithm( GPR_ASSERT(false); } } + +void NoopChecks(const InteropClientContextInspector& inspector, + const SimpleRequest* request, const SimpleResponse* response) {} + +void CompressionChecks(const InteropClientContextInspector& inspector, + const SimpleRequest* request, + const SimpleResponse* response) { + GPR_ASSERT(request->response_compression() == + GetInteropCompressionTypeFromCompressionAlgorithm( + inspector.GetCallCompressionAlgorithm())); + if (request->response_compression() == NONE) { + GPR_ASSERT(!(inspector.GetMessageFlags() & GRPC_WRITE_INTERNAL_COMPRESS)); + } else if (request->response_type() == PayloadType::COMPRESSABLE) { + // requested compression and compressable response => results should always + // be compressed. + GPR_ASSERT(inspector.GetMessageFlags() & GRPC_WRITE_INTERNAL_COMPRESS); + } +} } // namespace InteropClient::ServiceStub::ServiceStub(std::shared_ptr<Channel> channel, @@ -145,9 +163,14 @@ void InteropClient::DoEmpty() { gpr_log(GPR_INFO, "Empty rpc done."); } -// Shared code to set large payload, make rpc and check response payload. void InteropClient::PerformLargeUnary(SimpleRequest* request, SimpleResponse* response) { + PerformLargeUnary(request, response, NoopChecks); +} + +void InteropClient::PerformLargeUnary(SimpleRequest* request, + SimpleResponse* response, + CheckerFn custom_checks_fn) { ClientContext context; InteropClientContextInspector inspector(context); // If the request doesn't already specify the response type, default to @@ -157,21 +180,10 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); Status s = serviceStub_.Get()->UnaryCall(&context, *request, response); - - // Compression related checks. - GPR_ASSERT(request->response_compression() == - GetInteropCompressionTypeFromCompressionAlgorithm( - inspector.GetCallCompressionAlgorithm())); - if (request->response_compression() == NONE) { - GPR_ASSERT(!(inspector.GetMessageFlags() & GRPC_WRITE_INTERNAL_COMPRESS)); - } else if (request->response_type() == PayloadType::COMPRESSABLE) { - // requested compression and compressable response => results should always - // be compressed. - GPR_ASSERT(inspector.GetMessageFlags() & GRPC_WRITE_INTERNAL_COMPRESS); - } - AssertOkOrPrintErrorStatus(s); + custom_checks_fn(inspector, request, response); + // Payload related checks. if (request->response_type() != PayloadType::RANDOM) { GPR_ASSERT(response->payload().type() == request->response_type()); @@ -293,7 +305,7 @@ void InteropClient::DoLargeCompressedUnary() { SimpleResponse response; request.set_response_type(payload_types[i]); request.set_response_compression(compression_types[j]); - PerformLargeUnary(&request, &response); + PerformLargeUnary(&request, &response, CompressionChecks); gpr_log(GPR_INFO, "Large compressed unary done %s.", log_suffix); gpr_free(log_suffix); } diff --git a/test/cpp/interop/interop_client.h b/test/cpp/interop/interop_client.h index 1bfb49d514..97a6fd77cf 100644 --- a/test/cpp/interop/interop_client.h +++ b/test/cpp/interop/interop_client.h @@ -44,6 +44,11 @@ namespace grpc { namespace testing { +// Function pointer for custom checks. +using CheckerFn = + std::function<void(const InteropClientContextInspector&, + const SimpleRequest*, const SimpleResponse*)>; + class InteropClient { public: explicit InteropClient(std::shared_ptr<Channel> channel); @@ -100,6 +105,10 @@ class InteropClient { }; void PerformLargeUnary(SimpleRequest* request, SimpleResponse* response); + + /// Run \a custom_check_fn as an additional check. + void PerformLargeUnary(SimpleRequest* request, SimpleResponse* response, + CheckerFn custom_checks_fn); void AssertOkOrPrintErrorStatus(const Status& s); ServiceStub serviceStub_; }; diff --git a/test/cpp/interop/metrics_client.cc b/test/cpp/interop/metrics_client.cc index 1bd2a2fd78..2865c855a2 100644 --- a/test/cpp/interop/metrics_client.cc +++ b/test/cpp/interop/metrics_client.cc @@ -50,7 +50,7 @@ using grpc::testing::GaugeResponse; using grpc::testing::MetricsService; using grpc::testing::MetricsServiceImpl; -void PrintMetrics(grpc::string& server_address) { +void PrintMetrics(const grpc::string& server_address) { gpr_log(GPR_INFO, "creating a channel to %s", server_address.c_str()); std::shared_ptr<grpc::Channel> channel( grpc::CreateChannel(server_address, grpc::InsecureChannelCredentials())); |