func PollE()

in infra/blueprint-test/pkg/utils/poll.go [37:66]


func PollE(t testing.TB, condition func() (bool, error), numRetries int, interval time.Duration) error {
	if numRetries < 0 {
		return &PollParameterError{"invalid value for numRetries. Must be >= 0"}
	}

	if interval <= 0 {
		return &PollParameterError{"invalid value for interval. Must be > 0"}
	}

	retry, err := condition()

	for count := 0; retry && count <= numRetries; count++ {
		time.Sleep(interval)
		if err != nil {
			GetLoggerFromT().Logf(t, "Received error while polling: %v", err)
		}
		GetLoggerFromT().Logf(t, "Retrying... %d", count+1)
		retry, err = condition()
	}

	if err != nil {
		return &PollConditionError{err: err, numRetries: numRetries}
	}

	if retry {
		return &PollRetryLimitExceededError{interval: interval, numRetries: numRetries}
	}

	return nil
}