|
@@ -20,23 +20,19 @@ import (
|
|
"time"
|
|
"time"
|
|
|
|
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/docker/docker/api/types"
|
|
- volumetypes "github.com/docker/docker/api/types/volume"
|
|
|
|
"github.com/docker/docker/integration-cli/checker"
|
|
"github.com/docker/docker/integration-cli/checker"
|
|
"github.com/docker/docker/integration-cli/daemon"
|
|
"github.com/docker/docker/integration-cli/daemon"
|
|
|
|
+ "github.com/docker/docker/integration-cli/environment"
|
|
"github.com/docker/docker/integration-cli/registry"
|
|
"github.com/docker/docker/integration-cli/registry"
|
|
"github.com/docker/docker/integration-cli/request"
|
|
"github.com/docker/docker/integration-cli/request"
|
|
- "github.com/docker/docker/opts"
|
|
|
|
"github.com/docker/docker/pkg/stringutils"
|
|
"github.com/docker/docker/pkg/stringutils"
|
|
icmd "github.com/docker/docker/pkg/testutil/cmd"
|
|
icmd "github.com/docker/docker/pkg/testutil/cmd"
|
|
"github.com/go-check/check"
|
|
"github.com/go-check/check"
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+// Deprecated
|
|
func daemonHost() string {
|
|
func daemonHost() string {
|
|
- daemonURLStr := "unix://" + opts.DefaultUnixSocket
|
|
|
|
- if daemonHostVar := os.Getenv("DOCKER_HOST"); daemonHostVar != "" {
|
|
|
|
- daemonURLStr = daemonHostVar
|
|
|
|
- }
|
|
|
|
- return daemonURLStr
|
|
|
|
|
|
+ return environment.DaemonHost()
|
|
}
|
|
}
|
|
|
|
|
|
// FIXME(vdemeester) move this away are remove ignoreNoSuchContainer bool
|
|
// FIXME(vdemeester) move this away are remove ignoreNoSuchContainer bool
|
|
@@ -58,6 +54,7 @@ func getAllContainers(c *check.C) string {
|
|
return result.Combined()
|
|
return result.Combined()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Deprecated
|
|
func deleteAllContainers(c *check.C) {
|
|
func deleteAllContainers(c *check.C) {
|
|
containers := getAllContainers(c)
|
|
containers := getAllContainers(c)
|
|
if containers != "" {
|
|
if containers != "" {
|
|
@@ -66,136 +63,6 @@ func deleteAllContainers(c *check.C) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-func deleteAllNetworks(c *check.C) {
|
|
|
|
- networks, err := getAllNetworks()
|
|
|
|
- c.Assert(err, check.IsNil)
|
|
|
|
- var errs []string
|
|
|
|
- for _, n := range networks {
|
|
|
|
- if n.Name == "bridge" || n.Name == "none" || n.Name == "host" {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- if testEnv.DaemonPlatform() == "windows" && strings.ToLower(n.Name) == "nat" {
|
|
|
|
- // nat is a pre-defined network on Windows and cannot be removed
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- status, b, err := request.SockRequest("DELETE", "/networks/"+n.Name, nil, daemonHost())
|
|
|
|
- if err != nil {
|
|
|
|
- errs = append(errs, err.Error())
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- if status != http.StatusNoContent {
|
|
|
|
- errs = append(errs, fmt.Sprintf("error deleting network %s: %s", n.Name, string(b)))
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- c.Assert(errs, checker.HasLen, 0, check.Commentf(strings.Join(errs, "\n")))
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func getAllNetworks() ([]types.NetworkResource, error) {
|
|
|
|
- var networks []types.NetworkResource
|
|
|
|
- _, b, err := request.SockRequest("GET", "/networks", nil, daemonHost())
|
|
|
|
- if err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- if err := json.Unmarshal(b, &networks); err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- return networks, nil
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func deleteAllPlugins(c *check.C) {
|
|
|
|
- plugins, err := getAllPlugins()
|
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
|
- var errs []string
|
|
|
|
- for _, p := range plugins {
|
|
|
|
- pluginName := p.Name
|
|
|
|
- status, b, err := request.SockRequest("DELETE", "/plugins/"+pluginName+"?force=1", nil, daemonHost())
|
|
|
|
- if err != nil {
|
|
|
|
- errs = append(errs, err.Error())
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- if status != http.StatusOK {
|
|
|
|
- errs = append(errs, fmt.Sprintf("error deleting plugin %s: %s", p.Name, string(b)))
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- c.Assert(errs, checker.HasLen, 0, check.Commentf(strings.Join(errs, "\n")))
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func getAllPlugins() (types.PluginsListResponse, error) {
|
|
|
|
- var plugins types.PluginsListResponse
|
|
|
|
- _, b, err := request.SockRequest("GET", "/plugins", nil, daemonHost())
|
|
|
|
- if err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- if err := json.Unmarshal(b, &plugins); err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- return plugins, nil
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func deleteAllVolumes(c *check.C) {
|
|
|
|
- volumes, err := getAllVolumes()
|
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
|
- var errs []string
|
|
|
|
- for _, v := range volumes {
|
|
|
|
- status, b, err := request.SockRequest("DELETE", "/volumes/"+v.Name, nil, daemonHost())
|
|
|
|
- if err != nil {
|
|
|
|
- errs = append(errs, err.Error())
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- if status != http.StatusNoContent {
|
|
|
|
- errs = append(errs, fmt.Sprintf("error deleting volume %s: %s", v.Name, string(b)))
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- c.Assert(errs, checker.HasLen, 0, check.Commentf(strings.Join(errs, "\n")))
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func getAllVolumes() ([]*types.Volume, error) {
|
|
|
|
- var volumes volumetypes.VolumesListOKBody
|
|
|
|
- _, b, err := request.SockRequest("GET", "/volumes", nil, daemonHost())
|
|
|
|
- if err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- if err := json.Unmarshal(b, &volumes); err != nil {
|
|
|
|
- return nil, err
|
|
|
|
- }
|
|
|
|
- return volumes.Volumes, nil
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-func deleteAllImages(c *check.C) {
|
|
|
|
- cmd := exec.Command(dockerBinary, "images", "--digests")
|
|
|
|
- cmd.Env = appendBaseEnv(true)
|
|
|
|
- out, err := cmd.CombinedOutput()
|
|
|
|
- c.Assert(err, checker.IsNil)
|
|
|
|
- lines := strings.Split(string(out), "\n")[1:]
|
|
|
|
- imgMap := map[string]struct{}{}
|
|
|
|
- for _, l := range lines {
|
|
|
|
- if l == "" {
|
|
|
|
- continue
|
|
|
|
- }
|
|
|
|
- fields := strings.Fields(l)
|
|
|
|
- imgTag := fields[0] + ":" + fields[1]
|
|
|
|
- if _, ok := protectedImages[imgTag]; !ok {
|
|
|
|
- if fields[0] == "<none>" || fields[1] == "<none>" {
|
|
|
|
- if fields[2] != "<none>" {
|
|
|
|
- imgMap[fields[0]+"@"+fields[2]] = struct{}{}
|
|
|
|
- } else {
|
|
|
|
- imgMap[fields[3]] = struct{}{}
|
|
|
|
- }
|
|
|
|
- // continue
|
|
|
|
- } else {
|
|
|
|
- imgMap[imgTag] = struct{}{}
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if len(imgMap) != 0 {
|
|
|
|
- imgs := make([]string, 0, len(imgMap))
|
|
|
|
- for k := range imgMap {
|
|
|
|
- imgs = append(imgs, k)
|
|
|
|
- }
|
|
|
|
- dockerCmd(c, append([]string{"rmi", "-f"}, imgs...)...)
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
func getPausedContainers(c *check.C) []string {
|
|
func getPausedContainers(c *check.C) []string {
|
|
result := icmd.RunCommand(dockerBinary, "ps", "-f", "status=paused", "-q", "-a")
|
|
result := icmd.RunCommand(dockerBinary, "ps", "-f", "status=paused", "-q", "-a")
|
|
result.Assert(c, icmd.Success)
|
|
result.Assert(c, icmd.Success)
|
|
@@ -206,6 +73,7 @@ func unpauseContainer(c *check.C, container string) {
|
|
dockerCmd(c, "unpause", container)
|
|
dockerCmd(c, "unpause", container)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+// Deprecated
|
|
func unpauseAllContainers(c *check.C) {
|
|
func unpauseAllContainers(c *check.C) {
|
|
containers := getPausedContainers(c)
|
|
containers := getPausedContainers(c)
|
|
for _, value := range containers {
|
|
for _, value := range containers {
|
|
@@ -487,7 +355,7 @@ func newRemoteFileServer(c *check.C, ctx *FakeContext) *remoteFileServer {
|
|
container = fmt.Sprintf("fileserver-cnt-%s", strings.ToLower(stringutils.GenerateRandomAlphaOnlyString(10)))
|
|
container = fmt.Sprintf("fileserver-cnt-%s", strings.ToLower(stringutils.GenerateRandomAlphaOnlyString(10)))
|
|
)
|
|
)
|
|
|
|
|
|
- c.Assert(ensureHTTPServerImage(), checker.IsNil)
|
|
|
|
|
|
+ ensureHTTPServerImage(c)
|
|
|
|
|
|
// Build the image
|
|
// Build the image
|
|
fakeContextAddDockerfile(c, ctx, `FROM httpserver
|
|
fakeContextAddDockerfile(c, ctx, `FROM httpserver
|