Expect(fakeEvacuationDB.RemoveEvacuatingActualLRPCallCount()).To(Equal(1)) _, key, instanceKey := fakeEvacuationDB.RemoveEvacuatingActualLRPArgsForCall(0) Expect(*key).To(Equal(actual.ActualLRPKey)) Expect(*instanceKey).To(Equal(actual.ActualLRPInstanceKey)) }) It("emits events to the hub", func() { Eventually(actualHub.EmitCallCount).Should(Equal(1)) event := actualHub.EmitArgsForCall(0) removeEvent, ok := event.(*models.ActualLRPRemovedEvent) Expect(ok).To(BeTrue()) Expect(removeEvent.ActualLrpGroup).To(Equal(&models.ActualLRPGroup{Evacuating: actual})) }) It("crashes the actual lrp instance", func() { Expect(fakeActualLRPDB.CrashActualLRPCallCount()).To(Equal(1)) _, key, instanceKey, errorMessage := fakeActualLRPDB.CrashActualLRPArgsForCall(0) Expect(*key).To(Equal(actual.ActualLRPKey)) Expect(*instanceKey).To(Equal(actual.ActualLRPInstanceKey)) Expect(errorMessage).To(Equal("i failed")) }) Context("when the DB returns an unrecoverable error", func() { BeforeEach(func() { fakeEvacuationDB.RemoveEvacuatingActualLRPReturns(models.NewUnrecoverableError(nil)) }) It("logs and writes to the exit channel", func() { Eventually(logger).Should(gbytes.Say("unrecoverable-error")) Eventually(exitCh).Should(Receive()) })