RetryInterval: 1 * time.Second, RootFSProviders: []string{"provider-1", "provider-2"}, } maintainer = maintain.New(config, fakeClient, serviceClient, logger, clock) }) AfterEach(func() { logger.Info("test-complete-signaling-maintainer-to-stop") close(pingErrors) ginkgomon.Interrupt(maintainProcess) }) It("pings the executor", func() { pingErrors <- nil maintainProcess = ginkgomon.Invoke(maintainer) Expect(fakeClient.PingCallCount()).To(Equal(1)) }) Context("when pinging the executor fails", func() { It("keeps pinging until it succeeds, then starts heartbeating the executor's presence", func() { maintainProcess = ifrit.Background(maintainer) ready := maintainProcess.Ready() for i := 1; i <= 4; i++ { clock.Increment(1 * time.Second) pingErrors <- errors.New("ping failed") Eventually(fakeClient.PingCallCount).Should(Equal(i)) Expect(ready).NotTo(BeClosed()) } pingErrors <- nil