Example #1
0
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())
Example #2
0
			})

			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"))
			})
		})
	})