Merge pull request #118539 from benluddy/timeout-filter-flake

Ensure timeout test handlers don't complete before timing out.

Kubernetes-commit: 666fc23fe4d6c84b1dde2b8d4ebf75fce466d338
This commit is contained in:
Kubernetes Publisher 2023-06-13 09:21:58 -07:00
commit d76c5f8644
1 changed files with 22 additions and 8 deletions

View File

@ -272,6 +272,8 @@ func TestTimeoutRequestHeaders(t *testing.T) {
})
}
testDone := make(chan struct{})
defer close(testDone)
ts := httptest.NewServer(
withDeadline(
WithTimeoutForNonLongRunningRequests(
@ -280,8 +282,13 @@ func TestTimeoutRequestHeaders(t *testing.T) {
cancel()
// mutate request Headers
// Authorization filter does it for example
for j := 0; j < 10000; j++ {
req.Header.Set("Test", "post")
for {
select {
case <-testDone:
return
default:
req.Header.Set("Test", "post")
}
}
}),
func(r *http.Request, requestInfo *request.RequestInfo) bool {
@ -301,8 +308,8 @@ func TestTimeoutRequestHeaders(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if res.StatusCode != http.StatusGatewayTimeout {
t.Errorf("got res.StatusCde %d; expected %d", res.StatusCode, http.StatusServiceUnavailable)
if actual, expected := res.StatusCode, http.StatusGatewayTimeout; actual != expected {
t.Errorf("got status code %d; expected %d", actual, expected)
}
res.Body.Close()
}
@ -323,6 +330,8 @@ func TestTimeoutWithLogging(t *testing.T) {
})
}
testDone := make(chan struct{})
defer close(testDone)
ts := httptest.NewServer(
WithHTTPLogging(
withDeadline(
@ -332,8 +341,13 @@ func TestTimeoutWithLogging(t *testing.T) {
cancel()
// mutate request Headers
// Authorization filter does it for example
for j := 0; j < 10000; j++ {
req.Header.Set("Test", "post")
for {
select {
case <-testDone:
return
default:
req.Header.Set("Test", "post")
}
}
}),
func(r *http.Request, requestInfo *request.RequestInfo) bool {
@ -354,8 +368,8 @@ func TestTimeoutWithLogging(t *testing.T) {
if err != nil {
t.Fatal(err)
}
if res.StatusCode != http.StatusGatewayTimeout {
t.Errorf("got res.StatusCode %d; expected %d", res.StatusCode, http.StatusServiceUnavailable)
if actual, expected := res.StatusCode, http.StatusGatewayTimeout; actual != expected {
t.Errorf("got status code %d; expected %d", actual, expected)
}
res.Body.Close()
}