From 7b5729a84e67561c011cab3f63fc58c63460de1a Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Mon, 11 Sep 2017 21:12:52 -0700 Subject: [PATCH] clientv3/integration: test endpoint switches on partitioned member --- clientv3/integration/kv_test.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/clientv3/integration/kv_test.go b/clientv3/integration/kv_test.go index f5feb0aaea0c..22c71019f7b9 100644 --- a/clientv3/integration/kv_test.go +++ b/clientv3/integration/kv_test.go @@ -933,3 +933,29 @@ func TestKVPutAtMostOnce(t *testing.T) { t.Fatalf("expected version <= 10, got %+v", resp.Kvs[0]) } } + +func TestKVSwitchUnavailable(t *testing.T) { + defer testutil.AfterTest(t) + clus := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 3}) + defer clus.Terminate(t) + + clus.Members[0].InjectPartition(t, clus.Members[1:]) + // try to connect with dead node in the endpoint list + cfg := clientv3.Config{ + Endpoints: []string{ + clus.Members[0].GRPCAddr(), + clus.Members[1].GRPCAddr(), + }, + DialTimeout: 1 * time.Second} + cli, err := clientv3.New(cfg) + if err != nil { + t.Fatal(err) + } + defer cli.Close() + timeout := 3 * clus.Members[0].ServerConfig.ReqTimeout() + ctx, cancel := context.WithTimeout(context.TODO(), timeout) + if _, err := cli.Get(ctx, "abc"); err != nil { + t.Fatal(err) + } + cancel() +}