Context("with a resource type container spec", func() { Context("when the resource type is supported by the worker", func() { BeforeEach(func() { spec = ResourceTypeContainerSpec{ Type: "some-resource", } }) Context("when creating the garden container works", func() { var fakeContainer *gfakes.FakeContainer BeforeEach(func() { fakeContainer = new(gfakes.FakeContainer) fakeContainer.HandleReturns("some-handle") fakeGardenClient.CreateReturns(fakeContainer, nil) }) It("succeeds", func() { Expect(createErr).NotTo(HaveOccurred()) }) It("creates the container with the Garden client", func() { Expect(fakeGardenClient.CreateCallCount()).To(Equal(1)) Expect(fakeGardenClient.CreateArgsForCall(0)).To(Equal(garden.ContainerSpec{ RootFSPath: "some-resource-image", Privileged: true, Properties: garden.Properties{}, })) })
Describe("Healthcheck", func() { var fakeContainer *gardenFakes.FakeContainer var oldContainer *gardenFakes.FakeContainer var fakeProcess *gardenFakes.FakeProcess BeforeEach(func() { fakeContainer = &gardenFakes.FakeContainer{} oldContainer = &gardenFakes.FakeContainer{} oldContainer.HandleReturns("old-guid") fakeProcess = &gardenFakes.FakeProcess{} }) Context("When garden is healthy", func() { BeforeEach(func() { gardenClient.CreateReturns(fakeContainer, nil) gardenClient.ContainersReturns([]garden.Container{oldContainer}, nil) fakeContainer.RunReturns(fakeProcess, nil) fakeProcess.WaitReturns(0, nil) }) It("drives a container lifecycle", func() { err := gardenChecker.Healthcheck(logger) By("Fetching any pre-existing healthcheck containers") Expect(gardenClient.ContainersCallCount()).To(Equal(1)) By("Deleting all pre-existing-containers") //call count is two because we also expect to destroy the container we create Expect(gardenClient.DestroyCallCount()).To(Equal(2)) guid := gardenClient.DestroyArgsForCall(0)