) duplicateInstance1 = app.InstanceAtIndex(2) duplicateInstance1.InstanceGuid = models.Guid() duplicateInstance2 = app.InstanceAtIndex(2) duplicateInstance2.InstanceGuid = models.Guid() duplicateInstance3 = app.InstanceAtIndex(2) duplicateInstance3.InstanceGuid = models.Guid() }) Context("When there are missing instances on other indices", func() { It("should not schedule any stops but should start the missing indices", func() { //[-,-,2|2|2|2] store.SyncHeartbeats(dea.HeartbeatWith( app.InstanceAtIndex(2).Heartbeat(), duplicateInstance1.Heartbeat(), duplicateInstance2.Heartbeat(), duplicateInstance3.Heartbeat(), )) err := analyzer.Analyze() Ω(err).ShouldNot(HaveOccurred()) Ω(stopMessages()).Should(BeEmpty()) Ω(startMessages()).Should(HaveLen(2)) expectedMessage := models.NewPendingStartMessage(clock.Now(), conf.GracePeriod(), 0, app.AppGuid, app.AppVersion, 0, 2.0/3.0, models.PendingStartMessageReasonMissing) Ω(startMessages()).Should(ContainElement(EqualPendingStartMessage(expectedMessage))) expectedMessage = models.NewPendingStartMessage(clock.Now(), conf.GracePeriod(), 0, app.AppGuid, app.AppVersion, 1, 2.0/3.0, models.PendingStartMessageReasonMissing) Ω(startMessages()).Should(ContainElement(EqualPendingStartMessage(expectedMessage)))
var dea appfixture.DeaFixture var a appfixture.AppFixture Context("when there are multiple instances on the same index", func() { var instance0, instance1, duplicateInstance1 appfixture.Instance var heartbeat models.Heartbeat BeforeEach(func() { dea = appfixture.NewDeaFixture() a = dea.GetApp(0) instance0 = a.InstanceAtIndex(0) instance1 = a.InstanceAtIndex(1) duplicateInstance1 = a.InstanceAtIndex(1) duplicateInstance1.InstanceGuid = models.Guid() heartbeat = dea.HeartbeatWith(instance0.Heartbeat(), instance1.Heartbeat(), duplicateInstance1.Heartbeat()) simulator.SetCurrentHeartbeats(heartbeat) simulator.SetDesiredState(a.DesiredState(2)) simulator.Tick(simulator.TicksToAttainFreshness) }) It("should not immediately stop anything", func() { Ω(startStopListener.Stops).Should(BeEmpty()) }) Context("after four grace periods", func() { Context("if both instances are still running", func() { BeforeEach(func() { simulator.Tick(simulator.GracePeriod * 4)