storeAdapter = fakestoreadapter.New() store = storepackage.NewStore(conf, storeAdapter, fakelogger.NewFakeLogger()) clock = fakeclock.NewFakeClock(time.Unix(1000, 0)) dea = appfixture.NewDeaFixture() app = dea.GetApp(0) store.BumpActualFreshness(time.Unix(100, 0)) store.BumpDesiredFreshness(time.Unix(100, 0)) analyzer = New(store, clock, fakelogger.NewFakeLogger(), conf) }) startMessages := func() []models.PendingStartMessage { messages, _ := store.GetPendingStartMessages() messagesArr := []models.PendingStartMessage{} for _, message := range messages { messagesArr = append(messagesArr, message) } return messagesArr } stopMessages := func() []models.PendingStopMessage { messages, _ := store.GetPendingStopMessages() messagesArr := []models.PendingStopMessage{} for _, message := range messages { messagesArr = append(messagesArr, message) } return messagesArr }
evacuator = New(messageBus, store, timeProvider, conf, fakelogger.NewFakeLogger()) evacuator.Listen() }) It("should be listening on the message bus for droplet.exited", func() { Ω(messageBus.SubjectCallbacks("droplet.exited")).ShouldNot(BeNil()) }) Context("when droplet.exited is received", func() { Context("when the message is malformed", func() { It("does nothing", func() { messageBus.SubjectCallbacks("droplet.exited")[0](&nats.Msg{ Data: []byte("ß"), }) pendingStarts, err := store.GetPendingStartMessages() Ω(err).ShouldNot(HaveOccurred()) Ω(pendingStarts).Should(BeEmpty()) }) }) Context("when the reason is DEA_EVACUATION", func() { BeforeEach(func() { messageBus.SubjectCallbacks("droplet.exited")[0](&nats.Msg{ Data: app.InstanceAtIndex(1).DropletExited(models.DropletExitedReasonDEAEvacuation).ToJSON(), }) }) It("should put a high priority pending start message (configured to skip verification) into the queue", func() { pendingStarts, err := store.GetPendingStartMessages() Ω(err).ShouldNot(HaveOccurred())