server_test.go
5a2a5ccd
 package docker
 
 import (
 	"testing"
 )
 
c80448c4
 func TestContainerTagImageDelete(t *testing.T) {
 	runtime, err := newTestRuntime()
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer nuke(runtime)
 
 	srv := &Server{runtime: runtime}
 
 	if err := srv.runtime.repositories.Set("utest", "tag1", unitTestImageName, false); err != nil {
 		t.Fatal(err)
 	}
 	if err := srv.runtime.repositories.Set("utest/docker", "tag2", unitTestImageName, false); err != nil {
 		t.Fatal(err)
 	}
 
 	images, err := srv.Images(false, "")
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	if len(images) != 3 {
 		t.Errorf("Excepted 3 images, %d found", len(images))
 	}
 
9060b5c2
 	if _, err := srv.ImageDelete("utest/docker:tag2", true); err != nil {
c80448c4
 		t.Fatal(err)
 	}
 
 	images, err = srv.Images(false, "")
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	if len(images) != 2 {
 		t.Errorf("Excepted 2 images, %d found", len(images))
 	}
 
9060b5c2
 	if _, err := srv.ImageDelete("utest:tag1", true); err != nil {
c80448c4
 		t.Fatal(err)
 	}
 
 	images, err = srv.Images(false, "")
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	if len(images) != 1 {
 		t.Errorf("Excepted 1 image, %d found", len(images))
 	}
 }
 
5a2a5ccd
 func TestCreateRm(t *testing.T) {
 	runtime, err := newTestRuntime()
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer nuke(runtime)
 
 	srv := &Server{runtime: runtime}
 
fd224ee5
 	config, _, err := ParseRun([]string{GetTestImage(runtime).ID, "echo test"}, nil)
5a2a5ccd
 	if err != nil {
 		t.Fatal(err)
 	}
 
152ebeea
 	id, err := srv.ContainerCreate(config)
5a2a5ccd
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	if len(runtime.List()) != 1 {
 		t.Errorf("Expected 1 container, %v found", len(runtime.List()))
 	}
 
 	if err = srv.ContainerDestroy(id, true); err != nil {
 		t.Fatal(err)
 	}
 
 	if len(runtime.List()) != 0 {
 		t.Errorf("Expected 0 container, %v found", len(runtime.List()))
 	}
 
 }
 
 func TestCreateStartRestartStopStartKillRm(t *testing.T) {
 	runtime, err := newTestRuntime()
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer nuke(runtime)
 
 	srv := &Server{runtime: runtime}
 
fd224ee5
 	config, _, err := ParseRun([]string{GetTestImage(runtime).ID, "/bin/cat"}, nil)
5a2a5ccd
 	if err != nil {
 		t.Fatal(err)
 	}
 
152ebeea
 	id, err := srv.ContainerCreate(config)
5a2a5ccd
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	if len(runtime.List()) != 1 {
 		t.Errorf("Expected 1 container, %v found", len(runtime.List()))
 	}
 
 	err = srv.ContainerStart(id)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	err = srv.ContainerRestart(id, 1)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	err = srv.ContainerStop(id, 1)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	err = srv.ContainerStart(id)
 	if err != nil {
 		t.Fatal(err)
 	}
 
 	err = srv.ContainerKill(id)
 	if err != nil {
 		t.Fatal(err)
 	}
 
194f4877
 	// FIXME: this failed once with a race condition ("Unable to remove filesystem for xxx: directory not empty")
5a2a5ccd
 	if err = srv.ContainerDestroy(id, true); err != nil {
 		t.Fatal(err)
 	}
 
 	if len(runtime.List()) != 0 {
 		t.Errorf("Expected 0 container, %v found", len(runtime.List()))
 	}
 
 }
d3f83a65
 
 func TestRunWithTooLowMemoryLimit(t *testing.T) {
 	runtime, err := newTestRuntime()
 	srv := &Server{runtime: runtime}
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer nuke(runtime)
 	// Try to create a container with a memory limit of 1 byte less than the minimum allowed limit.
 	_, err = srv.ContainerCreate(
 		&Config{
 			Image:     GetTestImage(runtime).ID,
 			Memory:    524287,
 			CpuShares: 1000,
 			Cmd:       []string{"/bin/cat"},
 		},
 	)
 	if err == nil {
 		t.Errorf("Memory limit is smaller than the allowed limit. Container creation should've failed!")
 	}
 
 }