Skip to content

Commit 1e98fb5

Browse files
committed
Fix leaked connections in integration tests
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
1 parent c38bb7a commit 1e98fb5

9 files changed

+28
-6
lines changed

integration-cli/daemon/daemon.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,7 @@ func (d *Daemon) getClientConfig() (*clientConfig, error) {
180180
if err := sockets.ConfigureTransport(transport, proto, addr); err != nil {
181181
return nil, err
182182
}
183+
transport.DisableKeepAlives = true
183184

184185
return &clientConfig{
185186
transport: transport,
@@ -301,6 +302,7 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
301302
if err != nil {
302303
continue
303304
}
305+
resp.Body.Close()
304306
if resp.StatusCode != http.StatusOK {
305307
d.log.Logf("[%s] received status != 200 OK: %s\n", d.id, resp.Status)
306308
}

integration-cli/docker_api_containers_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,6 +1169,7 @@ func (s *DockerSuite) TestContainerAPIChunkedEncoding(c *check.C) {
11691169
return nil
11701170
})
11711171
c.Assert(err, checker.IsNil, check.Commentf("error creating container with chunked encoding"))
1172+
defer resp.Body.Close()
11721173
c.Assert(resp.StatusCode, checker.Equals, http.StatusCreated)
11731174
}
11741175

integration-cli/docker_api_network_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,9 @@ func createDeletePredefinedNetwork(c *check.C, name string) {
258258

259259
func isNetworkAvailable(c *check.C, name string) bool {
260260
resp, body, err := request.Get(daemonHost(), "/networks")
261-
c.Assert(resp.StatusCode, checker.Equals, http.StatusOK)
262261
c.Assert(err, checker.IsNil)
262+
defer resp.Body.Close()
263+
c.Assert(resp.StatusCode, checker.Equals, http.StatusOK)
263264

264265
nJSON := []types.NetworkResource{}
265266
err = json.NewDecoder(body).Decode(&nJSON)
@@ -308,12 +309,13 @@ func getNetworkResource(c *check.C, id string) *types.NetworkResource {
308309

309310
func createNetwork(c *check.C, config types.NetworkCreateRequest, shouldSucceed bool) string {
310311
resp, body, err := request.Post(daemonHost(), "/networks/create", request.JSONBody(config))
312+
c.Assert(err, checker.IsNil)
313+
defer resp.Body.Close()
311314
if !shouldSucceed {
312315
c.Assert(resp.StatusCode, checker.Not(checker.Equals), http.StatusCreated)
313316
return ""
314317
}
315318

316-
c.Assert(err, checker.IsNil)
317319
c.Assert(resp.StatusCode, checker.Equals, http.StatusCreated)
318320

319321
var nr types.NetworkCreateResponse
@@ -345,10 +347,11 @@ func disconnectNetwork(c *check.C, nid, cid string) {
345347

346348
func deleteNetwork(c *check.C, id string, shouldSucceed bool) {
347349
resp, _, err := request.Delete(daemonHost(), "/networks/"+id)
350+
c.Assert(err, checker.IsNil)
351+
defer resp.Body.Close()
348352
if !shouldSucceed {
349353
c.Assert(resp.StatusCode, checker.Not(checker.Equals), http.StatusOK)
350354
return
351355
}
352356
c.Assert(resp.StatusCode, checker.Equals, http.StatusNoContent)
353-
c.Assert(err, checker.IsNil)
354357
}

integration-cli/docker_cli_logs_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ func (s *DockerSuite) TestLogsFollowGoroutinesWithStdout(c *check.C) {
288288
}()
289289
c.Assert(<-chErr, checker.IsNil)
290290
c.Assert(cmd.Process.Kill(), checker.IsNil)
291-
291+
r.Close()
292292
// NGoroutines is not updated right away, so we need to wait before failing
293293
c.Assert(waitForGoroutines(nroutines), checker.IsNil)
294294
}

integration-cli/docker_cli_registry_user_agent_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,25 @@ func (s *DockerRegistrySuite) TestUserAgentPassThrough(c *check.C) {
7272
)
7373

7474
buildReg, err := registry.NewMock(c)
75+
defer buildReg.Close()
7576
c.Assert(err, check.IsNil)
7677
registerUserAgentHandler(buildReg, &buildUA)
7778
buildRepoName := fmt.Sprintf("%s/busybox", buildReg.URL())
7879

7980
pullReg, err := registry.NewMock(c)
81+
defer pullReg.Close()
8082
c.Assert(err, check.IsNil)
8183
registerUserAgentHandler(pullReg, &pullUA)
8284
pullRepoName := fmt.Sprintf("%s/busybox", pullReg.URL())
8385

8486
pushReg, err := registry.NewMock(c)
87+
defer pushReg.Close()
8588
c.Assert(err, check.IsNil)
8689
registerUserAgentHandler(pushReg, &pushUA)
8790
pushRepoName := fmt.Sprintf("%s/busybox", pushReg.URL())
8891

8992
loginReg, err := registry.NewMock(c)
93+
defer loginReg.Close()
9094
c.Assert(err, check.IsNil)
9195
registerUserAgentHandler(loginReg, &loginUA)
9296

integration-cli/docker_cli_run_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3102,12 +3102,16 @@ func (s *DockerSuite) TestRunUnshareProc(c *check.C) {
31023102
}
31033103
}()
31043104

3105+
var retErr error
31053106
for i := 0; i < 3; i++ {
31063107
err := <-errChan
3107-
if err != nil {
3108-
c.Fatal(err)
3108+
if retErr == nil && err != nil {
3109+
retErr = err
31093110
}
31103111
}
3112+
if retErr != nil {
3113+
c.Fatal(retErr)
3114+
}
31113115
}
31123116

31133117
func (s *DockerSuite) TestRunPublishPort(c *check.C) {

integration-cli/docker_cli_v2_only_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ func makefile(contents string) (string, func(), error) {
3838
// attempt to contact any v1 registry endpoints.
3939
func (s *DockerRegistrySuite) TestV2Only(c *check.C) {
4040
reg, err := registry.NewMock(c)
41+
defer reg.Close()
4142
c.Assert(err, check.IsNil)
4243

4344
reg.RegisterHandler("/v2/", func(w http.ResponseWriter, r *http.Request) {
@@ -70,6 +71,7 @@ func (s *DockerRegistrySuite) TestV2Only(c *check.C) {
7071
// login, push, pull, build & run
7172
func (s *DockerRegistrySuite) TestV1(c *check.C) {
7273
reg, err := registry.NewMock(c)
74+
defer reg.Close()
7375
c.Assert(err, check.IsNil)
7476

7577
v2Pings := 0

integration-cli/registry/registry_mock.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,8 @@ func NewMock(t testingT) (*Mock, error) {
5959
func (tr *Mock) URL() string {
6060
return tr.hostport
6161
}
62+
63+
// Close closes mock and releases resources
64+
func (tr *Mock) Close() {
65+
tr.server.Close()
66+
}

integration-cli/request/request.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ func NewClient(host string) (*http.Client, error) {
129129
}
130130
transport = &http.Transport{TLSClientConfig: tlsConfig}
131131
}
132+
transport.DisableKeepAlives = true
132133
err = sockets.ConfigureTransport(transport, proto, addr)
133134
return &http.Client{
134135
Transport: transport,

0 commit comments

Comments
 (0)