@@ 44,8 44,8 @@ func init() {
var t octetType
isCtl := c <= 31 || c == 127
isChar := 0 <= c && c <= 127
isSeparator := strings.IndexRune(" \t\"(),/:;<=>?@[]\\{}", rune(c)) >= 0
if strings.IndexRune(" \t\r\n", rune(c)) >= 0 {
isSeparator := strings.ContainsRune(" \t\"(),/:;<=>?@[]\\{}", rune(c))
if strings.ContainsRune(" \t\r\n", rune(c)) {
t |= isSpace
}
if isChar && !isCtl && !isSeparator {
@@ 63,14 63,12 @@ func TestServer_HTTP2(t *testing.T) {
defer cancel()
var wg sync.WaitGroup
+ var lasErr error
wg.Add(1)
go func() {
defer wg.Done()
- err := s.ListenAndServe(ctx)
- if err != nil {
- t.Fatalf("want no server error, got %s", err)
- }
+ lasErr = s.ListenAndServe(ctx)
}()
time.Sleep(requestAfter)
@@ 89,6 87,9 @@ func TestServer_HTTP2(t *testing.T) {
cancel()
wg.Wait()
+ if want := context.Canceled; lasErr != want {
+ t.Fatalf("want ListenAndServe error to be %v; got %v", want, lasErr)
+ }
}
func TestServer_HTTP2Disabled(t *testing.T) {
@@ 116,14 117,12 @@ func TestServer_HTTP2Disabled(t *testing.T) {
defer cancel()
var wg sync.WaitGroup
+ var lasErr error
wg.Add(1)
go func() {
defer wg.Done()
- err := s.ListenAndServe(ctx)
- if err != nil {
- t.Fatalf("want no server error, got %s", err)
- }
+ lasErr = s.ListenAndServe(ctx)
}()
time.Sleep(requestAfter)
@@ 142,6 141,9 @@ func TestServer_HTTP2Disabled(t *testing.T) {
cancel()
wg.Wait()
+ if want := context.Canceled; lasErr != want {
+ t.Fatalf("want ListenAndServe error to be %v; got %v", want, lasErr)
+ }
}
func TestServer_TLS(t *testing.T) {
@@ 152,7 154,7 @@ func TestServer_TLS(t *testing.T) {
h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(404)
- w.Write([]byte("ok"))
+ _, _ = w.Write([]byte("ok"))
})
modes := []kick.TLSMode{kick.TLSDefault, kick.TLSIntermediate, kick.TLSModern}
@@ 177,14 179,12 @@ func TestServer_TLS(t *testing.T) {
defer cancel()
var wg sync.WaitGroup
+ var lasErr error
wg.Add(1)
go func() {
defer wg.Done()
- err := s.ListenAndServe(ctx)
- if err != nil {
- t.Fatalf("want no server error, got %s", err)
- }
+ lasErr = s.ListenAndServe(ctx)
}()
time.Sleep(requestAfter)
@@ 206,6 206,9 @@ func TestServer_TLS(t *testing.T) {
}
cancel()
wg.Wait()
+ if want := context.Canceled; lasErr != want {
+ t.Fatalf("want ListenAndServe error to be %v; got %v", want, lasErr)
+ }
})
}
}
@@ 221,7 224,7 @@ func TestServer_GracefulShutdownSignal(t *testing.T) {
h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
time.Sleep(replyAfter)
- w.Write([]byte("ok"))
+ _, _ = w.Write([]byte("ok"))
})
s := kick.Server{
Builders: builder.Default,
@@ 256,7 259,7 @@ func TestServer_GracefulShutdownSignal(t *testing.T) {
go func() {
time.Sleep(signalAfter)
if err := proc.Signal(syscall.SIGUSR1); err != nil {
- t.Fatalf("failed to send signal: %s", err)
+ panic(fmt.Sprintf("failed to send signal: %s", err))
}
wg.Done()
}()
@@ 276,12 279,12 @@ func TestServer_GracefulShutdownSignal(t *testing.T) {
}
wg.Wait()
- if lasErr != context.DeadlineExceeded {
- t.Fatalf("want server error %s, got %s", context.DeadlineExceeded, lasErr)
+ if want := context.Canceled; lasErr != want {
+ t.Fatalf("want server error %v; got %v", want, lasErr)
}
- minDur := signalAfter + shutdownTimeout - time.Millisecond
- if dur < minDur || dur >= 2*minDur {
- // NOTE: Shutdown waits at least timeout duration or 500ms
+ minDur := signalAfter
+ maxDur := minDur + shutdownTimeout
+ if dur < minDur || dur > maxDur {
t.Fatalf("want server duration %s, got %s", minDur, dur)
}
}
@@ 296,7 299,7 @@ func TestServer_GracefulShutdownCtx(t *testing.T) {
h := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
time.Sleep(replyAfter)
- w.Write([]byte("ok"))
+ _, _ = w.Write([]byte("ok"))
})
s := kick.Server{
Builders: builder.Default,
@@ 342,9 345,9 @@ func TestServer_GracefulShutdownCtx(t *testing.T) {
if lasErr != context.DeadlineExceeded {
t.Fatalf("want server error %s, got %s", context.DeadlineExceeded, lasErr)
}
- minDur := shutdownAfter + shutdownTimeout - time.Millisecond
- if dur < minDur || dur >= 2*minDur {
- // NOTE: Shutdown waits at least timeout duration or 500ms
+ minDur := shutdownAfter
+ maxDur := minDur + shutdownTimeout
+ if dur < minDur || dur > maxDur {
t.Fatalf("want server duration %s, got %s", minDur, dur)
}
}
@@ 411,8 414,8 @@ func TestServer_ServerState(t *testing.T) {
// should start and stop properly until cancelled
err := s.ListenAndServe(ctx)
- if err != nil {
- t.Fatalf("want no error, got %s", err)
+ if want := context.DeadlineExceeded; err != want {
+ t.Fatalf("want ListeAndServe error %v; got %v", want, err)
}
const wantStates = "StateNewStateListeningStateShutdownStateClosed"
if states != wantStates {
@@ 489,8 492,8 @@ func TestServer_DefaultBuilders(t *testing.T) {
start := time.Now()
err := s.ListenAndServe(ctx)
dur := time.Since(start)
- if err != nil {
- t.Fatalf("want no error, got %s", err)
+ if want := context.DeadlineExceeded; err != want {
+ t.Fatalf("want ListenAndServe error %v; got %v", want, err)
}
minDur := timeout - time.Millisecond
if dur < minDur || dur >= 2*minDur {