8 stdzk "github.com/samuel/go-zookeeper/zk"
10 "github.com/go-kit/kit/log"
13 func TestNewClient(t *testing.T) {
15 acl = stdzk.WorldACL(stdzk.PermRead)
16 connectTimeout = 3 * time.Second
17 sessionTimeout = 20 * time.Second
18 payload = [][]byte{[]byte("Payload"), []byte("Test")}
22 []string{"FailThisInvalidHost!!!"},
26 t.Errorf("expected error, got nil")
30 calledEventHandler := make(chan struct{})
31 eventHandler := func(event stdzk.Event) {
33 // test is successful if this function has fired at least once
35 close(calledEventHandler)
40 []string{"localhost"},
43 ConnectTimeout(connectTimeout),
44 SessionTimeout(sessionTimeout),
46 EventHandler(eventHandler),
53 clientImpl, ok := c.(*client)
55 t.Fatal("retrieved incorrect Client implementation")
57 if want, have := acl, clientImpl.acl; want[0] != have[0] {
58 t.Errorf("want %+v, have %+v", want, have)
60 if want, have := connectTimeout, clientImpl.connectTimeout; want != have {
61 t.Errorf("want %d, have %d", want, have)
63 if want, have := sessionTimeout, clientImpl.sessionTimeout; want != have {
64 t.Errorf("want %d, have %d", want, have)
66 if want, have := payload, clientImpl.rootNodePayload; bytes.Compare(want[0], have[0]) != 0 || bytes.Compare(want[1], have[1]) != 0 {
67 t.Errorf("want %s, have %s", want, have)
71 case <-calledEventHandler:
72 case <-time.After(100 * time.Millisecond):
73 t.Errorf("event handler never called")
77 func TestOptions(t *testing.T) {
78 _, err := NewClient([]string{"localhost"}, log.NewNopLogger(), Credentials("valid", "credentials"))
79 if err != nil && err != stdzk.ErrNoServer {
80 t.Errorf("unexpected error: %v", err)
83 _, err = NewClient([]string{"localhost"}, log.NewNopLogger(), Credentials("nopass", ""))
84 if want, have := err, ErrInvalidCredentials; want != have {
85 t.Errorf("want %v, have %v", want, have)
88 _, err = NewClient([]string{"localhost"}, log.NewNopLogger(), ConnectTimeout(0))
90 t.Errorf("expected connect timeout error")
93 _, err = NewClient([]string{"localhost"}, log.NewNopLogger(), SessionTimeout(0))
95 t.Errorf("expected connect timeout error")
99 func TestCreateParentNodes(t *testing.T) {
100 payload := [][]byte{[]byte("Payload"), []byte("Test")}
102 c, err := NewClient([]string{"localhost:65500"}, log.NewNopLogger())
104 t.Errorf("unexpected error: %v", err)
107 t.Fatal("expected new Client, got nil")
110 s, err := NewInstancer(c, "/validpath", log.NewNopLogger())
111 if err != stdzk.ErrNoServer {
112 t.Errorf("unexpected error: %v", err)
115 t.Error("expected failed new Instancer")
118 s, err = NewInstancer(c, "invalidpath", log.NewNopLogger())
119 if err != stdzk.ErrInvalidPath {
120 t.Errorf("unexpected error: %v", err)
122 _, _, err = c.GetEntries("/validpath")
123 if err != stdzk.ErrNoServer {
124 t.Errorf("unexpected error: %v", err)
129 err = c.CreateParentNodes("/validpath")
130 if err != ErrClientClosed {
131 t.Errorf("unexpected error: %v", err)
134 s, err = NewInstancer(c, "/validpath", log.NewNopLogger())
135 if err != ErrClientClosed {
136 t.Errorf("unexpected error: %v", err)
139 t.Error("expected failed new Instancer")
142 c, err = NewClient([]string{"localhost:65500"}, log.NewNopLogger(), Payload(payload))
144 t.Errorf("unexpected error: %v", err)
147 t.Fatal("expected new Client, got nil")
150 s, err = NewInstancer(c, "/validpath", log.NewNopLogger())
151 if err != stdzk.ErrNoServer {
152 t.Errorf("unexpected error: %v", err)
155 t.Error("expected failed new Instancer")