fix: use negative deadline to ensure timeout in TestWebhook/timeout (#14498)

This commit is contained in:
Danny Kopping
2024-08-30 16:46:13 +02:00
committed by GitHub
parent 0f414a00d3
commit 9596f236c1

View File

@ -1,6 +1,7 @@
package dispatch_test
import (
"context"
"encoding/json"
"fmt"
"net/http"
@ -41,10 +42,10 @@ func TestWebhook(t *testing.T) {
}
tests := []struct {
name string
serverURL string
serverTimeout time.Duration
serverFn func(uuid.UUID, http.ResponseWriter, *http.Request)
name string
serverURL string
serverDeadline time.Time
serverFn func(uuid.UUID, http.ResponseWriter, *http.Request)
expectSuccess bool
expectRetryable bool
@ -76,10 +77,13 @@ func TestWebhook(t *testing.T) {
},
{
name: "timeout",
serverTimeout: time.Nanosecond,
serverDeadline: time.Now().Add(-time.Hour),
expectSuccess: false,
expectRetryable: true,
expectErr: "request timeout",
serverFn: func(u uuid.UUID, writer http.ResponseWriter, request *http.Request) {
t.Fatalf("should not get here")
},
expectErr: "request timeout",
},
{
name: "non-200 response",
@ -99,14 +103,20 @@ func TestWebhook(t *testing.T) {
t.Run(tc.name, func(t *testing.T) {
t.Parallel()
timeout := testutil.WaitLong
if tc.serverTimeout > 0 {
timeout = tc.serverTimeout
var (
ctx context.Context
cancel context.CancelFunc
)
if !tc.serverDeadline.IsZero() {
ctx, cancel = context.WithDeadline(context.Background(), tc.serverDeadline)
} else {
ctx, cancel = context.WithTimeout(context.Background(), testutil.WaitLong)
}
t.Cleanup(cancel)
var (
err error
ctx = testutil.Context(t, timeout)
msgID = uuid.New()
)