Skip to content
Snippets Groups Projects
Commit d886f339 authored by yang-g's avatar yang-g
Browse files

add a test

parent a63fe4e2
No related branches found
No related tags found
No related merge requests found
...@@ -78,6 +78,7 @@ typedef struct { ...@@ -78,6 +78,7 @@ typedef struct {
} state_watcher; } state_watcher;
static void delete_state_watcher(state_watcher *w) { static void delete_state_watcher(state_watcher *w) {
GRPC_CHANNEL_INTERNAL_UNREF(w->channel, "watch_connectivity");
gpr_mu_destroy(&w->mu); gpr_mu_destroy(&w->mu);
gpr_free(w); gpr_free(w);
} }
...@@ -117,7 +118,6 @@ static void partly_done(state_watcher *w, int due_to_completion) { ...@@ -117,7 +118,6 @@ static void partly_done(state_watcher *w, int due_to_completion) {
grpc_channel_get_channel_stack(w->channel)); grpc_channel_get_channel_stack(w->channel));
grpc_client_channel_del_interested_party(client_channel_elem, grpc_client_channel_del_interested_party(client_channel_elem,
grpc_cq_pollset(w->cq)); grpc_cq_pollset(w->cq));
GRPC_CHANNEL_INTERNAL_UNREF(w->channel, "watch_connectivity");
} }
gpr_mu_unlock(&w->mu); gpr_mu_unlock(&w->mu);
if (due_to_completion) { if (due_to_completion) {
......
...@@ -1076,6 +1076,24 @@ TEST_F(End2endTest, ChannelState) { ...@@ -1076,6 +1076,24 @@ TEST_F(End2endTest, ChannelState) {
EXPECT_EQ(GRPC_CHANNEL_CONNECTING, channel_->GetState(false)); EXPECT_EQ(GRPC_CHANNEL_CONNECTING, channel_->GetState(false));
} }
// Takes 10s.
TEST_F(End2endTest, ChannelStateTimeout) {
int port = grpc_pick_unused_port_or_die();
std::ostringstream server_address;
server_address << "127.0.0.1:" << port;
// Channel to non-existing server
auto channel = CreateChannel(server_address.str(), InsecureCredentials());
// Start IDLE
EXPECT_EQ(GRPC_CHANNEL_IDLE, channel->GetState(true));
auto state = GRPC_CHANNEL_IDLE;
for (int i = 0; i < 10; i++) {
channel->WaitForStateChange(state, std::chrono::system_clock::now() +
std::chrono::milliseconds(1000));
state = channel->GetState(false);
}
}
// Talking to a non-existing service. // Talking to a non-existing service.
TEST_F(End2endTest, NonExistingService) { TEST_F(End2endTest, NonExistingService) {
ResetChannel(); ResetChannel();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment