Ω(stopMessages()).Should(ContainElement(EqualPendingStopMessage(expectedMessage))) expectedMessage = models.NewPendingStopMessage(clock.Now(), 0, conf.GracePeriod(), app.AppGuid, app.AppVersion, app.InstanceAtIndex(1).InstanceGuid, models.PendingStopMessageReasonExtra) Ω(stopMessages()).Should(ContainElement(EqualPendingStopMessage(expectedMessage))) expectedMessage = models.NewPendingStopMessage(clock.Now(), 0, conf.GracePeriod(), app.AppGuid, app.AppVersion, app.InstanceAtIndex(2).InstanceGuid, models.PendingStopMessageReasonExtra) Ω(stopMessages()).Should(ContainElement(EqualPendingStopMessage(expectedMessage))) }) }) Context("when there is an existing stop message", func() { var existingMessage models.PendingStopMessage BeforeEach(func() { existingMessage = models.NewPendingStopMessage(time.Unix(1, 0), 0, 0, app.AppGuid, app.AppVersion, app.InstanceAtIndex(0).InstanceGuid, models.PendingStopMessageReasonExtra) store.SavePendingStopMessages( existingMessage, ) analyzer.Analyze() }) It("should not overwrite", func() { Ω(stopMessages()).Should(HaveLen(3)) Ω(stopMessages()).Should(ContainElement(EqualPendingStopMessage(existingMessage))) }) }) Context("when the desired state requires fewer versions", func() { BeforeEach(func() { store.SyncDesiredState( app.DesiredState(1), )
}) Context("when there are stop messages", func() { var keepAliveTime int var sentOn int64 var err error var pendingMessage models.PendingStopMessage var storeSetErrInjector *fakestoreadapter.FakeStoreAdapterErrorInjector JustBeforeEach(func() { store.SyncHeartbeats(app.Heartbeat(2)) pendingMessage = models.NewPendingStopMessage(time.Unix(100, 0), 30, keepAliveTime, app.AppGuid, app.AppVersion, app.InstanceAtIndex(0).InstanceGuid, models.PendingStopMessageReasonInvalid) pendingMessage.SentOn = sentOn store.SavePendingStopMessages( pendingMessage, ) storeAdapter.SetErrInjector = storeSetErrInjector err = sender.Send() }) BeforeEach(func() { keepAliveTime = 0 sentOn = 0 err = nil storeSetErrInjector = nil }) Context("and it is not time to send the message yet", func() { BeforeEach(func() {