var _ = Describe("Container", func() { var container garden.Container var fakeConnection *fakes.FakeConnection BeforeEach(func() { fakeConnection = new(fakes.FakeConnection) }) JustBeforeEach(func() { var err error client := New(fakeConnection) fakeConnection.CreateReturns("some-handle", nil) container, err = client.Create(garden.ContainerSpec{}) Ω(err).ShouldNot(HaveOccurred()) }) Describe("Handle", func() { It("returns the container's handle", func() { Ω(container.Handle()).Should(Equal("some-handle")) }) }) Describe("Stop", func() { It("sends a stop request", func() { err := container.Stop(true) Ω(err).ShouldNot(HaveOccurred())
}) It("returns the error", func() { _, err := client.BulkMetrics(handles) Ω(err).Should(MatchError("Oh noes!")) }) }) }) Describe("Create", func() { It("sends a create request and returns a container", func() { spec := garden.ContainerSpec{ RootFSPath: "/some/roofs", } fakeConnection.CreateReturns("some-handle", nil) container, err := client.Create(spec) Ω(err).ShouldNot(HaveOccurred()) Ω(container).ShouldNot(BeNil()) Ω(fakeConnection.CreateArgsForCall(0)).Should(Equal(spec)) Ω(container.Handle()).Should(Equal("some-handle")) }) Context("when there is a connection error", func() { disaster := errors.New("oh no!") BeforeEach(func() { fakeConnection.CreateReturns("", disaster)
}) }) Describe("Create", func() { spec := garden.ContainerSpec{ RootFSPath: "/dev/mouse", } var gotHandle string itRetries(func() error { var err error gotHandle, err = conn.Create(spec) return err }, func(err error) { innerConnection.CreateReturns("bach", err) }, func() int { return innerConnection.CreateCallCount() }, func() { It("calls through to garden", func() { Ω(innerConnection.CreateCallCount()).Should(Equal(1)) calledSpec := innerConnection.CreateArgsForCall(0) Ω(calledSpec).Should(Equal(spec)) }) It("returns the container handle", func() { Ω(gotHandle).Should(Equal("bach")) }) }) })