OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / go-kit / kit / sd / etcd / instancer_test.go
1 package etcd
2
3 import (
4         "errors"
5         "testing"
6
7         stdetcd "github.com/coreos/etcd/client"
8
9         "github.com/go-kit/kit/log"
10         "github.com/go-kit/kit/sd"
11 )
12
13 var _ sd.Instancer = (*Instancer)(nil) // API check
14
15 var (
16         node = &stdetcd.Node{
17                 Key: "/foo",
18                 Nodes: []*stdetcd.Node{
19                         {Key: "/foo/1", Value: "1:1"},
20                         {Key: "/foo/2", Value: "1:2"},
21                 },
22         }
23         fakeResponse = &stdetcd.Response{
24                 Node: node,
25         }
26 )
27
28 var _ sd.Instancer = &Instancer{} // API check
29
30 func TestInstancer(t *testing.T) {
31         client := &fakeClient{
32                 responses: map[string]*stdetcd.Response{"/foo": fakeResponse},
33         }
34
35         s, err := NewInstancer(client, "/foo", log.NewNopLogger())
36         if err != nil {
37                 t.Fatal(err)
38         }
39         defer s.Stop()
40
41         if state := s.cache.State(); state.Err != nil {
42                 t.Fatal(state.Err)
43         }
44 }
45
46 type fakeClient struct {
47         responses map[string]*stdetcd.Response
48 }
49
50 func (c *fakeClient) GetEntries(prefix string) ([]string, error) {
51         response, ok := c.responses[prefix]
52         if !ok {
53                 return nil, errors.New("key not exist")
54         }
55
56         entries := make([]string, len(response.Node.Nodes))
57         for i, node := range response.Node.Nodes {
58                 entries[i] = node.Value
59         }
60         return entries, nil
61 }
62
63 func (c *fakeClient) WatchPrefix(prefix string, ch chan struct{}) {}
64
65 func (c *fakeClient) Register(Service) error {
66         return nil
67 }
68 func (c *fakeClient) Deregister(Service) error {
69         return nil
70 }