Skip to content

Commit eb552fe

Browse files
committed
ClientV3: Add integration test for server timeout
Partially Fixes etcd-io#8645
1 parent afb62d2 commit eb552fe

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

clientv3/integration/black_hole_test.go

+27-17
Original file line numberDiff line numberDiff line change
@@ -40,42 +40,52 @@ func TestServerGRPCKeepAliveTimeout(t *testing.T) {
4040

4141
clus := integration.NewClusterV3(t, &integration.ClusterConfig{
4242
Size: 2,
43-
GRPCKeepAliveInterval: 500 * time.Millisecond,
44-
GRPCKeepAliveTimeout: 500 * time.Millisecond,
43+
GRPCKeepAliveInterval: 2 * time.Second,
44+
GRPCKeepAliveTimeout: 1 * time.Second,
4545
})
4646
defer clus.Terminate(t)
4747

4848
eps := []string{clus.Members[0].GRPCAddr()}
49-
5049
ccfg := clientv3.Config{
5150
Endpoints: []string{eps[0]},
5251
}
53-
5452
cli, err := clientv3.New(ccfg)
5553
if err != nil {
5654
t.Fatal(err)
5755
}
5856
defer cli.Close()
5957

58+
// give keepalive some time
59+
time.Sleep(4 * time.Second)
60+
6061
if _, err = clus.Client(1).Put(context.TODO(), "foo", "bar"); err != nil {
6162
t.Fatal(err)
6263
}
63-
clus.Members[1].Blackhole()
64-
time.Sleep(10 * time.Second)
65-
// remove blackhole but by now the keepalive ping should have triggered server to
66-
// close server-to-client connection.
67-
clus.Members[1].Unblackhole()
68-
_, err = clus.Client(1).Put(context.TODO(), "foo1", "bar1")
64+
// TODO: keepalive sometimes doesn't work on first attempt.
65+
for i := 0; i < 5; i++ {
66+
clus.Members[1].Blackhole()
67+
time.Sleep(10 * time.Second)
68+
// remove blackhole but by now the keepalive ping should have triggered server to
69+
// close server-to-client connection.
70+
clus.Members[1].Unblackhole()
71+
_, err = clus.Client(1).Put(context.TODO(), "foo1", "bar1")
72+
if err != nil {
73+
ev, ok := status.FromError(err)
74+
if !ok {
75+
t.Fatal(err)
76+
}
77+
if ev.Code() != codes.Unavailable {
78+
t.Fatal(err)
79+
}
80+
break
81+
} else {
82+
t.Logf("info: expected an error, received none.")
83+
}
84+
}
85+
6986
if err == nil {
7087
t.Error("rpc error expected")
7188
}
72-
ev, ok := status.FromError(err)
73-
if !ok {
74-
t.Fatal(err)
75-
}
76-
if ev.Code() != codes.Unavailable {
77-
t.Fatal(err)
78-
}
7989
}
8090

8191
// TestBalancerUnderBlackholeKeepAliveWatch tests when watch discovers it cannot talk to

0 commit comments

Comments
 (0)