Fix leaked connections in integration tests
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
parent
c38bb7a725
commit
1e98fb5ad9
|
@ -180,6 +180,7 @@ func (d *Daemon) getClientConfig() (*clientConfig, error) {
|
||||||
if err := sockets.ConfigureTransport(transport, proto, addr); err != nil {
|
if err := sockets.ConfigureTransport(transport, proto, addr); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
transport.DisableKeepAlives = true
|
||||||
|
|
||||||
return &clientConfig{
|
return &clientConfig{
|
||||||
transport: transport,
|
transport: transport,
|
||||||
|
@ -301,6 +302,7 @@ func (d *Daemon) StartWithLogFile(out *os.File, providedArgs ...string) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
resp.Body.Close()
|
||||||
if resp.StatusCode != http.StatusOK {
|
if resp.StatusCode != http.StatusOK {
|
||||||
d.log.Logf("[%s] received status != 200 OK: %s\n", d.id, resp.Status)
|
d.log.Logf("[%s] received status != 200 OK: %s\n", d.id, resp.Status)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1169,6 +1169,7 @@ func (s *DockerSuite) TestContainerAPIChunkedEncoding(c *check.C) {
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
c.Assert(err, checker.IsNil, check.Commentf("error creating container with chunked encoding"))
|
c.Assert(err, checker.IsNil, check.Commentf("error creating container with chunked encoding"))
|
||||||
|
defer resp.Body.Close()
|
||||||
c.Assert(resp.StatusCode, checker.Equals, http.StatusCreated)
|
c.Assert(resp.StatusCode, checker.Equals, http.StatusCreated)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -258,8 +258,9 @@ func createDeletePredefinedNetwork(c *check.C, name string) {
|
||||||
|
|
||||||
func isNetworkAvailable(c *check.C, name string) bool {
|
func isNetworkAvailable(c *check.C, name string) bool {
|
||||||
resp, body, err := request.Get(daemonHost(), "/networks")
|
resp, body, err := request.Get(daemonHost(), "/networks")
|
||||||
c.Assert(resp.StatusCode, checker.Equals, http.StatusOK)
|
|
||||||
c.Assert(err, checker.IsNil)
|
c.Assert(err, checker.IsNil)
|
||||||
|
defer resp.Body.Close()
|
||||||
|
c.Assert(resp.StatusCode, checker.Equals, http.StatusOK)
|
||||||
|
|
||||||
nJSON := []types.NetworkResource{}
|
nJSON := []types.NetworkResource{}
|
||||||
err = json.NewDecoder(body).Decode(&nJSON)
|
err = json.NewDecoder(body).Decode(&nJSON)
|
||||||
|
@ -308,12 +309,13 @@ func getNetworkResource(c *check.C, id string) *types.NetworkResource {
|
||||||
|
|
||||||
func createNetwork(c *check.C, config types.NetworkCreateRequest, shouldSucceed bool) string {
|
func createNetwork(c *check.C, config types.NetworkCreateRequest, shouldSucceed bool) string {
|
||||||
resp, body, err := request.Post(daemonHost(), "/networks/create", request.JSONBody(config))
|
resp, body, err := request.Post(daemonHost(), "/networks/create", request.JSONBody(config))
|
||||||
|
c.Assert(err, checker.IsNil)
|
||||||
|
defer resp.Body.Close()
|
||||||
if !shouldSucceed {
|
if !shouldSucceed {
|
||||||
c.Assert(resp.StatusCode, checker.Not(checker.Equals), http.StatusCreated)
|
c.Assert(resp.StatusCode, checker.Not(checker.Equals), http.StatusCreated)
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
c.Assert(err, checker.IsNil)
|
|
||||||
c.Assert(resp.StatusCode, checker.Equals, http.StatusCreated)
|
c.Assert(resp.StatusCode, checker.Equals, http.StatusCreated)
|
||||||
|
|
||||||
var nr types.NetworkCreateResponse
|
var nr types.NetworkCreateResponse
|
||||||
|
@ -345,10 +347,11 @@ func disconnectNetwork(c *check.C, nid, cid string) {
|
||||||
|
|
||||||
func deleteNetwork(c *check.C, id string, shouldSucceed bool) {
|
func deleteNetwork(c *check.C, id string, shouldSucceed bool) {
|
||||||
resp, _, err := request.Delete(daemonHost(), "/networks/"+id)
|
resp, _, err := request.Delete(daemonHost(), "/networks/"+id)
|
||||||
|
c.Assert(err, checker.IsNil)
|
||||||
|
defer resp.Body.Close()
|
||||||
if !shouldSucceed {
|
if !shouldSucceed {
|
||||||
c.Assert(resp.StatusCode, checker.Not(checker.Equals), http.StatusOK)
|
c.Assert(resp.StatusCode, checker.Not(checker.Equals), http.StatusOK)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.Assert(resp.StatusCode, checker.Equals, http.StatusNoContent)
|
c.Assert(resp.StatusCode, checker.Equals, http.StatusNoContent)
|
||||||
c.Assert(err, checker.IsNil)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -288,7 +288,7 @@ func (s *DockerSuite) TestLogsFollowGoroutinesWithStdout(c *check.C) {
|
||||||
}()
|
}()
|
||||||
c.Assert(<-chErr, checker.IsNil)
|
c.Assert(<-chErr, checker.IsNil)
|
||||||
c.Assert(cmd.Process.Kill(), checker.IsNil)
|
c.Assert(cmd.Process.Kill(), checker.IsNil)
|
||||||
|
r.Close()
|
||||||
// NGoroutines is not updated right away, so we need to wait before failing
|
// NGoroutines is not updated right away, so we need to wait before failing
|
||||||
c.Assert(waitForGoroutines(nroutines), checker.IsNil)
|
c.Assert(waitForGoroutines(nroutines), checker.IsNil)
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,21 +72,25 @@ func (s *DockerRegistrySuite) TestUserAgentPassThrough(c *check.C) {
|
||||||
)
|
)
|
||||||
|
|
||||||
buildReg, err := registry.NewMock(c)
|
buildReg, err := registry.NewMock(c)
|
||||||
|
defer buildReg.Close()
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
registerUserAgentHandler(buildReg, &buildUA)
|
registerUserAgentHandler(buildReg, &buildUA)
|
||||||
buildRepoName := fmt.Sprintf("%s/busybox", buildReg.URL())
|
buildRepoName := fmt.Sprintf("%s/busybox", buildReg.URL())
|
||||||
|
|
||||||
pullReg, err := registry.NewMock(c)
|
pullReg, err := registry.NewMock(c)
|
||||||
|
defer pullReg.Close()
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
registerUserAgentHandler(pullReg, &pullUA)
|
registerUserAgentHandler(pullReg, &pullUA)
|
||||||
pullRepoName := fmt.Sprintf("%s/busybox", pullReg.URL())
|
pullRepoName := fmt.Sprintf("%s/busybox", pullReg.URL())
|
||||||
|
|
||||||
pushReg, err := registry.NewMock(c)
|
pushReg, err := registry.NewMock(c)
|
||||||
|
defer pushReg.Close()
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
registerUserAgentHandler(pushReg, &pushUA)
|
registerUserAgentHandler(pushReg, &pushUA)
|
||||||
pushRepoName := fmt.Sprintf("%s/busybox", pushReg.URL())
|
pushRepoName := fmt.Sprintf("%s/busybox", pushReg.URL())
|
||||||
|
|
||||||
loginReg, err := registry.NewMock(c)
|
loginReg, err := registry.NewMock(c)
|
||||||
|
defer loginReg.Close()
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
registerUserAgentHandler(loginReg, &loginUA)
|
registerUserAgentHandler(loginReg, &loginUA)
|
||||||
|
|
||||||
|
|
|
@ -3102,12 +3102,16 @@ func (s *DockerSuite) TestRunUnshareProc(c *check.C) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
var retErr error
|
||||||
for i := 0; i < 3; i++ {
|
for i := 0; i < 3; i++ {
|
||||||
err := <-errChan
|
err := <-errChan
|
||||||
if err != nil {
|
if retErr == nil && err != nil {
|
||||||
c.Fatal(err)
|
retErr = err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if retErr != nil {
|
||||||
|
c.Fatal(retErr)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DockerSuite) TestRunPublishPort(c *check.C) {
|
func (s *DockerSuite) TestRunPublishPort(c *check.C) {
|
||||||
|
|
|
@ -38,6 +38,7 @@ func makefile(contents string) (string, func(), error) {
|
||||||
// attempt to contact any v1 registry endpoints.
|
// attempt to contact any v1 registry endpoints.
|
||||||
func (s *DockerRegistrySuite) TestV2Only(c *check.C) {
|
func (s *DockerRegistrySuite) TestV2Only(c *check.C) {
|
||||||
reg, err := registry.NewMock(c)
|
reg, err := registry.NewMock(c)
|
||||||
|
defer reg.Close()
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
|
|
||||||
reg.RegisterHandler("/v2/", func(w http.ResponseWriter, r *http.Request) {
|
reg.RegisterHandler("/v2/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
@ -70,6 +71,7 @@ func (s *DockerRegistrySuite) TestV2Only(c *check.C) {
|
||||||
// login, push, pull, build & run
|
// login, push, pull, build & run
|
||||||
func (s *DockerRegistrySuite) TestV1(c *check.C) {
|
func (s *DockerRegistrySuite) TestV1(c *check.C) {
|
||||||
reg, err := registry.NewMock(c)
|
reg, err := registry.NewMock(c)
|
||||||
|
defer reg.Close()
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
|
|
||||||
v2Pings := 0
|
v2Pings := 0
|
||||||
|
|
|
@ -59,3 +59,8 @@ func NewMock(t testingT) (*Mock, error) {
|
||||||
func (tr *Mock) URL() string {
|
func (tr *Mock) URL() string {
|
||||||
return tr.hostport
|
return tr.hostport
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Close closes mock and releases resources
|
||||||
|
func (tr *Mock) Close() {
|
||||||
|
tr.server.Close()
|
||||||
|
}
|
||||||
|
|
|
@ -129,6 +129,7 @@ func NewClient(host string) (*http.Client, error) {
|
||||||
}
|
}
|
||||||
transport = &http.Transport{TLSClientConfig: tlsConfig}
|
transport = &http.Transport{TLSClientConfig: tlsConfig}
|
||||||
}
|
}
|
||||||
|
transport.DisableKeepAlives = true
|
||||||
err = sockets.ConfigureTransport(transport, proto, addr)
|
err = sockets.ConfigureTransport(transport, proto, addr)
|
||||||
return &http.Client{
|
return &http.Client{
|
||||||
Transport: transport,
|
Transport: transport,
|
||||||
|
|
Loading…
Reference in New Issue