Skip to content

Commit

Permalink
ClientV3: Add integration test for server timeout
Browse files Browse the repository at this point in the history
Partially Fixes etcd-io#8645
  • Loading branch information
spzala committed Nov 30, 2018
1 parent 01afcf1 commit de0ecf3
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
1 change: 1 addition & 0 deletions .words
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,4 @@ PermitWithoutStream
__lostleader
ErrConnClosing
unfreed
ServerParameters
19 changes: 10 additions & 9 deletions clientv3/integration/black_hole_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,16 @@ func TestServerGRPCKeepAliveTimeout(t *testing.T) {
defer testutil.AfterTest(t)

clus := integration.NewClusterV3(t, &integration.ClusterConfig{
Size: 2,
GRPCKeepAliveInterval: 2 * time.Second,
GRPCKeepAliveTimeout: 1 * time.Second,
Size: 1,
GRPCKeepAliveInterval: 1 * time.Second,
GRPCKeepAliveTimeout: 500 * time.Millisecond,
})
defer clus.Terminate(t)

eps := []string{clus.Members[0].GRPCAddr()}
ccfg := clientv3.Config{
Endpoints: []string{eps[0]},
Endpoints: []string{eps[0]},
DialTimeout: 10 * time.Second,
}
cli, err := clientv3.New(ccfg)
if err != nil {
Expand All @@ -58,17 +59,17 @@ func TestServerGRPCKeepAliveTimeout(t *testing.T) {
// give keepalive some time
time.Sleep(4 * time.Second)

if _, err = clus.Client(1).Put(context.TODO(), "foo", "bar"); err != nil {
if _, err = cli.Put(context.TODO(), "foo", "bar"); err != nil {
t.Fatal(err)
}
// TODO: keepalive sometimes doesn't work on first attempt.
for i := 0; i < 5; i++ {
clus.Members[1].Blackhole()
time.Sleep(10 * time.Second)
clus.Members[0].Blackhole()
time.Sleep(8 * time.Second)
// remove blackhole but by now the keepalive ping should have triggered server to
// close server-to-client connection.
clus.Members[1].Unblackhole()
_, err = clus.Client(1).Put(context.TODO(), "foo1", "bar1")
clus.Members[0].Unblackhole()
_, err = cli.Put(context.TODO(), "foo1", "bar1")
if err != nil {
ev, ok := status.FromError(err)
if !ok {
Expand Down

0 comments on commit de0ecf3

Please sign in to comment.