mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
add TestContainerOrphaning integration test
This commit is contained in:
parent
aa619de748
commit
c995c9bb91
1 changed files with 63 additions and 0 deletions
|
@ -968,3 +968,66 @@ func TestRunCidFile(t *testing.T) {
|
|||
})
|
||||
|
||||
}
|
||||
|
||||
func TestContainerOrphaning(t *testing.T) {
|
||||
|
||||
// setup a temporary directory
|
||||
tmpDir, err := ioutil.TempDir("", "project")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
// setup a CLI and server
|
||||
cli := docker.NewDockerCli(nil, os.Stdout, ioutil.Discard, testDaemonProto, testDaemonAddr)
|
||||
defer cleanup(globalEngine, t)
|
||||
srv := mkServerFromEngine(globalEngine, t)
|
||||
|
||||
// closure to build something
|
||||
buildSomething := func(template string, image string) string {
|
||||
dockerfile := path.Join(tmpDir, "Dockerfile")
|
||||
replacer := strings.NewReplacer("{IMAGE}", unitTestImageID)
|
||||
contents := replacer.Replace(template)
|
||||
ioutil.WriteFile(dockerfile, []byte(contents), 0x777)
|
||||
if err := cli.CmdBuild("-t", image, tmpDir); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
img, err := srv.ImageInspect(image)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return img.ID
|
||||
}
|
||||
|
||||
// build an image
|
||||
imageName := "orphan-test"
|
||||
template1 := `
|
||||
from {IMAGE}
|
||||
cmd ["/bin/echo", "holla"]
|
||||
`
|
||||
img1 := buildSomething(template1, imageName)
|
||||
|
||||
// create a container using the fist image
|
||||
if err := cli.CmdRun(imageName); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// build a new image that splits lineage
|
||||
template2 := `
|
||||
from {IMAGE}
|
||||
cmd ["/bin/echo", "holla"]
|
||||
expose 22
|
||||
`
|
||||
buildSomething(template2, imageName)
|
||||
|
||||
// remove the second image by name
|
||||
resp, err := srv.ImageDelete(imageName, true)
|
||||
|
||||
// see if we deleted the first image (and orphaned the container)
|
||||
for _, i := range resp {
|
||||
if img1 == i.Deleted {
|
||||
t.Fatal("Orphaned image with container")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue