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:
Quentin McGaw
2022-07-28 21:55:10 +00:00
parent 877617cc53
commit a6f00f2fb2
24 changed files with 348 additions and 158 deletions

View File

@@ -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`,
},
}