aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/end2end
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-05-19 10:23:03 -0700
committerGravatar Craig Tiller <craig.tiller@gmail.com>2015-05-19 10:23:03 -0700
commitfd7166d264b4abd9dab4215cdc60a0c9dc635c8e (patch)
treebbb806af5647eeebdd89005ad6a50ea626572ab3 /test/cpp/end2end
parent7a317e5c7714c869f2a49c7e073a057bc9b13b82 (diff)
Add response streams to server crash test, fix them
Diffstat (limited to 'test/cpp/end2end')
-rw-r--r--test/cpp/end2end/server_crash_test.cc29
-rw-r--r--test/cpp/end2end/server_crash_test_client.cc29
2 files changed, 47 insertions, 11 deletions
diff --git a/test/cpp/end2end/server_crash_test.cc b/test/cpp/end2end/server_crash_test.cc
index 8f3954f921..11d73aec7d 100644
--- a/test/cpp/end2end/server_crash_test.cc
+++ b/test/cpp/end2end/server_crash_test.cc
@@ -79,6 +79,20 @@ class ServiceImpl GRPC_FINAL : public ::grpc::cpp::test::util::TestService::Serv
gpr_log(GPR_INFO, "recv msg %s", request.message().c_str());
response.set_message(request.message());
stream->Write(response);
+ gpr_sleep_until(gpr_time_add(gpr_now(), gpr_time_from_seconds(1)));
+ }
+ return Status::OK;
+ }
+
+ Status ResponseStream(ServerContext* context, const EchoRequest* request,
+ ServerWriter<EchoResponse>* writer) GRPC_OVERRIDE {
+ EchoResponse response;
+ for (int i = 0;; i++) {
+ std::ostringstream msg;
+ msg << "Hello " << i;
+ response.set_message(msg.str());
+ if (!writer->Write(response)) break;
+ gpr_sleep_until(gpr_time_add(gpr_now(), gpr_time_from_seconds(1)));
}
return Status::OK;
}
@@ -89,7 +103,7 @@ class CrashTest : public ::testing::Test {
CrashTest() {}
std::unique_ptr<Server>
- CreateServerAndClient() {
+ CreateServerAndClient(const std::string& mode) {
auto port = grpc_pick_unused_port_or_die();
std::ostringstream addr_stream;
addr_stream << "localhost:" << port;
@@ -97,6 +111,7 @@ class CrashTest : public ::testing::Test {
client_.reset(new SubProcess({
g_root + "/server_crash_test_client",
"--address=" + addr,
+ "--mode=" + mode
}));
GPR_ASSERT(client_);
@@ -115,8 +130,16 @@ class CrashTest : public ::testing::Test {
ServiceImpl service_;
};
-TEST_F(CrashTest, Kill) {
- auto server = CreateServerAndClient();
+TEST_F(CrashTest, ResponseStream) {
+ auto server = CreateServerAndClient("response");
+
+ gpr_sleep_until(gpr_time_add(gpr_now(), gpr_time_from_seconds(5)));
+ KillClient();
+ server->Shutdown();
+}
+
+TEST_F(CrashTest, BidiStream) {
+ auto server = CreateServerAndClient("bidi");
gpr_sleep_until(gpr_time_add(gpr_now(), gpr_time_from_seconds(5)));
KillClient();
diff --git a/test/cpp/end2end/server_crash_test_client.cc b/test/cpp/end2end/server_crash_test_client.cc
index d4273b8f58..497ccb4cb2 100644
--- a/test/cpp/end2end/server_crash_test_client.cc
+++ b/test/cpp/end2end/server_crash_test_client.cc
@@ -46,6 +46,7 @@
#include "test/cpp/util/echo.grpc.pb.h"
DEFINE_string(address, "", "Address to connect to");
+DEFINE_string(mode, "", "Test mode to use");
using grpc::cpp::test::util::EchoRequest;
using grpc::cpp::test::util::EchoResponse;
@@ -66,14 +67,26 @@ int main(int argc, char** argv) {
EchoResponse response;
grpc::ClientContext context;
- auto stream = stub->BidiStream(&context);
- for (int i = 0;; i++) {
- std::ostringstream msg;
- msg << "Hello " << i;
- request.set_message(msg.str());
- GPR_ASSERT(stream->Write(request));
- GPR_ASSERT(stream->Read(&response));
- GPR_ASSERT(response.message() == request.message());
+ if (FLAGS_mode == "bidi") {
+ auto stream = stub->BidiStream(&context);
+ for (int i = 0;; i++) {
+ std::ostringstream msg;
+ msg << "Hello " << i;
+ request.set_message(msg.str());
+ GPR_ASSERT(stream->Write(request));
+ GPR_ASSERT(stream->Read(&response));
+ GPR_ASSERT(response.message() == request.message());
+ }
+ } else if (FLAGS_mode == "response") {
+ EchoRequest request;
+ request.set_message("Hello");
+ auto stream = stub->ResponseStream(&context, request);
+ for (;;) {
+ GPR_ASSERT(stream->Read(&response));
+ }
+ } else {
+ gpr_log(GPR_ERROR, "invalid test mode '%s'", FLAGS_mode.c_str());
+ return 1;
}
return 0;