|
4 | 4 | package log // import "go.opentelemetry.io/otel/sdk/log" |
5 | 5 |
|
6 | 6 | import ( |
| 7 | + "bytes" |
7 | 8 | "context" |
| 9 | + stdlog "log" |
8 | 10 | "slices" |
9 | 11 | "strconv" |
10 | 12 | "sync" |
11 | 13 | "testing" |
12 | 14 | "time" |
13 | 15 | "unsafe" |
14 | 16 |
|
| 17 | + "github.com/go-logr/stdr" |
15 | 18 | "github.com/stretchr/testify/assert" |
16 | 19 | "github.com/stretchr/testify/require" |
17 | 20 |
|
18 | 21 | "go.opentelemetry.io/otel" |
| 22 | + "go.opentelemetry.io/otel/internal/global" |
19 | 23 | "go.opentelemetry.io/otel/log" |
20 | 24 | ) |
21 | 25 |
|
@@ -413,6 +417,41 @@ func TestBatchProcessor(t *testing.T) { |
413 | 417 | }) |
414 | 418 | }) |
415 | 419 |
|
| 420 | + t.Run("DroppedLogs", func(t *testing.T) { |
| 421 | + orig := global.GetLogger() |
| 422 | + t.Cleanup(func() { global.SetLogger(orig) }) |
| 423 | + buf := new(bytes.Buffer) |
| 424 | + stdr.SetVerbosity(1) |
| 425 | + global.SetLogger(stdr.New(stdlog.New(buf, "", 0))) |
| 426 | + |
| 427 | + e := newTestExporter(nil) |
| 428 | + e.ExportTrigger = make(chan struct{}) |
| 429 | + |
| 430 | + b := NewBatchProcessor( |
| 431 | + e, |
| 432 | + WithMaxQueueSize(1), |
| 433 | + WithExportMaxBatchSize(1), |
| 434 | + WithExportInterval(time.Hour), |
| 435 | + WithExportTimeout(time.Hour), |
| 436 | + ) |
| 437 | + var r Record |
| 438 | + assert.NoError(t, b.OnEmit(ctx, r), "queued") |
| 439 | + assert.NoError(t, b.OnEmit(ctx, r), "dropped") |
| 440 | + |
| 441 | + var n int |
| 442 | + require.Eventually(t, func() bool { |
| 443 | + n = e.ExportN() |
| 444 | + return n > 0 |
| 445 | + }, 2*time.Second, time.Microsecond, "blocked export not attempted") |
| 446 | + |
| 447 | + got := buf.String() |
| 448 | + want := `"level"=1 "msg"="dropped log records" "dropped"=1` |
| 449 | + assert.Contains(t, got, want) |
| 450 | + |
| 451 | + close(e.ExportTrigger) |
| 452 | + _ = b.Shutdown(ctx) |
| 453 | + }) |
| 454 | + |
416 | 455 | t.Run("ConcurrentSafe", func(t *testing.T) { |
417 | 456 | const goRoutines = 10 |
418 | 457 |
|
|
0 commit comments