Skip to content

Commit dfd5dc6

Browse files
committed
enable diagnostic data tests
1 parent 1f31568 commit dfd5dc6

File tree

1 file changed

+50
-24
lines changed

1 file changed

+50
-24
lines changed

exporter/diagnostic_data_collector_test.go

Lines changed: 50 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"context"
2020
"fmt"
2121
"io"
22+
"log/slog"
2223
"sort"
2324
"strings"
2425
"testing"
@@ -253,13 +254,48 @@ func TestAllDiagnosticDataCollectorMetrics(t *testing.T) {
253254
}
254255
}
255256

257+
// errorCountHandler is a custom handler that keeps tracks of the number of errors and warnings that were logged.
258+
// it discards all errors of other levels.
259+
type errorCountHandler struct {
260+
opts slog.HandlerOptions
261+
logRecords []slog.Record
262+
}
263+
264+
func newErrorCountHandler(opts *slog.HandlerOptions) *errorCountHandler {
265+
h := &errorCountHandler{
266+
logRecords: make([]slog.Record, 0),
267+
}
268+
if opts != nil {
269+
h.opts = *opts
270+
}
271+
if h.opts.Level == nil {
272+
h.opts.Level = slog.LevelWarn
273+
}
274+
return h
275+
}
276+
277+
func (h *errorCountHandler) Handle(ctx context.Context, r slog.Record) error {
278+
if r.Level == slog.LevelError || r.Level == slog.LevelWarn {
279+
h.logRecords = append(h.logRecords, r)
280+
}
281+
return nil
282+
}
283+
284+
func (h *errorCountHandler) Enabled(_ context.Context, level slog.Level) bool {
285+
return level >= slog.LevelInfo
286+
}
287+
288+
func (h *errorCountHandler) WithAttrs(attrs []slog.Attr) slog.Handler {
289+
return h
290+
}
291+
292+
func (h *errorCountHandler) WithGroup(name string) slog.Handler {
293+
return h
294+
}
295+
256296
//nolint:funlen
257297
func TestDiagnosticDataErrors(t *testing.T) {
258298
t.Parallel()
259-
type log struct {
260-
message string
261-
level uint32
262-
}
263299

264300
type testCase struct {
265301
name string
@@ -295,7 +331,8 @@ func TestDiagnosticDataErrors(t *testing.T) {
295331
require.NoError(t, err)
296332
client := tu.TestClient(ctx, port, t)
297333

298-
logger := promslog.New(&promslog.Config{})
334+
errCountLogHandler := newErrorCountHandler(nil)
335+
logger := slog.New(errCountLogHandler)
299336
ti := newTopologyInfo(ctx, client, logger)
300337

301338
dbBuildInfo, err := retrieveMongoDBBuildInfo(ctx, client, logger.With("component", "test"))
@@ -308,27 +345,16 @@ func TestDiagnosticDataErrors(t *testing.T) {
308345
require.NoError(t, err)
309346
_ = helpers.CollectMetrics(c)
310347

311-
/*var errorLogs []log
312-
for _, entry := range hook.Entries {
313-
if entry.Level == logrus.ErrorLevel || entry.Level == logrus.WarnLevel {
314-
errorLogs = append(errorLogs, log{
315-
message: entry.Message,
316-
level: uint32(entry.Level),
317-
})
318-
}
319-
}
320-
321348
if tc.expectedMessage == "" {
322-
assert.Empty(t, errorLogs)
349+
assert.Empty(t, errCountLogHandler.logRecords)
323350
} else {
324-
require.NotEmpty(t, errorLogs)
325-
assert.True(
326-
t,
327-
strings.HasPrefix(hook.LastEntry().Message, tc.expectedMessage),
328-
"'%s' has no prefix: '%s'",
329-
hook.LastEntry().Message,
330-
tc.expectedMessage)
331-
}*/
351+
require.NotEmpty(t, errCountLogHandler.logRecords)
352+
messages := make([]string, 0, len(errCountLogHandler.logRecords))
353+
for _, record := range errCountLogHandler.logRecords {
354+
messages = append(messages, record.Message)
355+
}
356+
assert.Contains(t, messages, tc.expectedMessage)
357+
}
332358
})
333359
}
334360
}

0 commit comments

Comments
 (0)