mirror of
https://github.com/clearlinux/docker.git
synced 2026-09-06 13:41:36 +00:00
Port 'docker images' to the engine API
Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
This commit is contained in:
committed by
Victor Vieux
parent
6652416f4c
commit
17a806c8a0
+29
-35
@@ -60,11 +60,14 @@ func TestGetInfo(t *testing.T) {
|
||||
defer mkRuntimeFromEngine(eng, t).Nuke()
|
||||
srv := mkServerFromEngine(eng, t)
|
||||
|
||||
initialImages, err := srv.Images(false, "")
|
||||
job := eng.Job("images")
|
||||
initialImages, err := job.Stdout.AddTable()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if err := job.Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
req, err := http.NewRequest("GET", "/info", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
@@ -85,8 +88,8 @@ func TestGetInfo(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
out.Close()
|
||||
if images := i.GetInt("Images"); images != len(initialImages) {
|
||||
t.Errorf("Expected images: %d, %d found", len(initialImages), images)
|
||||
if images := i.GetInt("Images"); images != initialImages.Len() {
|
||||
t.Errorf("Expected images: %d, %d found", initialImages.Len(), images)
|
||||
}
|
||||
expected := "application/json"
|
||||
if result := r.HeaderMap.Get("Content-Type"); result != expected {
|
||||
@@ -145,12 +148,14 @@ func TestGetImagesJSON(t *testing.T) {
|
||||
defer mkRuntimeFromEngine(eng, t).Nuke()
|
||||
srv := mkServerFromEngine(eng, t)
|
||||
|
||||
// all=0
|
||||
|
||||
initialImages, err := srv.Images(false, "")
|
||||
job := eng.Job("images")
|
||||
initialImages, err := job.Stdout.AddTable()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := job.Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("GET", "/images/json?all=0", nil)
|
||||
if err != nil {
|
||||
@@ -164,18 +169,18 @@ func TestGetImagesJSON(t *testing.T) {
|
||||
}
|
||||
assertHttpNotError(r, t)
|
||||
|
||||
images := []docker.APIImages{}
|
||||
if err := json.Unmarshal(r.Body.Bytes(), &images); err != nil {
|
||||
images := engine.NewTable("Created", 0)
|
||||
if _, err := images.ReadFrom(r.Body); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(images) != len(initialImages) {
|
||||
t.Errorf("Expected %d image, %d found", len(initialImages), len(images))
|
||||
if images.Len() != initialImages.Len() {
|
||||
t.Errorf("Expected %d image, %d found", initialImages.Len(), images.Len())
|
||||
}
|
||||
|
||||
found := false
|
||||
for _, img := range images {
|
||||
if strings.Contains(img.RepoTags[0], unitTestImageName) {
|
||||
for _, img := range images.Data {
|
||||
if strings.Contains(img.GetList("RepoTags")[0], unitTestImageName) {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
@@ -188,10 +193,7 @@ func TestGetImagesJSON(t *testing.T) {
|
||||
|
||||
// all=1
|
||||
|
||||
initialImages, err = srv.Images(true, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
initialImages = getAllImages(eng, t)
|
||||
|
||||
req2, err := http.NewRequest("GET", "/images/json?all=true", nil)
|
||||
if err != nil {
|
||||
@@ -207,8 +209,8 @@ func TestGetImagesJSON(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(images2) != len(initialImages) {
|
||||
t.Errorf("Expected %d image, %d found", len(initialImages), len(images2))
|
||||
if len(images2) != initialImages.Len() {
|
||||
t.Errorf("Expected %d image, %d found", initialImages.Len(), len(images2))
|
||||
}
|
||||
|
||||
found = false
|
||||
@@ -1126,21 +1128,16 @@ func TestDeleteImages(t *testing.T) {
|
||||
defer mkRuntimeFromEngine(eng, t).Nuke()
|
||||
srv := mkServerFromEngine(eng, t)
|
||||
|
||||
initialImages, err := srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
initialImages := getImages(eng, t, true, "")
|
||||
|
||||
if err := eng.Job("tag", unitTestImageName, "test", "test").Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images, err := srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if len(images[0].RepoTags) != len(initialImages[0].RepoTags)+1 {
|
||||
t.Errorf("Expected %d images, %d found", len(initialImages)+1, len(images))
|
||||
images := getImages(eng, t, true, "")
|
||||
|
||||
if images.Len() != initialImages.Len()+1 {
|
||||
t.Errorf("Expected %d images, %d found", initialImages.Len()+1, images.Len())
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("DELETE", "/images/"+unitTestImageID, nil)
|
||||
@@ -1177,13 +1174,10 @@ func TestDeleteImages(t *testing.T) {
|
||||
if len(outs) != 1 {
|
||||
t.Fatalf("Expected %d event (untagged), got %d", 1, len(outs))
|
||||
}
|
||||
images, err = srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images = getImages(eng, t, false, "")
|
||||
|
||||
if len(images[0].RepoTags) != len(initialImages[0].RepoTags) {
|
||||
t.Errorf("Expected %d image, %d found", len(initialImages), len(images))
|
||||
if images.Len() != initialImages.Len() {
|
||||
t.Errorf("Expected %d image, %d found", initialImages.Len(), images.Len())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -51,14 +51,17 @@ func cleanup(eng *engine.Engine, t *testing.T) error {
|
||||
container.Kill()
|
||||
runtime.Destroy(container)
|
||||
}
|
||||
srv := mkServerFromEngine(eng, t)
|
||||
images, err := srv.Images(true, "")
|
||||
job := eng.Job("images")
|
||||
images, err := job.Stdout.AddTable()
|
||||
if err != nil {
|
||||
return err
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, image := range images {
|
||||
if image.ID != unitTestImageID {
|
||||
srv.ImageDelete(image.ID, false)
|
||||
if err := job.Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, image := range images.Data {
|
||||
if image.Get("ID") != unitTestImageID {
|
||||
mkServerFromEngine(eng, t).ImageDelete(image.Get("ID"), false)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@@ -158,7 +161,7 @@ func spawnGlobalDaemon() {
|
||||
Host: testDaemonAddr,
|
||||
}
|
||||
job := eng.Job("serveapi", listenURL.String())
|
||||
job.SetenvBool("Logging", os.Getenv("DEBUG") != "")
|
||||
job.SetenvBool("Logging", true)
|
||||
if err := job.Run(); err != nil {
|
||||
log.Fatalf("Unable to spawn the test daemon: %s", err)
|
||||
}
|
||||
|
||||
+36
-69
@@ -14,10 +14,7 @@ func TestImageTagImageDelete(t *testing.T) {
|
||||
|
||||
srv := mkServerFromEngine(eng, t)
|
||||
|
||||
initialImages, err := srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
initialImages := getAllImages(eng, t)
|
||||
if err := eng.Job("tag", unitTestImageName, "utest", "tag1").Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -30,52 +27,43 @@ func TestImageTagImageDelete(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err := srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images := getAllImages(eng, t)
|
||||
|
||||
if len(images[0].RepoTags) != len(initialImages[0].RepoTags)+3 {
|
||||
t.Errorf("Expected %d images, %d found", len(initialImages)+3, len(images))
|
||||
nExpected := len(initialImages.Data[0].GetList("RepoTags")) + 3
|
||||
nActual := len(images.Data[0].GetList("RepoTags"))
|
||||
if nExpected != nActual {
|
||||
t.Errorf("Expected %d images, %d found", nExpected, nActual)
|
||||
}
|
||||
|
||||
if _, err := srv.ImageDelete("utest/docker:tag2", true); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err = srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images = getAllImages(eng, t)
|
||||
|
||||
if len(images[0].RepoTags) != len(initialImages[0].RepoTags)+2 {
|
||||
t.Errorf("Expected %d images, %d found", len(initialImages)+2, len(images))
|
||||
nExpected = len(initialImages.Data[0].GetList("RepoTags")) + 2
|
||||
nActual = len(images.Data[0].GetList("RepoTags"))
|
||||
if nExpected != nActual {
|
||||
t.Errorf("Expected %d images, %d found", nExpected, nActual)
|
||||
}
|
||||
|
||||
if _, err := srv.ImageDelete("utest:5000/docker:tag3", true); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err = srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images = getAllImages(eng, t)
|
||||
|
||||
if len(images[0].RepoTags) != len(initialImages[0].RepoTags)+1 {
|
||||
t.Errorf("Expected %d images, %d found", len(initialImages)+1, len(images))
|
||||
}
|
||||
nExpected = len(initialImages.Data[0].GetList("RepoTags")) + 1
|
||||
nActual = len(images.Data[0].GetList("RepoTags"))
|
||||
|
||||
if _, err := srv.ImageDelete("utest:tag1", true); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err = srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images = getAllImages(eng, t)
|
||||
|
||||
if len(images) != len(initialImages) {
|
||||
t.Errorf("Expected %d image, %d found", len(initialImages), len(images))
|
||||
if images.Len() != initialImages.Len() {
|
||||
t.Errorf("Expected %d image, %d found", initialImages.Len(), images.Len())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,10 +238,7 @@ func TestRmi(t *testing.T) {
|
||||
srv := mkServerFromEngine(eng, t)
|
||||
defer mkRuntimeFromEngine(eng, t).Nuke()
|
||||
|
||||
initialImages, err := srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
initialImages := getAllImages(eng, t)
|
||||
|
||||
config, hostConfig, _, err := docker.ParseRun([]string{unitTestImageID, "echo", "test"}, nil)
|
||||
if err != nil {
|
||||
@@ -308,13 +293,10 @@ func TestRmi(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err := srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images := getAllImages(eng, t)
|
||||
|
||||
if len(images)-len(initialImages) != 2 {
|
||||
t.Fatalf("Expected 2 new images, found %d.", len(images)-len(initialImages))
|
||||
if images.Len()-initialImages.Len() != 2 {
|
||||
t.Fatalf("Expected 2 new images, found %d.", images.Len()-initialImages.Len())
|
||||
}
|
||||
|
||||
_, err = srv.ImageDelete(imageID, true)
|
||||
@@ -322,20 +304,17 @@ func TestRmi(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err = srv.Images(false, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
images = getAllImages(eng, t)
|
||||
|
||||
if images.Len()-initialImages.Len() != 1 {
|
||||
t.Fatalf("Expected 1 new image, found %d.", images.Len()-initialImages.Len())
|
||||
}
|
||||
|
||||
if len(images)-len(initialImages) != 1 {
|
||||
t.Fatalf("Expected 1 new image, found %d.", len(images)-len(initialImages))
|
||||
}
|
||||
|
||||
for _, image := range images {
|
||||
if strings.Contains(unitTestImageID, image.ID) {
|
||||
for _, image := range images.Data {
|
||||
if strings.Contains(unitTestImageID, image.Get("ID")) {
|
||||
continue
|
||||
}
|
||||
if image.RepoTags[0] == "<none>:<none>" {
|
||||
if image.GetList("RepoTags")[0] == "<none>:<none>" {
|
||||
t.Fatalf("Expected tagged image, got untagged one.")
|
||||
}
|
||||
}
|
||||
@@ -359,39 +338,27 @@ func TestImagesFilter(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err := srv.Images(false, "utest*/*")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images := getImages(eng, t, false, "utest*/*")
|
||||
|
||||
if len(images[0].RepoTags) != 2 {
|
||||
if len(images.Data[0].GetList("RepoTags")) != 2 {
|
||||
t.Fatal("incorrect number of matches returned")
|
||||
}
|
||||
|
||||
images, err = srv.Images(false, "utest")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images = getImages(eng, t, false, "utest")
|
||||
|
||||
if len(images[0].RepoTags) != 1 {
|
||||
if len(images.Data[0].GetList("RepoTags")) != 1 {
|
||||
t.Fatal("incorrect number of matches returned")
|
||||
}
|
||||
|
||||
images, err = srv.Images(false, "utest*")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images = getImages(eng, t, false, "utest*")
|
||||
|
||||
if len(images[0].RepoTags) != 1 {
|
||||
if len(images.Data[0].GetList("RepoTags")) != 1 {
|
||||
t.Fatal("incorrect number of matches returned")
|
||||
}
|
||||
|
||||
images, err = srv.Images(false, "*5000*/*")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images = getImages(eng, t, false, "*5000*/*")
|
||||
|
||||
if len(images[0].RepoTags) != 1 {
|
||||
if len(images.Data[0].GetList("RepoTags")) != 1 {
|
||||
t.Fatal("incorrect number of matches returned")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,13 +17,10 @@ func TestServerListOrderedImagesByCreationDate(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err := srv.Images(true, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images := getImages(eng, t, true, "")
|
||||
|
||||
if images[0].Created < images[1].Created {
|
||||
t.Error("Expected []APIImges to be ordered by most recent creation date.")
|
||||
if images.Data[0].GetInt("Created") < images.Data[1].GetInt("Created") {
|
||||
t.Error("Expected images to be ordered by most recent creation date.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,12 +41,9 @@ func TestServerListOrderedImagesByCreationDateAndTag(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
images, err := srv.Images(true, "")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
images := getImages(eng, t, true, "")
|
||||
|
||||
if images[0].RepoTags[0] != "repo:zed" && images[0].RepoTags[0] != "repo:bar" {
|
||||
if images.Data[0].GetList("RepoTags")[0] != "repo:zed" && images.Data[0].GetList("RepoTags")[0] != "repo:bar" {
|
||||
t.Errorf("Expected []APIImges to be ordered by most recent creation date. %s", images)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,8 +186,6 @@ func NewTestEngine(t utils.Fataler) *engine.Engine {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
eng.Stdout = ioutil.Discard
|
||||
eng.Stderr = ioutil.Discard
|
||||
// Load default plugins
|
||||
// (This is manually copied and modified from main() until we have a more generic plugin system)
|
||||
job := eng.Job("initapi")
|
||||
@@ -329,3 +327,22 @@ func fakeTar() (io.Reader, error) {
|
||||
tw.Close()
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
func getAllImages(eng *engine.Engine, t *testing.T) *engine.Table {
|
||||
return getImages(eng, t, true, "")
|
||||
}
|
||||
|
||||
func getImages(eng *engine.Engine, t *testing.T, all bool, filter string) *engine.Table {
|
||||
job := eng.Job("images")
|
||||
job.SetenvBool("all", all)
|
||||
job.Setenv("filter", filter)
|
||||
images, err := job.Stdout.AddTable()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := job.Run(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
return images
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user