1
0
mirror of https://github.com/go-kit/kit.git synced 2025-07-15 01:04:44 +02:00
Files
go-kit/sd/etcd/instancer_test.go

71 lines
1.3 KiB
Go
Raw Permalink Normal View History

2016-05-25 15:39:18 -06:00
package etcd
import (
"errors"
"testing"
2021-05-30 05:58:33 +02:00
stdetcd "go.etcd.io/etcd/client/v2"
2016-05-25 15:39:18 -06:00
"github.com/go-kit/kit/sd"
"github.com/go-kit/log"
2016-05-25 15:39:18 -06:00
)
var _ sd.Instancer = (*Instancer)(nil) // API check
2016-05-25 15:39:18 -06:00
var (
node = &stdetcd.Node{
Key: "/foo",
Nodes: []*stdetcd.Node{
{Key: "/foo/1", Value: "1:1"},
{Key: "/foo/2", Value: "1:2"},
},
}
fakeResponse = &stdetcd.Response{
Node: node,
}
)
var _ sd.Instancer = &Instancer{} // API check
2016-05-25 15:39:18 -06:00
func TestInstancer(t *testing.T) {
2016-05-25 15:39:18 -06:00
client := &fakeClient{
responses: map[string]*stdetcd.Response{"/foo": fakeResponse},
}
s, err := NewInstancer(client, "/foo", log.NewNopLogger())
2016-05-25 15:39:18 -06:00
if err != nil {
t.Fatal(err)
}
defer s.Stop()
if state := s.cache.State(); state.Err != nil {
t.Fatal(state.Err)
2016-05-25 15:39:18 -06:00
}
}
type fakeClient struct {
responses map[string]*stdetcd.Response
}
func (c *fakeClient) GetEntries(prefix string) ([]string, error) {
response, ok := c.responses[prefix]
if !ok {
return nil, errors.New("key not exist")
}
entries := make([]string, len(response.Node.Nodes))
for i, node := range response.Node.Nodes {
entries[i] = node.Value
}
return entries, nil
}
2016-07-21 00:22:15 +02:00
func (c *fakeClient) WatchPrefix(prefix string, ch chan struct{}) {}
func (c *fakeClient) Register(Service) error {
return nil
}
func (c *fakeClient) Deregister(Service) error {
return nil
}