Consistently(started, Δ).ShouldNot(BeClosed()) childRunner3.TriggerReady() Eventually(started).Should(BeClosed()) }) Describe("when all the runners are ready", func() { var ( signal1 <-chan os.Signal signal2 <-chan os.Signal signal3 <-chan os.Signal ) BeforeEach(func() { signal1 = childRunner1.WaitForCall() childRunner1.TriggerReady() signal2 = childRunner2.WaitForCall() childRunner2.TriggerReady() signal3 = childRunner3.WaitForCall() childRunner3.TriggerReady() Eventually(started).Should(BeClosed()) }) Describe("when it receives a signal", func() { BeforeEach(func() { groupProcess.Signal(syscall.SIGUSR2) }) It("doesn't send any more signals to remaining child processes", func() {
"github.com/cloudfoundry-incubator/docker_app_lifecycle/Godeps/_workspace/src/github.com/tedsuo/ifrit/proxy" . "github.com/cloudfoundry-incubator/docker_app_lifecycle/Godeps/_workspace/src/github.com/onsi/ginkgo" . "github.com/cloudfoundry-incubator/docker_app_lifecycle/Godeps/_workspace/src/github.com/onsi/gomega" ) var _ = Describe("Proxy", func() { var testRunner *fake_runner.TestRunner var process ifrit.Process var proxySignals chan os.Signal var receivedSignals <-chan os.Signal BeforeEach(func() { proxySignals = make(chan os.Signal, 1) testRunner = fake_runner.NewTestRunner() process = ifrit.Background(proxy.New(proxySignals, testRunner)) receivedSignals = testRunner.WaitForCall() testRunner.TriggerReady() }) It("sends the proxied signals to the embedded runner", func() { proxySignals <- os.Interrupt Eventually(receivedSignals).Should(Receive(Equal(os.Interrupt))) }) It("sends the process signals to the embedded runner", func() { process.Signal(os.Interrupt) Eventually(receivedSignals).Should(Receive(Equal(os.Interrupt))) }) })