@@ -39,6 +39,47 @@ func (s *safeWriter) Write(p []byte) (n int, err error) {
3939 return s .writer .Write (p )
4040}
4141
42+ func TestTLSHandshakeErrorWriter (t * testing.T ) {
43+ tests := []struct {
44+ name string
45+ ignoreTLSHandshakeError bool
46+ message []byte
47+ expectedLevel logrus.Level
48+ }{
49+ {
50+ name : "TLS handshake error is logged as debug" ,
51+ message : []byte ("http: TLS handshake error: EOF" ),
52+ expectedLevel : logrus .DebugLevel ,
53+ },
54+ {
55+ name : "other errors are logged as error" ,
56+ message : []byte ("some other server error" ),
57+ expectedLevel : logrus .ErrorLevel ,
58+ },
59+ }
60+ var baseLogLevel = logrus .GetLevel ()
61+ for _ , tt := range tests {
62+ t .Run (tt .name , func (t * testing.T ) {
63+ assert := assertPkg .New (t )
64+
65+ var buf bytes.Buffer
66+ logrus .SetOutput (& buf )
67+ logrus .SetLevel (logrus .DebugLevel )
68+
69+ debugger := & TLSErrorDebugger {}
70+ n , err := debugger .Write (tt .message )
71+
72+ assert .Nil (err )
73+ assert .Equal (len (tt .message ), n )
74+
75+ logOutput := buf .String ()
76+ assert .Contains (logOutput , "level=" + tt .expectedLevel .String ())
77+ assert .Contains (logOutput , string (tt .message ))
78+ })
79+ }
80+ logrus .SetLevel (baseLogLevel )
81+ }
82+
4283func TestHttpServerLogWithLogrus (t * testing.T ) {
4384 assert := assertPkg .New (t )
4485 message := "debug-level writer"
@@ -84,7 +125,7 @@ func doRequest(safeWriter *safeWriter, message string, logLevel logrus.Level) er
84125 msg := fmt .Sprintf ("panicking context: %s" , message )
85126 handler := alwaysPanicHandler {msg : msg }
86127 listenOpts := & ListenOpts {
87- BindHost : host ,
128+ BindHost : host ,
88129 DisplayServerLogs : logLevel == logrus .ErrorLevel ,
89130 }
90131
0 commit comments