mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
186 lines
3.4 KiB
Go
186 lines
3.4 KiB
Go
package docker
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestStart(t *testing.T) {
|
|
docker, err := newTestDocker()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
container, err := docker.Create(
|
|
"start_test",
|
|
"ls",
|
|
[]string{"-al"},
|
|
[]string{"/var/lib/docker/images/ubuntu"},
|
|
&Config{
|
|
Ram: 33554432,
|
|
},
|
|
)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer docker.Destroy(container)
|
|
|
|
if container.State.Running {
|
|
t.Errorf("Container shouldn't be running")
|
|
}
|
|
if err := container.Start(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
container.Wait()
|
|
if container.State.Running {
|
|
t.Errorf("Container shouldn't be running")
|
|
}
|
|
// We should be able to call Wait again
|
|
container.Wait()
|
|
if container.State.Running {
|
|
t.Errorf("Container shouldn't be running")
|
|
}
|
|
}
|
|
|
|
func TestRun(t *testing.T) {
|
|
docker, err := newTestDocker()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
container, err := docker.Create(
|
|
"run_test",
|
|
"ls",
|
|
[]string{"-al"},
|
|
[]string{"/var/lib/docker/images/ubuntu"},
|
|
&Config{
|
|
Ram: 33554432,
|
|
},
|
|
)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer docker.Destroy(container)
|
|
|
|
if container.State.Running {
|
|
t.Errorf("Container shouldn't be running")
|
|
}
|
|
if err := container.Run(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if container.State.Running {
|
|
t.Errorf("Container shouldn't be running")
|
|
}
|
|
}
|
|
|
|
func TestOutput(t *testing.T) {
|
|
docker, err := newTestDocker()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
container, err := docker.Create(
|
|
"output_test",
|
|
"echo",
|
|
[]string{"-n", "foobar"},
|
|
[]string{"/var/lib/docker/images/ubuntu"},
|
|
&Config{},
|
|
)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer docker.Destroy(container)
|
|
|
|
pipe, err := container.StdoutPipe()
|
|
defer pipe.Close()
|
|
output, err := container.Output()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if string(output) != "foobar" {
|
|
t.Error(string(output))
|
|
}
|
|
}
|
|
|
|
func TestStop(t *testing.T) {
|
|
docker, err := newTestDocker()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
container, err := docker.Create(
|
|
"stop_test",
|
|
"sleep",
|
|
[]string{"300"},
|
|
[]string{"/var/lib/docker/images/ubuntu"},
|
|
&Config{},
|
|
)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer docker.Destroy(container)
|
|
|
|
if container.State.Running {
|
|
t.Errorf("Container shouldn't be running")
|
|
}
|
|
if err := container.Start(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !container.State.Running {
|
|
t.Errorf("Container should be running")
|
|
}
|
|
if err := container.Stop(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if container.State.Running {
|
|
t.Errorf("Container shouldn't be running")
|
|
}
|
|
container.Wait()
|
|
if container.State.Running {
|
|
t.Errorf("Container shouldn't be running")
|
|
}
|
|
// Try stopping twice
|
|
if err := container.Stop(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func TestExitCode(t *testing.T) {
|
|
docker, err := newTestDocker()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
trueContainer, err := docker.Create(
|
|
"exit_test_1",
|
|
"/bin/true",
|
|
[]string{""},
|
|
[]string{"/var/lib/docker/images/ubuntu"},
|
|
&Config{},
|
|
)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer docker.Destroy(trueContainer)
|
|
if err := trueContainer.Run(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
falseContainer, err := docker.Create(
|
|
"exit_test_2",
|
|
"/bin/false",
|
|
[]string{""},
|
|
[]string{"/var/lib/docker/images/ubuntu"},
|
|
&Config{},
|
|
)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer docker.Destroy(falseContainer)
|
|
if err := falseContainer.Run(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if trueContainer.State.ExitCode != 0 {
|
|
t.Errorf("Unexpected exit code %v", trueContainer.State.ExitCode)
|
|
}
|
|
|
|
if falseContainer.State.ExitCode != 1 {
|
|
t.Errorf("Unexpected exit code %v", falseContainer.State.ExitCode)
|
|
}
|
|
}
|