fakes "code.cloudfoundry.org/garden/gardenfakes" "code.cloudfoundry.org/garden/server/bomberman" ) var _ = Describe("Bomberman", func() { It("straps a bomb to the given container with the container's grace time as the countdown", func() { detonated := make(chan garden.Container) backend := new(fakes.FakeBackend) backend.GraceTimeReturns(100 * time.Millisecond) bomberman := bomberman.New(backend, func(container garden.Container) { detonated <- container }) container := new(fakes.FakeContainer) container.HandleReturns("doomed") bomberman.Strap(container) select { case <-detonated: case <-time.After(backend.GraceTime(container) + 50*time.Millisecond): Fail("did not detonate!") } }) Context("when the container has a grace time of 0", func() { It("never detonates", func() { detonated := make(chan garden.Container)
Consistently(stopExited).ShouldNot(BeClosed()) close(finishCreating) Eventually(stopExited).Should(BeClosed()) Eventually(created).Should(Receive()) err := apiClient.Ping() Ω(err).Should(HaveOccurred()) }) }) Context("when a Run request is in-flight", func() { It("does not wait for the request to complete", func(done Done) { fakeContainer := new(fakes.FakeContainer) fakeContainer.RunStub = func(spec garden.ProcessSpec, io garden.ProcessIO) (garden.Process, error) { process := new(fakes.FakeProcess) process.WaitStub = func() (int, error) { time.Sleep(time.Minute) return 0, nil } go func() { defer GinkgoRecover() _, err := io.Stdout.Write([]byte("msg 1\n")) Ω(err).ShouldNot(HaveOccurred())