Various fixes
Signed-off-by: Christopher Crone <christopher.crone@docker.com>
This commit is contained in:
parent
eb396e8984
commit
b7d8d2c4ab
4 changed files with 61 additions and 44 deletions
|
@ -16,16 +16,27 @@ import (
|
|||
|
||||
func (s *DockerSuite) TestVolumesAPIList(c *check.C) {
|
||||
prefix, _ := getPrefixAndSlashFromDaemonPlatform()
|
||||
dockerCmd(c, "run", "-v", prefix+"/foo", "busybox")
|
||||
cid, _ := dockerCmd(c, "run", "-d", "-v", prefix+"/foo", "busybox")
|
||||
|
||||
cli, err := client.NewEnvClient()
|
||||
c.Assert(err, checker.IsNil)
|
||||
defer cli.Close()
|
||||
|
||||
container, err := cli.ContainerInspect(context.Background(), strings.TrimSpace(cid))
|
||||
c.Assert(err, checker.IsNil)
|
||||
vname := container.Mounts[0].Name
|
||||
|
||||
volumes, err := cli.VolumeList(context.Background(), filters.Args{})
|
||||
c.Assert(err, checker.IsNil)
|
||||
|
||||
c.Assert(len(volumes.Volumes), checker.Equals, 1, check.Commentf("\n%v", volumes.Volumes))
|
||||
found := false
|
||||
for _, vol := range volumes.Volumes {
|
||||
if vol.Name == vname {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
c.Assert(found, checker.Equals, true)
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestVolumesAPICreate(c *check.C) {
|
||||
|
@ -45,21 +56,21 @@ func (s *DockerSuite) TestVolumesAPICreate(c *check.C) {
|
|||
|
||||
func (s *DockerSuite) TestVolumesAPIRemove(c *check.C) {
|
||||
prefix, _ := getPrefixAndSlashFromDaemonPlatform()
|
||||
dockerCmd(c, "run", "-v", prefix+"/foo", "--name=test", "busybox")
|
||||
cid, _ := dockerCmd(c, "run", "-d", "-v", prefix+"/foo", "--name=test", "busybox")
|
||||
|
||||
cli, err := client.NewEnvClient()
|
||||
c.Assert(err, checker.IsNil)
|
||||
defer cli.Close()
|
||||
|
||||
volumes, err := cli.VolumeList(context.Background(), filters.Args{})
|
||||
container, err := cli.ContainerInspect(context.Background(), strings.TrimSpace(cid))
|
||||
c.Assert(err, checker.IsNil)
|
||||
vname := container.Mounts[0].Name
|
||||
|
||||
v := volumes.Volumes[0]
|
||||
err = cli.VolumeRemove(context.Background(), v.Name, false)
|
||||
err = cli.VolumeRemove(context.Background(), vname, false)
|
||||
c.Assert(err.Error(), checker.Contains, "volume is in use")
|
||||
|
||||
dockerCmd(c, "rm", "-f", "test")
|
||||
err = cli.VolumeRemove(context.Background(), v.Name, false)
|
||||
err = cli.VolumeRemove(context.Background(), vname, false)
|
||||
c.Assert(err, checker.IsNil)
|
||||
}
|
||||
|
||||
|
@ -78,10 +89,6 @@ func (s *DockerSuite) TestVolumesAPIInspect(c *check.C) {
|
|||
_, err = cli.VolumeCreate(context.Background(), config)
|
||||
c.Assert(err, check.IsNil)
|
||||
|
||||
volumes, err := cli.VolumeList(context.Background(), filters.Args{})
|
||||
c.Assert(err, checker.IsNil)
|
||||
c.Assert(len(volumes.Volumes), checker.Equals, 1, check.Commentf("\n%v", volumes.Volumes))
|
||||
|
||||
vol, err := cli.VolumeInspect(context.Background(), config.Name)
|
||||
c.Assert(err, checker.IsNil)
|
||||
c.Assert(vol.Name, checker.Equals, config.Name)
|
||||
|
|
|
@ -231,6 +231,7 @@ func (s *DockerSuite) TestPsListContainersFilterStatus(c *check.C) {
|
|||
}
|
||||
|
||||
func (s *DockerSuite) TestPsListContainersFilterHealth(c *check.C) {
|
||||
existingContainers := ExistingContainerIDs(c)
|
||||
// Test legacy no health check
|
||||
out := runSleepingContainer(c, "--name=none_legacy")
|
||||
containerID := strings.TrimSpace(out)
|
||||
|
@ -268,7 +269,7 @@ func (s *DockerSuite) TestPsListContainersFilterHealth(c *check.C) {
|
|||
waitForHealthStatus(c, "passing_container", "starting", "healthy")
|
||||
|
||||
out = cli.DockerCmd(c, "ps", "-q", "--no-trunc", "--filter=health=healthy").Combined()
|
||||
containerOut = strings.TrimSpace(out)
|
||||
containerOut = strings.TrimSpace(RemoveOutputForExistingElements(out, existingContainers))
|
||||
c.Assert(containerOut, checker.Equals, containerID, check.Commentf("Expected containerID %s, got %s for healthy filter, output: %q", containerID, containerOut, out))
|
||||
}
|
||||
|
||||
|
@ -958,6 +959,7 @@ func (s *DockerSuite) TestPsFormatTemplateWithArg(c *check.C) {
|
|||
|
||||
func (s *DockerSuite) TestPsListContainersFilterPorts(c *check.C) {
|
||||
testRequires(c, DaemonIsLinux)
|
||||
existingContainers := ExistingContainerIDs(c)
|
||||
|
||||
out, _ := dockerCmd(c, "run", "-d", "--publish=80", "busybox", "top")
|
||||
id1 := strings.TrimSpace(out)
|
||||
|
@ -986,6 +988,7 @@ func (s *DockerSuite) TestPsListContainersFilterPorts(c *check.C) {
|
|||
c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), id2)
|
||||
|
||||
out, _ = dockerCmd(c, "ps", "--no-trunc", "-q", "--filter", "expose=8080/tcp")
|
||||
out = RemoveOutputForExistingElements(out, existingContainers)
|
||||
c.Assert(strings.TrimSpace(out), checker.Not(checker.Equals), id1)
|
||||
c.Assert(strings.TrimSpace(out), checker.Equals, id2)
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/docker/docker/client"
|
||||
"github.com/docker/docker/integration-cli/checker"
|
||||
"github.com/docker/docker/integration-cli/cli"
|
||||
"github.com/docker/docker/integration-cli/cli/build"
|
||||
|
@ -35,6 +36,7 @@ import (
|
|||
"github.com/go-check/check"
|
||||
"github.com/gotestyourself/gotestyourself/icmd"
|
||||
libcontainerUser "github.com/opencontainers/runc/libcontainer/user"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
// "test123" should be printed by docker run
|
||||
|
@ -3967,29 +3969,44 @@ func (s *DockerSuite) TestRunNamedVolumeNotRemoved(c *check.C) {
|
|||
dockerCmd(c, "run", "--rm", "-v", "test:"+prefix+"/foo", "-v", prefix+"/bar", "busybox", "true")
|
||||
dockerCmd(c, "volume", "inspect", "test")
|
||||
out, _ := dockerCmd(c, "volume", "ls", "-q")
|
||||
c.Assert(strings.TrimSpace(out), checker.Equals, "test")
|
||||
c.Assert(strings.TrimSpace(out), checker.Contains, "test")
|
||||
|
||||
dockerCmd(c, "run", "--name=test", "-v", "test:"+prefix+"/foo", "-v", prefix+"/bar", "busybox", "true")
|
||||
dockerCmd(c, "rm", "-fv", "test")
|
||||
dockerCmd(c, "volume", "inspect", "test")
|
||||
out, _ = dockerCmd(c, "volume", "ls", "-q")
|
||||
c.Assert(strings.TrimSpace(out), checker.Equals, "test")
|
||||
c.Assert(strings.TrimSpace(out), checker.Contains, "test")
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestRunNamedVolumesFromNotRemoved(c *check.C) {
|
||||
prefix, _ := getPrefixAndSlashFromDaemonPlatform()
|
||||
|
||||
dockerCmd(c, "volume", "create", "test")
|
||||
dockerCmd(c, "run", "--name=parent", "-v", "test:"+prefix+"/foo", "-v", prefix+"/bar", "busybox", "true")
|
||||
cid, _ := dockerCmd(c, "run", "-d", "--name=parent", "-v", "test:"+prefix+"/foo", "-v", prefix+"/bar", "busybox", "true")
|
||||
dockerCmd(c, "run", "--name=child", "--volumes-from=parent", "busybox", "true")
|
||||
|
||||
cli, err := client.NewEnvClient()
|
||||
c.Assert(err, checker.IsNil)
|
||||
defer cli.Close()
|
||||
|
||||
container, err := cli.ContainerInspect(context.Background(), strings.TrimSpace(cid))
|
||||
c.Assert(err, checker.IsNil)
|
||||
var vname string
|
||||
for _, v := range container.Mounts {
|
||||
if v.Name != "test" {
|
||||
vname = v.Name
|
||||
}
|
||||
}
|
||||
c.Assert(vname, checker.Not(checker.Equals), "")
|
||||
|
||||
// Remove the parent so there are not other references to the volumes
|
||||
dockerCmd(c, "rm", "-f", "parent")
|
||||
// now remove the child and ensure the named volume (and only the named volume) still exists
|
||||
dockerCmd(c, "rm", "-fv", "child")
|
||||
dockerCmd(c, "volume", "inspect", "test")
|
||||
out, _ := dockerCmd(c, "volume", "ls", "-q")
|
||||
c.Assert(strings.TrimSpace(out), checker.Equals, "test")
|
||||
c.Assert(strings.TrimSpace(out), checker.Contains, "test")
|
||||
c.Assert(strings.TrimSpace(out), checker.Not(checker.Contains), vname)
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestRunAttachFailedNoLeak(c *check.C) {
|
||||
|
|
|
@ -64,9 +64,6 @@ func (s *DockerSuite) TestVolumeCLIInspectMulti(c *check.C) {
|
|||
})
|
||||
|
||||
out := result.Stdout()
|
||||
outArr := strings.Split(strings.TrimSpace(out), "\n")
|
||||
c.Assert(len(outArr), check.Equals, 3, check.Commentf("\n%s", out))
|
||||
|
||||
c.Assert(out, checker.Contains, "test1")
|
||||
c.Assert(out, checker.Contains, "test2")
|
||||
c.Assert(out, checker.Contains, "test3")
|
||||
|
@ -81,11 +78,8 @@ func (s *DockerSuite) TestVolumeCLILs(c *check.C) {
|
|||
dockerCmd(c, "volume", "create", "soo")
|
||||
dockerCmd(c, "run", "-v", "soo:"+prefix+"/foo", "busybox", "ls", "/")
|
||||
|
||||
out, _ := dockerCmd(c, "volume", "ls")
|
||||
outArr := strings.Split(strings.TrimSpace(out), "\n")
|
||||
c.Assert(len(outArr), check.Equals, 4, check.Commentf("\n%s", out))
|
||||
|
||||
assertVolList(c, out, []string{"aaa", "soo", "test"})
|
||||
out, _ := dockerCmd(c, "volume", "ls", "-q")
|
||||
assertVolumesInList(c, out, []string{"aaa", "soo", "test"})
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestVolumeLsFormat(c *check.C) {
|
||||
|
@ -94,12 +88,7 @@ func (s *DockerSuite) TestVolumeLsFormat(c *check.C) {
|
|||
dockerCmd(c, "volume", "create", "soo")
|
||||
|
||||
out, _ := dockerCmd(c, "volume", "ls", "--format", "{{.Name}}")
|
||||
lines := strings.Split(strings.TrimSpace(string(out)), "\n")
|
||||
|
||||
expected := []string{"aaa", "soo", "test"}
|
||||
var names []string
|
||||
names = append(names, lines...)
|
||||
c.Assert(expected, checker.DeepEquals, names, check.Commentf("Expected array with truncated names: %v, got: %v", expected, names))
|
||||
assertVolumesInList(c, out, []string{"aaa", "soo", "test"})
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestVolumeLsFormatDefaultFormat(c *check.C) {
|
||||
|
@ -118,12 +107,7 @@ func (s *DockerSuite) TestVolumeLsFormatDefaultFormat(c *check.C) {
|
|||
c.Assert(err, checker.IsNil)
|
||||
|
||||
out, _ := dockerCmd(c, "--config", d, "volume", "ls")
|
||||
lines := strings.Split(strings.TrimSpace(string(out)), "\n")
|
||||
|
||||
expected := []string{"aaa default", "soo default", "test default"}
|
||||
var names []string
|
||||
names = append(names, lines...)
|
||||
c.Assert(expected, checker.DeepEquals, names, check.Commentf("Expected array with truncated names: %v, got: %v", expected, names))
|
||||
assertVolumesInList(c, out, []string{"aaa default", "soo default", "test default"})
|
||||
}
|
||||
|
||||
// assertVolList checks volume retrieved with ls command
|
||||
|
@ -142,6 +126,20 @@ func assertVolList(c *check.C, out string, expectVols []string) {
|
|||
c.Assert(volList, checker.DeepEquals, expectVols)
|
||||
}
|
||||
|
||||
func assertVolumesInList(c *check.C, out string, expected []string) {
|
||||
lines := strings.Split(strings.TrimSpace(string(out)), "\n")
|
||||
for _, expect := range expected {
|
||||
found := false
|
||||
for _, v := range lines {
|
||||
found = v == expect
|
||||
if found {
|
||||
break
|
||||
}
|
||||
}
|
||||
c.Assert(found, checker.Equals, true, check.Commentf("Expected volume not found: %v, got: %v", expect, lines))
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestVolumeCLILsFilterDangling(c *check.C) {
|
||||
prefix, _ := getPrefixAndSlashFromDaemonPlatform()
|
||||
dockerCmd(c, "volume", "create", "testnotinuse1")
|
||||
|
@ -213,10 +211,6 @@ func (s *DockerSuite) TestVolumeCLIRm(c *check.C) {
|
|||
dockerCmd(c, "volume", "rm", id)
|
||||
dockerCmd(c, "volume", "rm", "test")
|
||||
|
||||
out, _ = dockerCmd(c, "volume", "ls")
|
||||
outArr := strings.Split(strings.TrimSpace(out), "\n")
|
||||
c.Assert(len(outArr), check.Equals, 1, check.Commentf("%s\n", out))
|
||||
|
||||
volumeID := "testing"
|
||||
dockerCmd(c, "run", "-v", volumeID+":"+prefix+"/foo", "--name=test", "busybox", "sh", "-c", "echo hello > /foo/bar")
|
||||
|
||||
|
@ -407,10 +401,6 @@ func (s *DockerSuite) TestVolumeCLIRmForceUsage(c *check.C) {
|
|||
|
||||
dockerCmd(c, "volume", "rm", "-f", id)
|
||||
dockerCmd(c, "volume", "rm", "--force", "nonexist")
|
||||
|
||||
out, _ = dockerCmd(c, "volume", "ls")
|
||||
outArr := strings.Split(strings.TrimSpace(out), "\n")
|
||||
c.Assert(len(outArr), check.Equals, 1, check.Commentf("%s\n", out))
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestVolumeCLIRmForce(c *check.C) {
|
||||
|
|
Loading…
Reference in a new issue