MCPcopy Index your code
hub / github.com/coder/coder / RequireEventuallyResponseOK

Function RequireEventuallyResponseOK

testutil/http.go:16–39  ·  view source on GitHub ↗

RequireEventuallyResponseOK makes HTTP GET requests to the given endpoint until it returns 200 OK with a valid JSON response that can be decoded into target, or until the context times out. This is useful for waiting for HTTP servers to become ready during tests, especially for metadata endpoints th

(ctx context.Context, t testing.TB, endpoint string, target interface{})

Source from the content-addressed store, hash-verified

14// times out. This is useful for waiting for HTTP servers to become ready during tests,
15// especially for metadata endpoints that may not be immediately available.
16func RequireEventuallyResponseOK(ctx context.Context, t testing.TB, endpoint string, target interface{}) {
17 t.Helper()
18
19 ok := Eventually(ctx, t, func(ctx context.Context) (done bool) {
20 req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, nil)
21 if err != nil {
22 return false
23 }
24 resp, err := http.DefaultClient.Do(req)
25 if err != nil {
26 return false
27 }
28 defer resp.Body.Close()
29 if resp.StatusCode != http.StatusOK {
30 return false
31 }
32 if err := json.NewDecoder(resp.Body).Decode(target); err != nil {
33 return false
34 }
35 return true
36 }, IntervalFast)
37
38 require.True(t, ok, "endpoint %s not ready in time", endpoint)
39}

Calls 4

EventuallyFunction · 0.85
HelperMethod · 0.65
DoMethod · 0.65
CloseMethod · 0.65