|
@@ -226,6 +226,84 @@ func TestDiff(t *testing.T) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func TestCommitAutoRun(t *testing.T) {
|
|
|
|
+ runtime, err := newTestRuntime()
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ defer nuke(runtime)
|
|
|
|
+ container1, err := runtime.Create(
|
|
|
|
+ &Config{
|
|
|
|
+ Image: GetTestImage(runtime).Id,
|
|
|
|
+ Cmd: []string{"/bin/sh", "-c", "echo hello > /world"},
|
|
|
|
+ },
|
|
|
|
+ )
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ defer runtime.Destroy(container1)
|
|
|
|
+
|
|
|
|
+ if container1.State.Running {
|
|
|
|
+ t.Errorf("Container shouldn't be running")
|
|
|
|
+ }
|
|
|
|
+ if err := container1.Run(); err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ if container1.State.Running {
|
|
|
|
+ t.Errorf("Container shouldn't be running")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ rwTar, err := container1.ExportRw()
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Error(err)
|
|
|
|
+ }
|
|
|
|
+ img, err := runtime.graph.Create(rwTar, container1, "unit test commited image", "", &Config{Cmd: []string{"cat", "/world"}})
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Error(err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // FIXME: Make a TestCommit that stops here and check docker.root/layers/img.id/world
|
|
|
|
+
|
|
|
|
+ container2, err := runtime.Create(
|
|
|
|
+ &Config{
|
|
|
|
+ Image: img.Id,
|
|
|
|
+ },
|
|
|
|
+ )
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ defer runtime.Destroy(container2)
|
|
|
|
+ stdout, err := container2.StdoutPipe()
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ stderr, err := container2.StderrPipe()
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ if err := container2.Start(); err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ container2.Wait()
|
|
|
|
+ output, err := ioutil.ReadAll(stdout)
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ output2, err := ioutil.ReadAll(stderr)
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ if err := stdout.Close(); err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ if err := stderr.Close(); err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ if string(output) != "hello\n" {
|
|
|
|
+ t.Fatalf("Unexpected output. Expected %s, received: %s (err: %s)", "hello\n", output, output2)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
func TestCommitRun(t *testing.T) {
|
|
func TestCommitRun(t *testing.T) {
|
|
runtime, err := newTestRuntime()
|
|
runtime, err := newTestRuntime()
|
|
if err != nil {
|
|
if err != nil {
|