@@ -32,6 +32,7 @@ import (
3232 "go.uber.org/zap"
3333 "go.uber.org/zap/zapcore"
3434 "go.uber.org/zap/zaptest"
35+ "go.uber.org/zap/zaptest/observer"
3536)
3637
3738func TestTestLogger (t * testing.T ) {
@@ -48,6 +49,41 @@ func TestTestLogger(t *testing.T) {
4849 require .Empty (t , buffer .Stripped ())
4950}
5051
52+ func TestNewRetrySampleLogger (t * testing.T ) {
53+ core , observed := observer .New (zap .InfoLevel )
54+ base := Logger {zap .New (core ).With (zap .String ("base" , "logger" ))}
55+ logger := NewRetrySampleLogger (base , zap .String ("component" , "retry-unit-test" ))
56+
57+ for i := 1 ; i <= retryLogSampleFirst + 1 ; i ++ {
58+ logger .Error ("retryable operation failed" , zap .Int ("retryNum" , i ))
59+ }
60+ logger .Warn ("retryable operation failed" , zap .Int ("retryNum" , 3 ))
61+ logger .Error ("another retryable operation failed" , zap .Int ("retryNum" , retryLogSampleFirst + 2 ))
62+
63+ entries := observed .All ()
64+ require .Len (t , entries , retryLogSampleFirst + 2 )
65+
66+ require .Equal (t , "retryable operation failed" , entries [0 ].Message )
67+ require .Equal (t , zap .ErrorLevel , entries [0 ].Level )
68+ require .Equal (t , map [string ]any {
69+ "base" : "logger" ,
70+ "component" : "retry-unit-test" ,
71+ "retryNum" : int64 (1 ),
72+ "sampled" : "" ,
73+ }, entries [0 ].ContextMap ())
74+
75+ require .Equal (t , "retryable operation failed" , entries [retryLogSampleFirst - 1 ].Message )
76+ require .Equal (t , zap .ErrorLevel , entries [retryLogSampleFirst - 1 ].Level )
77+ require .Equal (t , int64 (retryLogSampleFirst ), entries [retryLogSampleFirst - 1 ].ContextMap ()["retryNum" ])
78+
79+ require .Equal (t , "retryable operation failed" , entries [retryLogSampleFirst ].Message )
80+ require .Equal (t , zap .WarnLevel , entries [retryLogSampleFirst ].Level )
81+
82+ require .Equal (t , "another retryable operation failed" , entries [retryLogSampleFirst + 1 ].Message )
83+ require .Equal (t , zap .ErrorLevel , entries [retryLogSampleFirst + 1 ].Level )
84+ require .Equal (t , int64 (retryLogSampleFirst + 2 ), entries [retryLogSampleFirst + 1 ].ContextMap ()["retryNum" ])
85+ }
86+
5187// makeTestLogger creates a Logger instance which produces JSON logs.
5288func makeTestLogger () (Logger , * zaptest.Buffer ) {
5389 buffer := new (zaptest.Buffer )
0 commit comments