Tizen_4.0 base
[platform/upstream/docker-engine.git] / container / view_test.go
1 package container
2
3 import (
4         "io/ioutil"
5         "os"
6         "path/filepath"
7         "testing"
8
9         containertypes "github.com/docker/docker/api/types/container"
10         "github.com/docker/docker/pkg/registrar"
11         "github.com/pborman/uuid"
12 )
13
14 var root string
15
16 func TestMain(m *testing.M) {
17         var err error
18         root, err = ioutil.TempDir("", "docker-container-test-")
19         if err != nil {
20                 panic(err)
21         }
22         defer os.RemoveAll(root)
23
24         os.Exit(m.Run())
25 }
26
27 func newContainer(t *testing.T) *Container {
28         var (
29                 id    = uuid.New()
30                 cRoot = filepath.Join(root, id)
31         )
32         if err := os.MkdirAll(cRoot, 0755); err != nil {
33                 t.Fatal(err)
34         }
35         c := NewBaseContainer(id, cRoot)
36         c.HostConfig = &containertypes.HostConfig{}
37         return c
38 }
39
40 func TestViewSaveDelete(t *testing.T) {
41         db, err := NewViewDB()
42         if err != nil {
43                 t.Fatal(err)
44         }
45         c := newContainer(t)
46         if err := c.CheckpointTo(db); err != nil {
47                 t.Fatal(err)
48         }
49         if err := db.Delete(c); err != nil {
50                 t.Fatal(err)
51         }
52 }
53
54 func TestViewAll(t *testing.T) {
55         var (
56                 db, _ = NewViewDB()
57                 names = registrar.NewRegistrar()
58                 one   = newContainer(t)
59                 two   = newContainer(t)
60         )
61         one.Pid = 10
62         if err := one.CheckpointTo(db); err != nil {
63                 t.Fatal(err)
64         }
65         two.Pid = 20
66         if err := two.CheckpointTo(db); err != nil {
67                 t.Fatal(err)
68         }
69
70         all, err := db.Snapshot(names).All()
71         if err != nil {
72                 t.Fatal(err)
73         }
74         if l := len(all); l != 2 {
75                 t.Fatalf("expected 2 items, got %d", l)
76         }
77         byID := make(map[string]Snapshot)
78         for i := range all {
79                 byID[all[i].ID] = all[i]
80         }
81         if s, ok := byID[one.ID]; !ok || s.Pid != 10 {
82                 t.Fatalf("expected something different with for id=%s: %v", one.ID, s)
83         }
84         if s, ok := byID[two.ID]; !ok || s.Pid != 20 {
85                 t.Fatalf("expected something different with for id=%s: %v", two.ID, s)
86         }
87 }
88
89 func TestViewGet(t *testing.T) {
90         var (
91                 db, _ = NewViewDB()
92                 names = registrar.NewRegistrar()
93                 one   = newContainer(t)
94         )
95         one.ImageID = "some-image-123"
96         if err := one.CheckpointTo(db); err != nil {
97                 t.Fatal(err)
98         }
99         s, err := db.Snapshot(names).Get(one.ID)
100         if err != nil {
101                 t.Fatal(err)
102         }
103         if s == nil || s.ImageID != "some-image-123" {
104                 t.Fatalf("expected ImageID=some-image-123. Got: %v", s)
105         }
106 }