From 8c5b1663a25c3e2fe39e4036a09c444ebf12ccb7 Mon Sep 17 00:00:00 2001 From: Tyler Yahn Date: Tue, 2 Jun 2020 12:50:34 -0700 Subject: [PATCH] Fix push_test.go Add test handler --- sdk/metric/controller/push/push_test.go | 39 +++++++++++++++++-------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/sdk/metric/controller/push/push_test.go b/sdk/metric/controller/push/push_test.go index ad7945100..da91ed41d 100644 --- a/sdk/metric/controller/push/push_test.go +++ b/sdk/metric/controller/push/push_test.go @@ -24,6 +24,7 @@ import ( "github.com/stretchr/testify/require" + "go.opentelemetry.io/otel/api/global" "go.opentelemetry.io/otel/api/kv" "go.opentelemetry.io/otel/api/label" "go.opentelemetry.io/otel/api/metric" @@ -38,6 +39,29 @@ import ( var testResource = resource.New(kv.String("R", "V")) +type handler struct{ err error } + +func (h *handler) Handle(err error) { + h.err = err +} + +func (h *handler) Reset() { + h.err = nil +} + +func (h *handler) Flush() error { + err := h.err + h.Reset() + return err +} + +var testHandler *handler + +func init() { + testHandler = new(handler) + global.SetHandler(testHandler) +} + type testExporter struct { t *testing.T lock sync.Mutex @@ -204,14 +228,6 @@ func TestPushExportError(t *testing.T) { push.WithResource(testResource), ) - var err error - var lock sync.Mutex - p.SetErrorHandler(func(sdkErr error) { - lock.Lock() - defer lock.Unlock() - err = sdkErr - }) - mock := controllerTest.NewMockClock() p.SetClock(mock) @@ -228,21 +244,20 @@ func TestPushExportError(t *testing.T) { counter2.Add(ctx, 5) require.Equal(t, 0, fix.exporter.exports) - require.Nil(t, err) + require.Nil(t, testHandler.Flush()) mock.Add(time.Second) runtime.Gosched() records, exports := fix.exporter.resetRecords() require.Equal(t, 1, exports) - lock.Lock() if tt.expectedError == nil { - require.NoError(t, err) + require.NoError(t, testHandler.Flush()) } else { + err := testHandler.Flush() require.Error(t, err) require.Equal(t, tt.expectedError, err) } - lock.Unlock() require.Equal(t, len(tt.expectedDescriptors), len(records)) for _, r := range records { require.Contains(t, tt.expectedDescriptors,