7 stdetcd "github.com/coreos/etcd/client"
9 "github.com/go-kit/kit/log"
10 "github.com/go-kit/kit/sd"
13 var _ sd.Instancer = (*Instancer)(nil) // API check
18 Nodes: []*stdetcd.Node{
19 {Key: "/foo/1", Value: "1:1"},
20 {Key: "/foo/2", Value: "1:2"},
23 fakeResponse = &stdetcd.Response{
28 var _ sd.Instancer = &Instancer{} // API check
30 func TestInstancer(t *testing.T) {
31 client := &fakeClient{
32 responses: map[string]*stdetcd.Response{"/foo": fakeResponse},
35 s, err := NewInstancer(client, "/foo", log.NewNopLogger())
41 if state := s.cache.State(); state.Err != nil {
46 type fakeClient struct {
47 responses map[string]*stdetcd.Response
50 func (c *fakeClient) GetEntries(prefix string) ([]string, error) {
51 response, ok := c.responses[prefix]
53 return nil, errors.New("key not exist")
56 entries := make([]string, len(response.Node.Nodes))
57 for i, node := range response.Node.Nodes {
58 entries[i] = node.Value
63 func (c *fakeClient) WatchPrefix(prefix string, ch chan struct{}) {}
65 func (c *fakeClient) Register(Service) error {
68 func (c *fakeClient) Deregister(Service) error {