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
|
|
|
|
2017-05-16 23:21:06 -04:00
|
|
|
"github.com/go-kit/kit/sd"
|
2021-08-18 11:15:32 -04:00
|
|
|
"github.com/go-kit/log"
|
2016-05-25 15:39:18 -06:00
|
|
|
)
|
|
|
|
|
2017-07-21 10:58:40 -07: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,
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
2017-05-16 23:21:06 -04:00
|
|
|
var _ sd.Instancer = &Instancer{} // API check
|
2016-05-25 15:39:18 -06:00
|
|
|
|
2017-05-16 23:21:06 -04:00
|
|
|
func TestInstancer(t *testing.T) {
|
2016-05-25 15:39:18 -06:00
|
|
|
client := &fakeClient{
|
|
|
|
responses: map[string]*stdetcd.Response{"/foo": fakeResponse},
|
|
|
|
}
|
|
|
|
|
2017-05-16 23:21:06 -04:00
|
|
|
s, err := NewInstancer(client, "/foo", log.NewNopLogger())
|
2016-05-25 15:39:18 -06:00
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
defer s.Stop()
|
|
|
|
|
2017-05-26 22:56:59 -04:00
|
|
|
if state := s.cache.State(); state.Err != nil {
|
2017-05-16 23:21:06 -04:00
|
|
|
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{}) {}
|
2016-06-16 19:26:59 -04:00
|
|
|
|
|
|
|
func (c *fakeClient) Register(Service) error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
func (c *fakeClient) Deregister(Service) error {
|
|
|
|
return nil
|
|
|
|
}
|