From 91f2af91de1c55bb2e68640fea2d5d0abef11aff Mon Sep 17 00:00:00 2001 From: Asim Aslam Date: Tue, 6 Aug 2019 18:05:05 +0100 Subject: [PATCH] Fix bugs in monitor --- monitor/default.go | 3 ++- monitor/default_test.go | 14 +++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) 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() }