Context("when a status request errors", func() { It("exits with an error message if it's waiting for services to no longer be pending", func() { client.StatusStatus = fakemonit.FakeMonitStatus{ Services: []boshmonit.Service{ {Monitored: true, Name: "foo", Status: "unknown", Pending: true}, }, } errchan := make(chan error) go func() { errchan <- monit.StopAndWait() }() Eventually(timeService.WatcherCount).Should(Equal(2)) // we hit the sleep client.StatusErr = errors.New("Error message") timeService.Increment(5 * time.Minute) Eventually(func() string { err := <-errchan return err.Error() }).Should(Equal("Getting monit status: Error message")) Expect(len(runner.RunCommands)).To(Equal(0)) // never called 'monit stop', the right loop is failing }) It("exits with an error message if it's waiting for services to stop", func() { client.StatusStatus = fakemonit.FakeMonitStatus{ Services: []boshmonit.Service{ {Monitored: true, Name: "foo", Status: "unknown", Pending: false}, },
It("status returns start when at least one service is starting", func() { client.StatusStatus = fakemonit.FakeMonitStatus{ Services: []boshmonit.Service{ boshmonit.Service{Monitored: true, Status: "failing"}, boshmonit.Service{Monitored: true, Status: "starting"}, boshmonit.Service{Monitored: true, Status: "running"}, }, } status := monit.Status() Expect("starting").To(Equal(status)) }) It("status returns unknown when error", func() { client.StatusErr = errors.New("fake-monit-client-error") status := monit.Status() Expect("unknown").To(Equal(status)) }) }) Describe("MonitorJobFailures", func() { It("monitor job failures", func() { var handledAlert boshalert.MonitAlert failureHandler := func(alert boshalert.MonitAlert) (err error) { handledAlert = alert return }