Context("when the redis process fails to start", func() {
			BeforeEach(func() {
				connectionTimeoutErr = errors.New("oops")
			})

			It("returns the same error that the WaitUntilConnectableFunc returns", func() {
				err := processController.StartAndWaitUntilReadyWithConfig(instance, []string{}, time.Second*1)
				Ω(err).To(Equal(connectionTimeoutErr))
			})
		})
	})

	Describe("Kill", func() {
		It("kills the correct process", func() {
			err := processController.Kill(instance)
			Ω(err).NotTo(HaveOccurred())

			Ω(fakeProcessKiller.killed).Should(BeTrue())
			Ω(fakeProcessKiller.lastPidKilled).Should(Equal(123))
		})
	})

	Describe("EnsureRunning", func() {
		Context("if the process is already running", func() {
			var controller *redis.OSProcessController
			var log *gbytes.Buffer

			BeforeEach(func() {
				fakeProcessChecker.alive = true
			})