github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/volume/store/store_test.go (about) 1 package store 2 3 import ( 4 "errors" 5 "testing" 6 7 "github.com/docker/docker/volume" 8 "github.com/docker/docker/volume/drivers" 9 vt "github.com/docker/docker/volume/testutils" 10 ) 11 12 func TestList(t *testing.T) { 13 volumedrivers.Register(vt.FakeDriver{}, "fake") 14 s := New() 15 s.AddAll([]volume.Volume{vt.NewFakeVolume("fake1"), vt.NewFakeVolume("fake2")}) 16 l := s.List() 17 if len(l) != 2 { 18 t.Fatalf("Expected 2 volumes in the store, got %v: %v", len(l), l) 19 } 20 } 21 22 func TestGet(t *testing.T) { 23 volumedrivers.Register(vt.FakeDriver{}, "fake") 24 s := New() 25 s.AddAll([]volume.Volume{vt.NewFakeVolume("fake1"), vt.NewFakeVolume("fake2")}) 26 v, err := s.Get("fake1") 27 if err != nil { 28 t.Fatal(err) 29 } 30 if v.Name() != "fake1" { 31 t.Fatalf("Expected fake1 volume, got %v", v) 32 } 33 34 if _, err := s.Get("fake4"); !IsNotExist(err) { 35 t.Fatalf("Expected IsNotExist error, got %v", err) 36 } 37 } 38 39 func TestCreate(t *testing.T) { 40 volumedrivers.Register(vt.FakeDriver{}, "fake") 41 s := New() 42 v, err := s.Create("fake1", "fake", nil) 43 if err != nil { 44 t.Fatal(err) 45 } 46 if v.Name() != "fake1" { 47 t.Fatalf("Expected fake1 volume, got %v", v) 48 } 49 if l := s.List(); len(l) != 1 { 50 t.Fatalf("Expected 1 volume in the store, got %v: %v", len(l), l) 51 } 52 53 if _, err := s.Create("none", "none", nil); err == nil { 54 t.Fatalf("Expected unknown driver error, got nil") 55 } 56 57 _, err = s.Create("fakeerror", "fake", map[string]string{"error": "create error"}) 58 expected := &OpErr{Op: "create", Name: "fakeerror", Err: errors.New("create error")} 59 if err != nil && err.Error() != expected.Error() { 60 t.Fatalf("Expected create fakeError: create error, got %v", err) 61 } 62 } 63 64 func TestRemove(t *testing.T) { 65 volumedrivers.Register(vt.FakeDriver{}, "fake") 66 s := New() 67 if err := s.Remove(vt.NoopVolume{}); !IsNotExist(err) { 68 t.Fatalf("Expected IsNotExist error, got %v", err) 69 } 70 v, err := s.Create("fake1", "fake", nil) 71 if err != nil { 72 t.Fatal(err) 73 } 74 s.Increment(v) 75 if err := s.Remove(v); !IsInUse(err) { 76 t.Fatalf("Expected IsInUse error, got %v", err) 77 } 78 s.Decrement(v) 79 if err := s.Remove(v); err != nil { 80 t.Fatal(err) 81 } 82 if l := s.List(); len(l) != 0 { 83 t.Fatalf("Expected 0 volumes in the store, got %v, %v", len(l), l) 84 } 85 } 86 87 func TestIncrement(t *testing.T) { 88 s := New() 89 v := vt.NewFakeVolume("fake1") 90 s.Increment(v) 91 if l := s.List(); len(l) != 1 { 92 t.Fatalf("Expected 1 volume, got %v, %v", len(l), l) 93 } 94 if c := s.Count(v); c != 1 { 95 t.Fatalf("Expected 1 counter, got %v", c) 96 } 97 98 s.Increment(v) 99 if l := s.List(); len(l) != 1 { 100 t.Fatalf("Expected 1 volume, got %v, %v", len(l), l) 101 } 102 if c := s.Count(v); c != 2 { 103 t.Fatalf("Expected 2 counter, got %v", c) 104 } 105 106 v2 := vt.NewFakeVolume("fake2") 107 s.Increment(v2) 108 if l := s.List(); len(l) != 2 { 109 t.Fatalf("Expected 2 volume, got %v, %v", len(l), l) 110 } 111 } 112 113 func TestDecrement(t *testing.T) { 114 s := New() 115 v := vt.NoopVolume{} 116 s.Decrement(v) 117 if c := s.Count(v); c != 0 { 118 t.Fatalf("Expected 0 volumes, got %v", c) 119 } 120 121 s.Increment(v) 122 s.Increment(v) 123 s.Decrement(v) 124 if c := s.Count(v); c != 1 { 125 t.Fatalf("Expected 1 volume, got %v", c) 126 } 127 128 s.Decrement(v) 129 if c := s.Count(v); c != 0 { 130 t.Fatalf("Expected 0 volumes, got %v", c) 131 } 132 133 // Test counter cannot be negative. 134 s.Decrement(v) 135 if c := s.Count(v); c != 0 { 136 t.Fatalf("Expected 0 volumes, got %v", c) 137 } 138 } 139 140 func TestFilterByDriver(t *testing.T) { 141 s := New() 142 143 s.Increment(vt.NewFakeVolume("fake1")) 144 s.Increment(vt.NewFakeVolume("fake2")) 145 s.Increment(vt.NoopVolume{}) 146 147 if l := s.FilterByDriver("fake"); len(l) != 2 { 148 t.Fatalf("Expected 2 volumes, got %v, %v", len(l), l) 149 } 150 151 if l := s.FilterByDriver("noop"); len(l) != 1 { 152 t.Fatalf("Expected 1 volume, got %v, %v", len(l), l) 153 } 154 }