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) Expect(guid).To(Equal("old-guid"))
BeforeEach(func() { id = Identifier{Name: "some-name"} }) JustBeforeEach(func() { foundContainer, lookupErr = worker.LookupContainer(id) }) Context("when the container can be found", func() { var fakeContainer *gfakes.FakeContainer BeforeEach(func() { fakeContainer = new(gfakes.FakeContainer) fakeContainer.HandleReturns("some-handle") fakeGardenClient.ContainersReturns([]garden.Container{fakeContainer}, nil) }) It("succeeds", func() { Ω(lookupErr).ShouldNot(HaveOccurred()) }) It("looks for containers with matching properties via the Garden client", func() { Ω(fakeGardenClient.ContainersCallCount()).Should(Equal(1)) Ω(fakeGardenClient.ContainersArgsForCall(0)).Should(Equal(garden.Properties{ "concourse:name": "some-name", })) }) Describe("the found container", func() { It("can be destroyed", func() {