9
9
"time"
10
10
11
11
"github.com/getsentry/sentry-go/attribute"
12
+ "github.com/getsentry/sentry-go/internal/testutils"
12
13
"github.com/google/go-cmp/cmp"
13
14
"github.com/google/go-cmp/cmp/cmpopts"
14
15
)
@@ -177,7 +178,7 @@ func Test_sentryLogger_MethodsWithFormat(t *testing.T) {
177
178
// invalid attribute should be dropped
178
179
l .SetAttributes (attribute.Builder {Key : "key.invalid" , Value : attribute.Value {}})
179
180
tt .logFunc (ctx , l )
180
- Flush (20 * time . Millisecond )
181
+ Flush (testutils . FlushTimeout () )
181
182
182
183
opts := cmp.Options {
183
184
cmpopts .IgnoreFields (Log {}, "Timestamp" ),
@@ -321,7 +322,7 @@ func Test_sentryLogger_MethodsWithoutFormat(t *testing.T) {
321
322
ctx , mockTransport := setupMockTransport ()
322
323
l := NewLogger (ctx )
323
324
tt .logFunc (ctx , l , tt .args )
324
- Flush (20 * time . Millisecond )
325
+ Flush (testutils . FlushTimeout () )
325
326
326
327
opts := cmp.Options {
327
328
cmpopts .IgnoreFields (Log {}, "Timestamp" ),
@@ -400,7 +401,7 @@ func Test_sentryLogger_Write(t *testing.T) {
400
401
if n != len (msg ) {
401
402
t .Errorf ("Write returned wrong byte count: got %d, want %d" , n , len (msg ))
402
403
}
403
- Flush (20 * time . Millisecond )
404
+ Flush (testutils . FlushTimeout () )
404
405
405
406
gotEvents := mockTransport .Events ()
406
407
if len (gotEvents ) != 1 {
@@ -426,7 +427,7 @@ func Test_sentryLogger_FlushAttributesAfterSend(t *testing.T) {
426
427
427
428
l .SetAttributes (attribute .String ("string" , "some str" ))
428
429
l .Warn (ctx , msg )
429
- Flush (20 * time . Millisecond )
430
+ Flush (testutils . FlushTimeout () )
430
431
431
432
gotEvents := mockTransport .Events ()
432
433
if len (gotEvents ) != 1 {
@@ -444,7 +445,7 @@ func Test_batchLogger_Flush(t *testing.T) {
444
445
ctx , mockTransport := setupMockTransport ()
445
446
l := NewLogger (context .Background ())
446
447
l .Info (ctx , "context done log" )
447
- Flush (20 * time . Millisecond )
448
+ Flush (testutils . FlushTimeout () )
448
449
449
450
events := mockTransport .Events ()
450
451
if len (events ) != 1 {
@@ -457,7 +458,7 @@ func Test_batchLogger_FlushWithContext(t *testing.T) {
457
458
l := NewLogger (context .Background ())
458
459
l .Info (ctx , "context done log" )
459
460
460
- cancelCtx , cancel := context .WithTimeout (context .Background (), 20 * time . Millisecond )
461
+ cancelCtx , cancel := context .WithTimeout (context .Background (), testutils . FlushTimeout () )
461
462
FlushWithContext (cancelCtx )
462
463
defer cancel ()
463
464
@@ -467,6 +468,88 @@ func Test_batchLogger_FlushWithContext(t *testing.T) {
467
468
}
468
469
}
469
470
471
+ func Test_batchLogger_FlushMultipleTimes (t * testing.T ) {
472
+ ctx , mockTransport := setupMockTransport ()
473
+ l := NewLogger (ctx )
474
+
475
+ for i := 0 ; i < 5 ; i ++ {
476
+ l .Info (ctx , "test" )
477
+ }
478
+
479
+ Flush (testutils .FlushTimeout ())
480
+
481
+ events := mockTransport .Events ()
482
+ if len (events ) != 1 {
483
+ t .Logf ("Got %d events instead of 1" , len (events ))
484
+ for i , event := range events {
485
+ t .Logf ("Event %d: %d logs" , i , len (event .Logs ))
486
+ }
487
+ t .Fatalf ("expected 1 event after first flush, got %d" , len (events ))
488
+ }
489
+ if len (events [0 ].Logs ) != 5 {
490
+ t .Fatalf ("expected 5 logs in first batch, got %d" , len (events [0 ].Logs ))
491
+ }
492
+
493
+ mockTransport .events = nil
494
+
495
+ for i := 0 ; i < 3 ; i ++ {
496
+ l .Info (ctx , "test" )
497
+ }
498
+
499
+ Flush (testutils .FlushTimeout ())
500
+ events = mockTransport .Events ()
501
+ if len (events ) != 1 {
502
+ t .Fatalf ("expected 1 event after second flush, got %d" , len (events ))
503
+ }
504
+ if len (events [0 ].Logs ) != 3 {
505
+ t .Fatalf ("expected 3 logs in second batch, got %d" , len (events [0 ].Logs ))
506
+ }
507
+
508
+ mockTransport .events = nil
509
+
510
+ Flush (testutils .FlushTimeout ())
511
+ events = mockTransport .Events ()
512
+ if len (events ) != 0 {
513
+ t .Fatalf ("expected 0 events after third flush with no logs, got %d" , len (events ))
514
+ }
515
+ }
516
+
517
+ func Test_batchLogger_Shutdown (t * testing.T ) {
518
+ ctx , mockTransport := setupMockTransport ()
519
+ l := NewLogger (ctx )
520
+ for i := 0 ; i < 3 ; i ++ {
521
+ l .Info (ctx , "test" )
522
+ }
523
+
524
+ hub := GetHubFromContext (ctx )
525
+ hub .Client ().batchLogger .Shutdown ()
526
+
527
+ events := mockTransport .Events ()
528
+ if len (events ) != 1 {
529
+ t .Fatalf ("expected 1 event after shutdown, got %d" , len (events ))
530
+ }
531
+ if len (events [0 ].Logs ) != 3 {
532
+ t .Fatalf ("expected 3 logs in shutdown batch, got %d" , len (events [0 ].Logs ))
533
+ }
534
+
535
+ mockTransport .events = nil
536
+
537
+ // Test that shutdown can be called multiple times safely
538
+ hub .Client ().batchLogger .Shutdown ()
539
+ hub .Client ().batchLogger .Shutdown ()
540
+
541
+ events = mockTransport .Events ()
542
+ if len (events ) != 0 {
543
+ t .Fatalf ("expected 0 events after multiple shutdowns, got %d" , len (events ))
544
+ }
545
+
546
+ Flush (testutils .FlushTimeout ())
547
+ events = mockTransport .Events ()
548
+ if len (events ) != 0 {
549
+ t .Fatalf ("expected 0 events after flush on shutdown logger, got %d" , len (events ))
550
+ }
551
+ }
552
+
470
553
func Test_sentryLogger_BeforeSendLog (t * testing.T ) {
471
554
ctx := context .Background ()
472
555
mockTransport := & MockTransport {}
@@ -492,7 +575,7 @@ func Test_sentryLogger_BeforeSendLog(t *testing.T) {
492
575
493
576
l := NewLogger (ctx )
494
577
l .Info (ctx , "context done log" )
495
- Flush (20 * time . Millisecond )
578
+ Flush (testutils . FlushTimeout () )
496
579
497
580
events := mockTransport .Events ()
498
581
if len (events ) != 0 {
@@ -528,7 +611,7 @@ func Test_sentryLogger_TracePropagationWithTransaction(t *testing.T) {
528
611
logger := NewLogger (txn .Context ())
529
612
logger .Info (txn .Context (), "message with tracing" )
530
613
531
- Flush (20 * time . Millisecond )
614
+ Flush (testutils . FlushTimeout () )
532
615
533
616
events := mockTransport .Events ()
534
617
if len (events ) != 1 {
0 commit comments