From 8ab383686b25af41dbc022e854c88f4465d12f27 Mon Sep 17 00:00:00 2001
From: yang-g <yangg@google.com>
Date: Fri, 31 Jul 2015 14:05:33 -0700
Subject: [PATCH] add a test where a read and a writesdone happen at the same
 time

---
 test/cpp/end2end/end2end_test.cc | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc
index 5b351c169e..f6e55f3cba 100644
--- a/test/cpp/end2end/end2end_test.cc
+++ b/test/cpp/end2end/end2end_test.cc
@@ -818,6 +818,27 @@ TEST_F(End2endTest, HugeResponse) {
   EXPECT_TRUE(s.ok());
 }
 
+namespace {
+void ReaderThreadFunc(ClientReaderWriter<EchoRequest, EchoResponse>* stream) {
+  EchoResponse resp;
+  while (stream->Read(&resp)) {
+    gpr_log(GPR_INFO, "Read message");
+  }
+}
+}  // namespace
+
+// Run a Read and a WritesDone simultaneously.
+TEST_F(End2endTest, SimuReadWritesDone) {
+  ResetStub();
+  ClientContext context;
+  auto stream = stub_->BidiStream(&context);
+  std::thread reader_thread(ReaderThreadFunc, stream.get());
+  stream->WritesDone();
+  Status s = stream->Finish();
+  EXPECT_TRUE(s.ok());
+  reader_thread.join();
+}
+
 }  // namespace testing
 }  // namespace grpc
 
-- 
GitLab