mirror of
https://github.com/openshift/image-registry.git
synced 2026-02-05 09:45:55 +01:00
52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
package testframework
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"net/http"
|
|
"time"
|
|
|
|
"k8s.io/apimachinery/pkg/util/wait"
|
|
)
|
|
|
|
func WaitTCP(addr string) error {
|
|
var lastErr error
|
|
err := wait.Poll(500*time.Millisecond, wait.ForeverTestTimeout, func() (done bool, err error) {
|
|
conn, err := net.DialTimeout("tcp", addr, 200*time.Millisecond)
|
|
if err != nil {
|
|
lastErr = err
|
|
return false, nil
|
|
}
|
|
_ = conn.Close()
|
|
return true, nil
|
|
})
|
|
if err != nil {
|
|
return fmt.Errorf("wait for %s: %v", addr, lastErr)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func WaitHTTP(rt http.RoundTripper, url string) error {
|
|
var lastErr error
|
|
httpClient := &http.Client{
|
|
Transport: rt,
|
|
}
|
|
err := wait.Poll(500*time.Millisecond, time.Second*120, func() (done bool, err error) {
|
|
resp, err := httpClient.Get(url)
|
|
if err != nil {
|
|
lastErr = err
|
|
return false, nil
|
|
}
|
|
_ = resp.Body.Close()
|
|
if resp.StatusCode != http.StatusOK {
|
|
lastErr = fmt.Errorf("%s", resp.Status)
|
|
return false, nil
|
|
}
|
|
return true, nil
|
|
})
|
|
if err != nil {
|
|
return fmt.Errorf("wait for %s: %v", url, lastErr)
|
|
}
|
|
return nil
|
|
}
|