Selaa lähdekoodia

Docker: Fixed an issue with container unmarshaling which prevented
docker.restore() to work properly.

Andrea Luzzardi 12 vuotta sitten
vanhempi
commit
2193b0c954
3 muutettua tiedostoa jossa 34 lisäystä ja 2 poistoa
  1. 1 1
      container.go
  2. 2 1
      docker.go
  3. 31 0
      docker_test.go

+ 1 - 1
container.go

@@ -70,7 +70,7 @@ func loadContainer(containerPath string) (*Container, error) {
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
-	var container *Container
+	container := &Container{}
 	if err := json.Unmarshal(data, container); err != nil {
 	if err := json.Unmarshal(data, container); err != nil {
 		return nil, err
 		return nil, err
 	}
 	}

+ 2 - 1
docker.go

@@ -4,6 +4,7 @@ import (
 	"container/list"
 	"container/list"
 	"fmt"
 	"fmt"
 	"io/ioutil"
 	"io/ioutil"
+	"log"
 	"os"
 	"os"
 	"path"
 	"path"
 )
 )
@@ -82,7 +83,7 @@ func (docker *Docker) restore() error {
 	for _, v := range dir {
 	for _, v := range dir {
 		container, err := loadContainer(path.Join(docker.repository, v.Name()))
 		container, err := loadContainer(path.Join(docker.repository, v.Name()))
 		if err != nil {
 		if err != nil {
-			fmt.Errorf("Failed to load %v: %v", v.Name(), err)
+			log.Printf("Failed to load container %v: %v", v.Name(), err)
 			continue
 			continue
 		}
 		}
 		docker.containers.PushBack(container)
 		docker.containers.PushBack(container)

+ 31 - 0
docker_test.go

@@ -173,3 +173,34 @@ func TestGet(t *testing.T) {
 	}
 	}
 
 
 }
 }
+
+func TestRestore(t *testing.T) {
+	root, err := ioutil.TempDir("", "docker-test")
+	if err != nil {
+		t.Fatal(err)
+	}
+	docker, err := NewFromDirectory(root)
+	if err != nil {
+		t.Fatal(err)
+	}
+	container, err := docker.Create(
+		"test",
+		"ls",
+		[]string{"-al"},
+		[]string{"/var/lib/docker/images/ubuntu"},
+		&Config{},
+	)
+	if len(docker.List()) != 1 {
+		t.Errorf("Expected 1 container, %v found", len(docker.List()))
+	}
+
+	defer docker.Destroy(container)
+
+	docker2, err := NewFromDirectory(root)
+	if err != nil {
+		t.Fatal(err)
+	}
+	if len(docker2.List()) != 1 {
+		t.Errorf("Expected 1 container, %v found", len(docker2.List()))
+	}
+}