diff --git a/sd/consul/instancer_test.go b/sd/consul/instancer_test.go index 5df6b43..ec7dd31 100644 --- a/sd/consul/instancer_test.go +++ b/sd/consul/instancer_test.go @@ -10,7 +10,7 @@ "github.com/go-kit/kit/sd" ) -var _ sd.Instancer = &Instancer{} // API check +var _ sd.Instancer = (*Instancer)(nil) // API check var consulState = []*consul.ServiceEntry{ { diff --git a/sd/dnssrv/instancer_test.go b/sd/dnssrv/instancer_test.go index c3221bb..6c8eca5 100644 --- a/sd/dnssrv/instancer_test.go +++ b/sd/dnssrv/instancer_test.go @@ -10,7 +10,7 @@ "github.com/go-kit/kit/sd" ) -var _ sd.Instancer = &Instancer{} // API check +var _ sd.Instancer = (*Instancer)(nil) // API check func TestRefresh(t *testing.T) { name := "some.service.internal" diff --git a/sd/endpointer_test.go b/sd/endpointer_test.go index bea6605..532c0d4 100644 --- a/sd/endpointer_test.go +++ b/sd/endpointer_test.go @@ -19,9 +19,7 @@ f = func(instance string) (endpoint.Endpoint, io.Closer, error) { return endpoint.Nop, c[instance], nil } - instancer = &mockInstancer{ - cache: instance.NewCache(), - } + instancer = &mockInstancer{instance.NewCache()} ) // set initial state instancer.Update(sd.Event{Instances: []string{"a", "b"}}) @@ -59,21 +57,7 @@ // and therefore does not have access to the endpointer's private members. } -type mockInstancer struct { - cache *instance.Cache -} - -func (m *mockInstancer) Update(event sd.Event) { - m.cache.Update(event) -} - -func (m *mockInstancer) Register(ch chan<- sd.Event) { - m.cache.Register(ch) -} - -func (m *mockInstancer) Deregister(ch chan<- sd.Event) { - m.cache.Deregister(ch) -} +type mockInstancer struct{ *instance.Cache } type closer chan struct{} diff --git a/sd/etcd/instancer_test.go b/sd/etcd/instancer_test.go index 9609e28..5e18e10 100644 --- a/sd/etcd/instancer_test.go +++ b/sd/etcd/instancer_test.go @@ -9,6 +9,8 @@ "github.com/go-kit/kit/log" "github.com/go-kit/kit/sd" ) + +var _ sd.Instancer = (*Instancer)(nil) // API check var ( node = &stdetcd.Node{ diff --git a/sd/eureka/instancer_test.go b/sd/eureka/instancer_test.go index cde4c61..9363e50 100644 --- a/sd/eureka/instancer_test.go +++ b/sd/eureka/instancer_test.go @@ -9,7 +9,7 @@ "github.com/go-kit/kit/sd" ) -var _ sd.Instancer = &Instancer{} // API check +var _ sd.Instancer = (*Instancer)(nil) // API check func TestInstancer(t *testing.T) { connection := &testConnection{ diff --git a/sd/instancer.go b/sd/instancer.go index 09647a9..0a8e6c6 100644 --- a/sd/instancer.go +++ b/sd/instancer.go @@ -22,6 +22,7 @@ type Instancer interface { Register(chan<- Event) Deregister(chan<- Event) + Stop() } // FixedInstancer yields a fixed set of instances. @@ -32,3 +33,6 @@ // Deregister implements Instancer. func (d FixedInstancer) Deregister(ch chan<- Event) {} + +// Stop implements Instancer. +func (d FixedInstancer) Stop() {} diff --git a/sd/internal/instance/cache.go b/sd/internal/instance/cache.go index 94b19fd..27b2122 100644 --- a/sd/internal/instance/cache.go +++ b/sd/internal/instance/cache.go @@ -45,6 +45,10 @@ return c.state } +// Stop implements Instancer. Since the cache is just a plain-old store of data, +// Stop is a no-op. +func (c *Cache) Stop() {} + // Register implements Instancer. func (c *Cache) Register(ch chan<- sd.Event) { c.mtx.Lock() diff --git a/sd/internal/instance/cache_test.go b/sd/internal/instance/cache_test.go index 0d77e0d..05a1cc2 100644 --- a/sd/internal/instance/cache_test.go +++ b/sd/internal/instance/cache_test.go @@ -8,7 +8,7 @@ "github.com/go-kit/kit/sd" ) -var _ sd.Instancer = &Cache{} // API check +var _ sd.Instancer = (*Cache)(nil) // API check // The test verifies the following: // registering causes initial notification of the current state diff --git a/sd/zk/instancer_test.go b/sd/zk/instancer_test.go index de9666b..c450c3e 100644 --- a/sd/zk/instancer_test.go +++ b/sd/zk/instancer_test.go @@ -7,7 +7,7 @@ "github.com/go-kit/kit/sd" ) -var _ sd.Instancer = &Instancer{} +var _ sd.Instancer = (*Instancer)(nil) // API check func TestInstancer(t *testing.T) { client := newFakeClient()