apiClient = client.New(connection.New("unix", socketPath)) }) AfterEach(func() { if isRunning { apiServer.Stop() } if tmpdir != "" { os.RemoveAll(tmpdir) } }) Context("and the client sends a PingRequest", func() { Context("and the backend ping succeeds", func() { It("does not error", func() { Ω(apiClient.Ping()).ShouldNot(HaveOccurred()) }) }) Context("when the backend ping fails", func() { BeforeEach(func() { serverBackend.PingReturns(errors.New("oh no!")) }) It("returns an error", func() { Ω(apiClient.Ping()).Should(HaveOccurred()) }) }) Context("when the server is not up", func() { BeforeEach(func() {
Eventually(creating).Should(BeClosed()) stopExited := make(chan struct{}) go func() { apiServer.Stop() close(stopExited) }() 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 }