Example #1
0
				heartbeat = dea.HeartbeatWith(app.CrashedInstanceHeartbeatAtIndex(0))
				store.SyncHeartbeats(heartbeat)
				store.SyncDesiredState(
					app.DesiredState(1),
				)
			})

			It("should back off the scheduling", func() {
				expectedDelays := []int64{0, 0, 0, 30, 60, 120, 240, 480, 960, 960, 960}

				for _, expectedDelay := range expectedDelays {
					err := analyzer.Analyze()
					Ω(err).ShouldNot(HaveOccurred())
					Ω(startMessages()[0].SendOn).Should(Equal(clock.Now().Unix() + expectedDelay))
					Ω(startMessages()[0].StartReason).Should(Equal(models.PendingStartMessageReasonCrashed))
					store.DeletePendingStartMessages(startMessages()...)
				}
			})
		})

		Context("When all instances are crashed", func() {
			BeforeEach(func() {
				heartbeat = dea.HeartbeatWith(app.CrashedInstanceHeartbeatAtIndex(0), app.CrashedInstanceHeartbeatAtIndex(1))
				store.SyncHeartbeats(heartbeat)

				store.SyncDesiredState(
					app.DesiredState(2),
				)
			})

			It("should only try to start the index 0", func() {