Log CloudWatch response error (#961)
* fix condition for error logging
* add test to check that error returned from `Send()` method
Taras authored 4 years ago
GitHub committed 4 years ago
254 | 254 |
}
|
255 | 255 |
var firstErr error
|
256 | 256 |
for i := 0; i < cap(errors); i++ {
|
257 | |
if err := <-errors; err != nil && firstErr != nil {
|
|
257 |
if err := <-errors; err != nil && firstErr == nil {
|
258 | 258 |
firstErr = err
|
259 | 259 |
}
|
260 | 260 |
}
|
14 | 14 |
"github.com/go-kit/kit/metrics/teststat"
|
15 | 15 |
)
|
16 | 16 |
|
|
17 |
const metricNameToGenerateError = "metric_name_used_to_throw_an_error"
|
|
18 |
|
|
19 |
var errTest = errors.New("test error")
|
|
20 |
|
17 | 21 |
type mockCloudWatch struct {
|
18 | 22 |
cloudwatchiface.CloudWatchAPI
|
19 | 23 |
mtx sync.RWMutex
|
|
32 | 36 |
mcw.mtx.Lock()
|
33 | 37 |
defer mcw.mtx.Unlock()
|
34 | 38 |
for _, datum := range input.MetricData {
|
|
39 |
if *datum.MetricName == metricNameToGenerateError {
|
|
40 |
return nil, errTest
|
|
41 |
}
|
|
42 |
|
35 | 43 |
if len(datum.Values) > 0 {
|
36 | 44 |
for _, v := range datum.Values {
|
37 | 45 |
mcw.valuesReceived[*datum.MetricName] = append(mcw.valuesReceived[*datum.MetricName], *v)
|
|
124 | 132 |
wants = append(wants, teststat.FillCounter(counters[name]))
|
125 | 133 |
}
|
126 | 134 |
|
127 | |
err := cw.Send()
|
128 | |
if err != nil {
|
|
135 |
if err := cw.Send(); err != nil {
|
129 | 136 |
t.Fatal(err)
|
130 | 137 |
}
|
131 | 138 |
|
|
279 | 286 |
t.Fatal(err)
|
280 | 287 |
}
|
281 | 288 |
}
|
|
289 |
|
|
290 |
func TestErrorLog(t *testing.T) {
|
|
291 |
namespace := "abc"
|
|
292 |
svc := newMockCloudWatch()
|
|
293 |
cw := New(namespace, svc, WithLogger(log.NewNopLogger()))
|
|
294 |
cw.NewGauge(metricNameToGenerateError).Set(123)
|
|
295 |
if err := cw.Send(); err != errTest {
|
|
296 |
t.Fatal("Expected error, but didn't get one")
|
|
297 |
}
|
|
298 |
}
|