github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/ngaut/go-zookeeper/zk/cluster_test.go (about) 1 package zk 2 3 import ( 4 "testing" 5 "time" 6 ) 7 8 func TestBasicCluster(t *testing.T) { 9 ts, err := StartTestCluster(3) 10 if err != nil { 11 t.Fatal(err) 12 } 13 defer ts.Stop() 14 zk1, err := ts.Connect(0) 15 if err != nil { 16 t.Fatalf("Connect returned error: %+v", err) 17 } 18 defer zk1.Close() 19 zk2, err := ts.Connect(1) 20 if err != nil { 21 t.Fatalf("Connect returned error: %+v", err) 22 } 23 defer zk2.Close() 24 25 if _, err := zk1.Create("/gozk-test", []byte("foo-cluster"), 0, WorldACL(PermAll)); err != nil { 26 t.Fatalf("Create failed on node 1: %+v", err) 27 } 28 if by, _, err := zk2.Get("/gozk-test"); err != nil { 29 t.Fatalf("Get failed on node 2: %+v", err) 30 } else if string(by) != "foo-cluster" { 31 t.Fatal("Wrong data for node 2") 32 } 33 } 34 35 func TestClientClusterFailover(t *testing.T) { 36 ts, err := StartTestCluster(3) 37 if err != nil { 38 t.Fatal(err) 39 } 40 defer ts.Stop() 41 zk, err := ts.ConnectAll() 42 if err != nil { 43 t.Fatalf("Connect returned error: %+v", err) 44 } 45 defer zk.Close() 46 47 if _, err := zk.Create("/gozk-test", []byte("foo-cluster"), 0, WorldACL(PermAll)); err != nil { 48 t.Fatalf("Create failed on node 1: %+v", err) 49 } 50 51 ts.Servers[0].Srv.Stop() 52 53 if by, _, err := zk.Get("/gozk-test"); err != nil { 54 t.Fatalf("Get failed on node 2: %+v", err) 55 } else if string(by) != "foo-cluster" { 56 t.Fatal("Wrong data for node 2") 57 } 58 } 59 60 func TestWaitForClose(t *testing.T) { 61 ts, err := StartTestCluster(1) 62 if err != nil { 63 t.Fatal(err) 64 } 65 defer ts.Stop() 66 zk, err := ts.Connect(0) 67 if err != nil { 68 t.Fatalf("Connect returned error: %+v", err) 69 } 70 timeout := time.After(30*time.Second) 71 CONNECTED: 72 for{ 73 select{ 74 case ev := <-zk.eventChan : 75 if ev.State == StateConnected { 76 break CONNECTED; 77 } 78 case <-timeout: 79 zk.Close() 80 t.Fatal("Timeout") 81 } 82 } 83 zk.Close() 84 for{ 85 select{ 86 case _,ok := <-zk.eventChan : 87 if !ok { 88 return 89 } 90 case <-timeout: 91 t.Fatal("Timeout") 92 } 93 } 94 }