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 package dispatch_test
import ( import (
"context"
"encoding/json" "encoding/json"
"fmt" "fmt"
"net/http" "net/http"
@ -41,10 +42,10 @@ func TestWebhook(t *testing.T) {
} }
tests := []struct { tests := []struct {
name string name string
serverURL string serverURL string
serverTimeout time.Duration serverDeadline time.Time
serverFn func(uuid.UUID, http.ResponseWriter, *http.Request) serverFn func(uuid.UUID, http.ResponseWriter, *http.Request)
expectSuccess bool expectSuccess bool
expectRetryable bool expectRetryable bool
@ -76,10 +77,13 @@ func TestWebhook(t *testing.T) {
}, },
{ {
name: "timeout", name: "timeout",
serverTimeout: time.Nanosecond, serverDeadline: time.Now().Add(-time.Hour),
expectSuccess: false, expectSuccess: false,
expectRetryable: true, 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", name: "non-200 response",
@ -99,14 +103,20 @@ func TestWebhook(t *testing.T) {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
t.Parallel() t.Parallel()
timeout := testutil.WaitLong var (
if tc.serverTimeout > 0 { ctx context.Context
timeout = tc.serverTimeout 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 ( var (
err error err error
ctx = testutil.Context(t, timeout)
msgID = uuid.New() msgID = uuid.New()
) )