chore(lint): upgrade golangci-lint to v1.47.2
- Fix Slowloris attacks on HTTP servers - Force set default of 5 minutes for pprof read timeout - Change `ShutdownTimeout` to time.Duration since it cannot be set to 0
This commit is contained in:
@@ -21,18 +21,24 @@ func Test_Settings_SetDefaults(t *testing.T) {
|
||||
"empty settings": {
|
||||
settings: Settings{},
|
||||
expected: Settings{
|
||||
Address: ":8000",
|
||||
ShutdownTimeout: durationPtr(defaultTimeout),
|
||||
Address: ":8000",
|
||||
ReadHeaderTimeout: defaultTimeout,
|
||||
ReadTimeout: defaultTimeout,
|
||||
ShutdownTimeout: defaultTimeout,
|
||||
},
|
||||
},
|
||||
"filled settings": {
|
||||
settings: Settings{
|
||||
Address: ":8001",
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
expected: Settings{
|
||||
Address: ":8001",
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -62,16 +68,20 @@ func Test_Settings_Copy(t *testing.T) {
|
||||
"empty settings": {},
|
||||
"filled settings": {
|
||||
settings: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
expected: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -102,30 +112,38 @@ func Test_Settings_MergeWith(t *testing.T) {
|
||||
"merge empty with empty": {},
|
||||
"merge empty with filled": {
|
||||
other: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
expected: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
},
|
||||
"merge filled with empty": {
|
||||
settings: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
expected: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -156,48 +174,62 @@ func Test_Settings_OverrideWith(t *testing.T) {
|
||||
"override empty with empty": {},
|
||||
"override empty with filled": {
|
||||
other: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
expected: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
},
|
||||
"override filled with empty": {
|
||||
settings: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
expected: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
},
|
||||
"override filled with filled": {
|
||||
settings: Settings{
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8001",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Second,
|
||||
ReadTimeout: time.Second,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
other: Settings{
|
||||
Address: ":8002",
|
||||
ShutdownTimeout: durationPtr(time.Hour),
|
||||
Address: ":8002",
|
||||
ReadHeaderTimeout: time.Hour,
|
||||
ReadTimeout: time.Hour,
|
||||
ShutdownTimeout: time.Hour,
|
||||
},
|
||||
expected: Settings{
|
||||
Address: ":8002",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Hour),
|
||||
Address: ":8002",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Hour,
|
||||
ReadTimeout: time.Hour,
|
||||
ShutdownTimeout: time.Hour,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -247,22 +279,47 @@ func Test_Settings_Validate(t *testing.T) {
|
||||
errWrapped: ErrLoggerIsNotSet,
|
||||
errMessage: ErrLoggerIsNotSet.Error(),
|
||||
},
|
||||
"read header timeout too small": {
|
||||
settings: Settings{
|
||||
Address: ":8000",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Nanosecond,
|
||||
},
|
||||
errWrapped: ErrReadHeaderTimeoutTooSmall,
|
||||
errMessage: "read header timeout is too small: 1ns must be at least 1ms",
|
||||
},
|
||||
"read timeout too small": {
|
||||
settings: Settings{
|
||||
Address: ":8000",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Millisecond,
|
||||
ReadTimeout: time.Nanosecond,
|
||||
},
|
||||
errWrapped: ErrReadTimeoutTooSmall,
|
||||
errMessage: "read timeout is too small: 1ns must be at least 1ms",
|
||||
},
|
||||
"shutdown timeout too small": {
|
||||
settings: Settings{
|
||||
Address: ":8000",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Millisecond),
|
||||
Address: ":8000",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Millisecond,
|
||||
ReadTimeout: time.Millisecond,
|
||||
ShutdownTimeout: time.Millisecond,
|
||||
},
|
||||
errWrapped: ErrShutdownTimeoutTooSmall,
|
||||
errMessage: "shutdown timeout is too small: 1ms must be at least 5ms",
|
||||
},
|
||||
"valid settings": {
|
||||
settings: Settings{
|
||||
Address: ":8000",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8000",
|
||||
Handler: someHandler,
|
||||
Logger: someLogger,
|
||||
ReadHeaderTimeout: time.Millisecond,
|
||||
ReadTimeout: time.Millisecond,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -291,11 +348,15 @@ func Test_Settings_String(t *testing.T) {
|
||||
}{
|
||||
"all values": {
|
||||
settings: Settings{
|
||||
Address: ":8000",
|
||||
ShutdownTimeout: durationPtr(time.Second),
|
||||
Address: ":8000",
|
||||
ReadHeaderTimeout: time.Millisecond,
|
||||
ReadTimeout: time.Millisecond,
|
||||
ShutdownTimeout: time.Second,
|
||||
},
|
||||
s: `HTTP server settings:
|
||||
├── Listening address: :8000
|
||||
├── Read header timeout: 1ms
|
||||
├── Read timeout: 1ms
|
||||
└── Shutdown timeout: 1s`,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user