}) Context("when the Index fields differ", func() { BeforeEach(func() { before.Index = 1138 afterKey.Index = 3417 }) It("is not allowed", func() { Expect(before.AllowsTransitionTo(afterKey, before.ActualLRPInstanceKey, before.GetState())).To(BeFalse()) }) }) Context("when the Domain fields differ", func() { BeforeEach(func() { before.Domain = "some-domain" afterKey.Domain = "another-domain" }) It("is not allowed", func() { Expect(before.AllowsTransitionTo(afterKey, before.ActualLRPInstanceKey, before.GetState())).To(BeFalse()) }) }) Context("when the ProcessGuid, Index, and Domain are equivalent", func() { var ( emptyKey = models.NewActualLRPInstanceKey("", "") claimedKey = models.NewActualLRPInstanceKey("some-instance-guid", "some-cell-id") differentInstanceGuidKey = models.NewActualLRPInstanceKey("some-other-instance-guid", "some-cell-id") differentCellIDKey = models.NewActualLRPInstanceKey("some-instance-guid", "some-other-cell-id")
etcdHelper.SetRawEvacuatingActualLRP(actualLRP, ttl) node, err := storeClient.Get(etcd.EvacuatingActualLRPSchemaPath(guid, index), false, false) fakeStoreClient.GetReturns(node, err) }) Context("when the something about the actual LRP has changed", func() { BeforeEach(func() { clock.IncrementBySeconds(5) actualLRP.Since = clock.Now().UnixNano() }) Context("when the lrp key changes", func() { BeforeEach(func() { actualLRP.Domain = "some-other-domain" }) It("persists the evacuating lrp in etcd", func() { group, err := etcdDB.EvacuateActualLRP(logger, &actualLRP.ActualLRPKey, &actualLRP.ActualLRPInstanceKey, &actualLRP.ActualLRPNetInfo, ttl) Expect(err).NotTo(HaveOccurred()) actualLRP.ModificationTag.Increment() actualLRPGroup, err := etcdDB.ActualLRPGroupByProcessGuidAndIndex(logger, guid, index) Expect(err).NotTo(HaveOccurred()) Expect(actualLRPGroup.Evacuating).To(BeEquivalentTo(actualLRP)) Expect(group).To(Equal(actualLRPGroup)) }) }) Context("when the instance key changes", func() {