Fixes for async_end2end_test: Shutdown() can block

reviewable/pr11758/r1
Craig Tiller 8 years ago
parent 51cdc975f2
commit 31af436d96
  1. 6
      test/cpp/end2end/async_end2end_test.cc

@ -278,6 +278,7 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
} }
void TearDown() override { void TearDown() override {
gpr_tls_set(&g_is_async_end2end_test, 0);
server_->Shutdown(); server_->Shutdown();
void* ignored_tag; void* ignored_tag;
bool ignored_ok; bool ignored_ok;
@ -285,7 +286,6 @@ class AsyncEnd2endTest : public ::testing::TestWithParam<TestScenario> {
while (cq_->Next(&ignored_tag, &ignored_ok)) while (cq_->Next(&ignored_tag, &ignored_ok))
; ;
poll_overrider_.reset(); poll_overrider_.reset();
gpr_tls_set(&g_is_async_end2end_test, 0);
grpc_recycle_unused_port(port_); grpc_recycle_unused_port(port_);
} }
@ -365,6 +365,7 @@ TEST_P(AsyncEnd2endTest, WaitAndShutdownTest) {
ResetStub(); ResetStub();
SendRpc(1); SendRpc(1);
EXPECT_EQ(0, notify); EXPECT_EQ(0, notify);
gpr_tls_set(&g_is_async_end2end_test, 0);
server_->Shutdown(); server_->Shutdown();
wait_thread.join(); wait_thread.join();
EXPECT_EQ(1, notify); EXPECT_EQ(1, notify);
@ -373,8 +374,9 @@ TEST_P(AsyncEnd2endTest, WaitAndShutdownTest) {
TEST_P(AsyncEnd2endTest, ShutdownThenWait) { TEST_P(AsyncEnd2endTest, ShutdownThenWait) {
ResetStub(); ResetStub();
SendRpc(1); SendRpc(1);
server_->Shutdown(); std::thread t([this]() { server_->Shutdown(); });
server_->Wait(); server_->Wait();
t.join();
} }
// Test a simple RPC using the async version of Next // Test a simple RPC using the async version of Next

Loading…
Cancel
Save