Fix data race in plugins/inputs/stackdriver/stackdriver_test.go (#7744)

This commit is contained in:
Jakub Warczarek 2020-06-25 19:37:29 +02:00 committed by GitHub
parent 84ac738168
commit 6d120168fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 3 deletions

View File

@ -2,6 +2,7 @@ package stackdriver
import (
"context"
"sync"
"testing"
"time"
@ -27,6 +28,7 @@ type MockStackdriverClient struct {
CloseF func() error
calls []*Call
sync.Mutex
}
func (m *MockStackdriverClient) ListMetricDescriptors(
@ -34,7 +36,9 @@ func (m *MockStackdriverClient) ListMetricDescriptors(
req *monitoringpb.ListMetricDescriptorsRequest,
) (<-chan *metricpb.MetricDescriptor, error) {
call := &Call{name: "ListMetricDescriptors", args: []interface{}{ctx, req}}
m.Lock()
m.calls = append(m.calls, call)
m.Unlock()
return m.ListMetricDescriptorsF(ctx, req)
}
@ -43,13 +47,17 @@ func (m *MockStackdriverClient) ListTimeSeries(
req *monitoringpb.ListTimeSeriesRequest,
) (<-chan *monitoringpb.TimeSeries, error) {
call := &Call{name: "ListTimeSeries", args: []interface{}{ctx, req}}
m.Lock()
m.calls = append(m.calls, call)
m.Unlock()
return m.ListTimeSeriesF(ctx, req)
}
func (m *MockStackdriverClient) Close() error {
call := &Call{name: "Close", args: []interface{}{}}
m.Lock()
m.calls = append(m.calls, call)
m.Unlock()
return m.CloseF()
}
@ -752,9 +760,8 @@ func TestGatherAlign(t *testing.T) {
},
},
}
for _, tt := range tests {
for listCall, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
listCall := 0
var acc testutil.Accumulator
client := &MockStackdriverClient{
ListMetricDescriptorsF: func(ctx context.Context, req *monitoringpb.ListMetricDescriptorsRequest) (<-chan *metricpb.MetricDescriptor, error) {
@ -766,7 +773,6 @@ func TestGatherAlign(t *testing.T) {
ListTimeSeriesF: func(ctx context.Context, req *monitoringpb.ListTimeSeriesRequest) (<-chan *monitoringpb.TimeSeries, error) {
ch := make(chan *monitoringpb.TimeSeries, 1)
ch <- tt.timeseries[listCall]
listCall++
close(ch)
return ch, nil
},