From 81e7edd666252a25df6536055924bdf9ad396c9d Mon Sep 17 00:00:00 2001 From: Jake Sanders Date: Tue, 17 Dec 2019 17:24:01 +0000 Subject: [PATCH] Adhere to new interfaces --- debug/log/kubernetes/kubernetes.go | 18 ++++++++++-------- debug/log/kubernetes/kubernetes_test.go | 14 +++++++++----- debug/log/kubernetes/log.go | 25 ++++++++++++++++++++++--- 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/debug/log/kubernetes/kubernetes.go b/debug/log/kubernetes/kubernetes.go index df8e2a6d..56770a6e 100644 --- a/debug/log/kubernetes/kubernetes.go +++ b/debug/log/kubernetes/kubernetes.go @@ -2,21 +2,23 @@ package kubernetes import ( + "errors" + "github.com/micro/go-micro/debug/log" ) type klog struct{} -func (k *klog) Read(...log.ReadOption) []log.Record { return nil } - -func (k *klog) Write(l log.Record) { - write(l) +func (k *klog) Read(...log.ReadOption) ([]log.Record, error) { + return nil, errors.New("not implemented") } -func (k *klog) Stream() (<-chan log.Record, chan bool) { - c, s := make(chan log.Record), make(chan bool) - go close(c) - return c, s +func (k *klog) Write(l log.Record) error { + return write(l) +} + +func (k *klog) Stream() (log.Stream, error) { + return &klogStreamer{}, nil } // New returns a configured Kubernetes logger diff --git a/debug/log/kubernetes/kubernetes_test.go b/debug/log/kubernetes/kubernetes_test.go index 8fac8c08..3ba1cec3 100644 --- a/debug/log/kubernetes/kubernetes_test.go +++ b/debug/log/kubernetes/kubernetes_test.go @@ -39,14 +39,18 @@ func TestKubernetes(t *testing.T) { } assert.Equal(t, write, read, "Write was not equal") - assert.Nil(t, k.Read(), "Read should be unimplemented") + _, err = k.Read() + assert.Error(t, err, "Read should be unimplemented") - stream, stop := k.Stream() + stream, err := k.Stream() + if err != nil { + t.Error(err) + } records := []log.Record{} - for s := range stream { + go stream.Stop() + for s := range stream.Chan() { records = append(records, s) } - close(stop) - assert.Equal(t, 0, len(records), "Stream should be unimplemented") + assert.Equal(t, 0, len(records), "Stream should return nothing") } diff --git a/debug/log/kubernetes/log.go b/debug/log/kubernetes/log.go index ea352165..ad5740ea 100644 --- a/debug/log/kubernetes/log.go +++ b/debug/log/kubernetes/log.go @@ -8,8 +8,27 @@ import ( "os" ) -func write(l log.Record) { - if m, err := json.Marshal(l); err == nil { - fmt.Fprintf(os.Stderr, "%s", m) +func write(l log.Record) error { + m, err := json.Marshal(l) + if err == nil { + _, err := fmt.Fprintf(os.Stderr, "%s", m) + return err } + return err +} + +type klogStreamer struct { + streamChan chan log.Record +} + +func (k *klogStreamer) Chan() <-chan log.Record { + if k.streamChan == nil { + k.streamChan = make(chan log.Record) + } + return k.streamChan +} + +func (k *klogStreamer) Stop() error { + close(k.streamChan) + return nil }