...

Source file src/github.com/go-kit/kit/sd/etcd/instancer_test.go

Documentation: github.com/go-kit/kit/sd/etcd

     1  package etcd
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	stdetcd "go.etcd.io/etcd/client/v2"
     8  
     9  	"github.com/go-kit/kit/sd"
    10  	"github.com/go-kit/log"
    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  }
    71  

View as plain text