Skip to content

Commit e42bf7f

Browse files
committed
chore: increase integration test reliability
sometimes the first response doesn't actually work since it's in the middle of reconciling. Use polling during 10s every half a second and fail only afterwards.
1 parent 9d9d576 commit e42bf7f

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

pkg/internal/integration/service_test.go

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -470,16 +470,35 @@ func (s *IntegrationTestSuite) verifyLBAvailability(name string, start time.Time
470470
s.Require().Len(service.Status.LoadBalancer.Ingress, 2)
471471
addr := service.Status.LoadBalancer.Ingress[0].IP
472472

473-
response, err := testkit.HelloNginx(addr, 80)
474-
if reachable {
475-
s.Assert().NoError(err, "request failed")
476-
if s.Assert().NotNil(response, "response is empty") {
477-
s.Assert().NotEmpty(response.ServerName)
473+
pollInterval := 500 * time.Millisecond
474+
pollTimeout := 10 * time.Second
475+
476+
err := wait.PollUntilContextTimeout(s.T().Context(), pollInterval, pollTimeout, true, func(ctx context.Context) (bool, error) {
477+
response, err := testkit.HelloNginx(addr, 80)
478+
479+
if reachable {
480+
if err != nil {
481+
s.T().Logf("waiting for connectivity: %s", err)
482+
return false, nil
483+
}
484+
if response == nil || response.ServerName == "" {
485+
s.T().Log("waiting for valid response body", "response", response)
486+
return false, nil
487+
}
488+
return true, nil
478489
}
479-
} else {
480-
s.Assert().Error(err, "request successful")
481-
s.Assert().Nil(response, "response is empty")
482-
}
490+
491+
if err == nil {
492+
s.T().Log("waiting for service to be unreachable, but got no error")
493+
return false, nil
494+
}
495+
if response != nil {
496+
s.T().Log("waiting for service to be unreachable, but got a response")
497+
return false, nil
498+
}
499+
return true, nil
500+
})
501+
s.Assert().NoError(err, "polling failed")
483502

484503
// we expect no warnings. Errors can happen for a short time when setting to 0 nodes reachable.
485504
s.T().Log("Checking log output for errors/warnings")

0 commit comments

Comments
 (0)