mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: remove initial global HTTP client usage (#20128)
This PR makes the initial steps at removing usage of the global Go HTTP client, which was seen to have impacts on test flakiness in https://github.com/coder/internal/issues/1020. The first commit removes uses from tests, with the exception of one test that is tightly coupled to the default client. The second commit makes easy/low-risk removals from application code. This should have some impact to reduce test flakiness.
This commit is contained in:
@@ -55,7 +55,7 @@ func TestAccessURL(t *testing.T) {
|
||||
defer cancel()
|
||||
|
||||
report.Run(ctx, &healthcheck.AccessURLReportOptions{
|
||||
Client: nil, // defaults to http.DefaultClient
|
||||
Client: &http.Client{},
|
||||
AccessURL: nil,
|
||||
})
|
||||
|
||||
|
||||
@@ -511,7 +511,8 @@ func tsDERPMap(ctx context.Context, t testing.TB) *tailcfg.DERPMap {
|
||||
req, err := http.NewRequestWithContext(ctx, "GET", ipn.DefaultControlURL+"/derpmap/default", nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
res, err := http.DefaultClient.Do(req)
|
||||
client := &http.Client{}
|
||||
res, err := client.Do(req)
|
||||
require.NoError(t, err)
|
||||
defer res.Body.Close()
|
||||
require.Equal(t, http.StatusOK, res.StatusCode)
|
||||
|
||||
@@ -141,7 +141,8 @@ func TestMCPHTTP_E2E_UnauthenticatedAccess(t *testing.T) {
|
||||
require.NoError(t, err, "Should be able to create HTTP request")
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
require.NoError(t, err, "Should be able to make HTTP request")
|
||||
defer resp.Body.Close()
|
||||
|
||||
@@ -613,7 +614,7 @@ func TestMCPHTTP_E2E_OAuth2_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
tokenReq.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
|
||||
tokenResp, err := http.DefaultClient.Do(tokenReq)
|
||||
tokenResp, err := client.Do(tokenReq)
|
||||
require.NoError(t, err)
|
||||
defer tokenResp.Body.Close()
|
||||
|
||||
@@ -711,7 +712,7 @@ func TestMCPHTTP_E2E_OAuth2_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
refreshReq.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
|
||||
refreshResp, err := http.DefaultClient.Do(refreshReq)
|
||||
refreshResp, err := client.Do(refreshReq)
|
||||
require.NoError(t, err)
|
||||
defer refreshResp.Body.Close()
|
||||
|
||||
@@ -846,7 +847,7 @@ func TestMCPHTTP_E2E_OAuth2_EndToEnd(t *testing.T) {
|
||||
regReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
// Dynamic client registration should not require authentication (public endpoint)
|
||||
regResp, err := http.DefaultClient.Do(regReq)
|
||||
regResp, err := client.Do(regReq)
|
||||
require.NoError(t, err)
|
||||
defer regResp.Body.Close()
|
||||
|
||||
@@ -936,7 +937,7 @@ func TestMCPHTTP_E2E_OAuth2_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
tokenReq.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
|
||||
tokenResp, err := http.DefaultClient.Do(tokenReq)
|
||||
tokenResp, err := client.Do(tokenReq)
|
||||
require.NoError(t, err)
|
||||
defer tokenResp.Body.Close()
|
||||
|
||||
@@ -1037,7 +1038,7 @@ func TestMCPHTTP_E2E_OAuth2_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
refreshReq.Header.Set("Content-Type", "application/x-www-form-urlencoded")
|
||||
|
||||
refreshResp, err := http.DefaultClient.Do(refreshReq)
|
||||
refreshResp, err := client.Do(refreshReq)
|
||||
require.NoError(t, err)
|
||||
defer refreshResp.Body.Close()
|
||||
|
||||
@@ -1151,7 +1152,8 @@ func TestMCPHTTP_E2E_OAuth2_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
regReq1.Header.Set("Content-Type", "application/json")
|
||||
|
||||
regResp1, err := http.DefaultClient.Do(regReq1)
|
||||
client := &http.Client{}
|
||||
regResp1, err := client.Do(regReq1)
|
||||
require.NoError(t, err)
|
||||
defer regResp1.Body.Close()
|
||||
|
||||
@@ -1181,7 +1183,7 @@ func TestMCPHTTP_E2E_OAuth2_EndToEnd(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
regReq2.Header.Set("Content-Type", "application/json")
|
||||
|
||||
regResp2, err := http.DefaultClient.Do(regReq2)
|
||||
regResp2, err := client.Do(regReq2)
|
||||
require.NoError(t, err)
|
||||
defer regResp2.Body.Close()
|
||||
|
||||
|
||||
@@ -29,7 +29,8 @@ func TestOAuth2AuthorizationServerMetadata(t *testing.T) {
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
httpClient := &http.Client{}
|
||||
resp, err := httpClient.Do(req)
|
||||
require.NoError(t, err)
|
||||
defer resp.Body.Close()
|
||||
|
||||
@@ -65,7 +66,8 @@ func TestOAuth2ProtectedResourceMetadata(t *testing.T) {
|
||||
req, err := http.NewRequestWithContext(ctx, http.MethodGet, endpoint, nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
httpClient := &http.Client{}
|
||||
resp, err := httpClient.Do(req)
|
||||
require.NoError(t, err)
|
||||
defer resp.Body.Close()
|
||||
|
||||
|
||||
@@ -94,7 +94,8 @@ func TestInstrument(t *testing.T) {
|
||||
must[*url.URL](t)(idp.IssuerURL().Parse("/.well-known/openid-configuration")).String(), nil)
|
||||
require.NoError(t, err)
|
||||
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
client := &http.Client{}
|
||||
resp, err := client.Do(req)
|
||||
require.NoError(t, err)
|
||||
_ = resp.Body.Close()
|
||||
|
||||
|
||||
@@ -87,6 +87,7 @@ func New(options Options) (Reporter, error) {
|
||||
deploymentURL: deploymentURL,
|
||||
snapshotURL: snapshotURL,
|
||||
startedAt: dbtime.Now(),
|
||||
client: &http.Client{},
|
||||
}
|
||||
go reporter.runSnapshotter()
|
||||
return reporter, nil
|
||||
@@ -119,6 +120,7 @@ type remoteReporter struct {
|
||||
snapshotURL *url.URL
|
||||
startedAt time.Time
|
||||
shutdownAt *time.Time
|
||||
client *http.Client
|
||||
}
|
||||
|
||||
func (r *remoteReporter) Enabled() bool {
|
||||
@@ -142,7 +144,7 @@ func (r *remoteReporter) reportSync(snapshot *Snapshot) {
|
||||
return
|
||||
}
|
||||
req.Header.Set(VersionHeader, buildinfo.Version())
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
resp, err := r.client.Do(req)
|
||||
if err != nil {
|
||||
// If the request fails it's not necessarily an error.
|
||||
// In an airgapped environment, it's fine if this fails!
|
||||
|
||||
Reference in New Issue
Block a user