diff --git a/monitor/default.go b/monitor/default.go index 307ec36e..f534ad53 100644 --- a/monitor/default.go +++ b/monitor/default.go @@ -128,7 +128,7 @@ func (m *monitor) Watch(service string) error { func (m *monitor) Stop() error { m.Lock() - defer m.RUnlock() + defer m.Unlock() select { case <-m.exit: @@ -203,6 +203,7 @@ func newMonitor(opts ...Option) Monitor { m := &monitor{ options: options, + exit: make(chan bool), client: options.Client, registry: cache.New(options.Registry), services: make(map[string]*Status), diff --git a/monitor/default_test.go b/monitor/default_test.go index 6910cdac..da8ff1f3 100644 --- a/monitor/default_test.go +++ b/monitor/default_test.go @@ -12,8 +12,20 @@ func TestMonitor(t *testing.T) { for _, service := range services { _, err := m.Status(service) - if err != nil { + if err == nil { t.Fatal("expected status error for unknown service") } + + if err := m.Watch(service); err == nil { + t.Fatal("expected watch error for unknown service") + } + + // TODO: + // 1. start a service + // 2. watch service + // 3. get service status } + + // stop monitor + m.Stop() }