github.com/schwarzm/garden-linux@v0.0.0-20150507151835-33bca2147c47/integration/lifecycle/container_info_test.go (about) 1 package lifecycle_test 2 3 import ( 4 "github.com/cloudfoundry-incubator/garden" 5 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 ) 9 10 var _ = Describe("Container information", func() { 11 12 BeforeEach(func() { 13 client = startGarden() 14 }) 15 16 Describe("for many containers", func() { 17 handles := []string{"handle1", "handle2"} 18 BeforeEach(func() { 19 _, err := client.Create(garden.ContainerSpec{ 20 Handle: "handle1", 21 }) 22 Expect(err).ToNot(HaveOccurred()) 23 _, err = client.Create(garden.ContainerSpec{ 24 Handle: "handle2", 25 }) 26 Expect(err).ToNot(HaveOccurred()) 27 }) 28 29 Describe(".BulkInfo", func() { 30 It("returns container info for the specified handles", func() { 31 bulkInfo, err := client.BulkInfo(handles) 32 Expect(err).ToNot(HaveOccurred()) 33 Expect(bulkInfo).To(HaveLen(2)) 34 for _, containerInfoEntry := range bulkInfo { 35 Expect(containerInfoEntry.Err).ToNot(HaveOccurred()) 36 } 37 }) 38 }) 39 40 Describe(".BulkMetrics", func() { 41 It("returns container metrics for the specified handles", func() { 42 bulkInfo, err := client.BulkMetrics(handles) 43 Expect(err).ToNot(HaveOccurred()) 44 Expect(bulkInfo).To(HaveLen(2)) 45 for _, containerMetricsEntry := range bulkInfo { 46 Expect(containerMetricsEntry.Err).ToNot(HaveOccurred()) 47 } 48 }) 49 }) 50 }) 51 52 Describe("for a single container", func() { 53 var container garden.Container 54 55 BeforeEach(func() { 56 var err error 57 58 container, err = client.Create(garden.ContainerSpec{ 59 Properties: garden.Properties{ 60 "foo": "bar", 61 "a": "b", 62 }, 63 }) 64 Expect(err).ToNot(HaveOccurred()) 65 }) 66 67 AfterEach(func() { 68 err := client.Destroy(container.Handle()) 69 Expect(err).ToNot(HaveOccurred()) 70 }) 71 72 Describe("info for one container", func() { 73 It("includes the properties", func() { 74 info, err := container.Info() 75 Expect(err).ToNot(HaveOccurred()) 76 77 Expect(info.Properties["foo"]).To(Equal("bar")) 78 Expect(info.Properties["a"]).To(Equal("b")) 79 80 Expect(info.Properties).To(HaveLen(2)) 81 }) 82 }) 83 84 Describe("getting container metrics without getting info", func() { 85 It("can list metrics", func() { 86 metrics, err := container.Metrics() 87 Expect(err).ToNot(HaveOccurred()) 88 89 Expect(metrics).To(BeAssignableToTypeOf(garden.Metrics{})) 90 Expect(metrics).ToNot(Equal(garden.Metrics{})) 91 }) 92 }) 93 94 Describe("getting container properties without getting info", func() { 95 It("can list properties", func() { 96 err := container.SetProperty("bar", "baz") 97 98 value, err := container.Properties() 99 Expect(err).ToNot(HaveOccurred()) 100 Expect(value).To(HaveKeyWithValue("foo", "bar")) 101 Expect(value).To(HaveKeyWithValue("bar", "baz")) 102 }) 103 }) 104 105 Describe("updating container properties", func() { 106 It("can CRUD", func() { 107 value, err := container.Property("foo") 108 Expect(err).ToNot(HaveOccurred()) 109 Expect(value).To(Equal("bar")) 110 111 err = container.SetProperty("foo", "baz") 112 Expect(err).ToNot(HaveOccurred()) 113 114 err = container.RemoveProperty("a") 115 Expect(err).ToNot(HaveOccurred()) 116 117 info, err := container.Info() 118 Expect(err).ToNot(HaveOccurred()) 119 120 Expect(info.Properties).To(Equal(garden.Properties{ 121 "foo": "baz", 122 })) 123 }) 124 }) 125 126 Describe("listing container info", func() { 127 var undesiredHandles []string 128 129 BeforeEach(func() { 130 undesiredContainer, err := client.Create(garden.ContainerSpec{ 131 Properties: garden.Properties{ 132 "foo": "baz", 133 "a": "b", 134 }, 135 }) 136 137 Expect(err).ToNot(HaveOccurred()) 138 139 undesiredHandles = append(undesiredHandles, undesiredContainer.Handle()) 140 141 undesiredContainer, err = client.Create(garden.ContainerSpec{ 142 Properties: garden.Properties{ 143 "baz": "bar", 144 "a": "b", 145 }, 146 }) 147 148 Expect(err).ToNot(HaveOccurred()) 149 150 undesiredHandles = append(undesiredHandles, undesiredContainer.Handle()) 151 }) 152 153 AfterEach(func() { 154 for _, handle := range undesiredHandles { 155 err := client.Destroy(handle) 156 Expect(err).ToNot(HaveOccurred()) 157 } 158 }) 159 160 It("can filter by property", func() { 161 containers, err := client.Containers(garden.Properties{"foo": "bar"}) 162 Expect(err).ToNot(HaveOccurred()) 163 164 Expect(containers).To(HaveLen(1)) 165 Expect(containers[0].Handle()).To(Equal(container.Handle())) 166 167 containers, err = client.Containers(garden.Properties{"matthew": "mcconaughey"}) 168 Expect(err).ToNot(HaveOccurred()) 169 170 Expect(containers).To(BeEmpty()) 171 }) 172 }) 173 }) 174 })