Add a test without WritesDone and reorder destruction

pull/22837/head
Vijay Pai 5 years ago
parent 415b71c98d
commit 611dccb492
  1. 27
      test/cpp/end2end/client_callback_end2end_test.cc

@ -299,7 +299,7 @@ class ClientCallbackEnd2endTest
}
}
void SendGenericEchoAsBidi(int num_rpcs, int reuses) {
void SendGenericEchoAsBidi(int num_rpcs, int reuses, bool do_writes_done) {
const grpc::string kMethodName("/grpc.testing.EchoTestService/Echo");
grpc::string test_string("");
for (int i = 0; i < num_rpcs; i++) {
@ -308,8 +308,8 @@ class ClientCallbackEnd2endTest
ByteBuffer> {
public:
Client(ClientCallbackEnd2endTest* test, const grpc::string& method_name,
const grpc::string& test_str, int reuses)
: reuses_remaining_(reuses) {
const grpc::string& test_str, int reuses, bool do_writes_done)
: reuses_remaining_(reuses), do_writes_done_(do_writes_done) {
activate_ = [this, test, method_name, test_str] {
if (reuses_remaining_ > 0) {
cli_ctx_.reset(new ClientContext);
@ -329,7 +329,11 @@ class ClientCallbackEnd2endTest
};
activate_();
}
void OnWriteDone(bool /*ok*/) override { StartWritesDone(); }
void OnWriteDone(bool /*ok*/) override {
if (do_writes_done_) {
StartWritesDone();
}
}
void OnReadDone(bool /*ok*/) override {
EchoResponse response;
EXPECT_TRUE(ParseFromByteBuffer(&recv_buf_, &response));
@ -355,7 +359,10 @@ class ClientCallbackEnd2endTest
std::mutex mu_;
std::condition_variable cv_;
bool done_ = false;
} rpc{this, kMethodName, test_string, reuses};
const bool do_writes_done_;
};
Client rpc(this, kMethodName, test_string, reuses, do_writes_done);
rpc.Await();
}
@ -517,13 +524,19 @@ TEST_P(ClientCallbackEnd2endTest, SequentialGenericRpcs) {
TEST_P(ClientCallbackEnd2endTest, SequentialGenericRpcsAsBidi) {
MAYBE_SKIP_TEST;
ResetStub();
SendGenericEchoAsBidi(10, 1);
SendGenericEchoAsBidi(10, 1, /*do_writes_done=*/true);
}
TEST_P(ClientCallbackEnd2endTest, SequentialGenericRpcsAsBidiWithReactorReuse) {
MAYBE_SKIP_TEST;
ResetStub();
SendGenericEchoAsBidi(10, 10);
SendGenericEchoAsBidi(10, 10, /*do_writes_done=*/true);
}
TEST_P(ClientCallbackEnd2endTest, GenericRpcNoWritesDone) {
MAYBE_SKIP_TEST;
ResetStub();
SendGenericEchoAsBidi(1, 1, /*do_writes_done=*/false);
}
#if GRPC_ALLOW_EXCEPTIONS

Loading…
Cancel
Save