oldActualLRP2 = oldmodels.ActualLRP{ ActualLRPKey: oldmodels.NewActualLRPKey( "process-guid-1", 2, "domain-1", ), ActualLRPInstanceKey: oldmodels.NewActualLRPInstanceKey( "instance-guid-1", "cell-id-1", ), State: oldmodels.ActualLRPStateClaimed, Since: 4444, } oldEvacuatingLRP2 = oldActualLRP2 oldEvacuatingLRP2.State = oldmodels.ActualLRPStateRunning oldEvacuatingLRP2.Since = 3417 }) Describe("GetAll", func() { Context("when reading LRPs from BBS succeeds", func() { BeforeEach(func() { fakeBBS.ActualLRPGroupsStub = func(filter models.ActualLRPFilter) ([]*models.ActualLRPGroup, error) { groups := []*models.ActualLRPGroup{} if filter.Domain == "" { groups = append(groups, &models.ActualLRPGroup{Instance: &actualLRP1}) } groups = append(groups, &models.ActualLRPGroup{Instance: &actualLRP2, Evacuating: &evacuatingLRP2}) return groups, nil } })
actualLRP2 = models.ActualLRP{ ActualLRPKey: models.NewActualLRPKey( "process-guid-1", 2, "domain-1", ), ActualLRPInstanceKey: models.NewActualLRPInstanceKey( "instance-guid-1", "cell-id-1", ), State: models.ActualLRPStateClaimed, Since: 4444, } evacuatingLRP2 = actualLRP2 evacuatingLRP2.State = models.ActualLRPStateRunning evacuatingLRP2.Since = 3417 }) Describe("GetAll", func() { Context("when reading LRPs from BBS succeeds", func() { BeforeEach(func() { fakeBBS.ActualLRPGroupsReturns([]models.ActualLRPGroup{ {Instance: &actualLRP1}, {Instance: &actualLRP2, Evacuating: &evacuatingLRP2}, }, nil) fakeBBS.ActualLRPGroupsByDomainReturns([]models.ActualLRPGroup{ {Instance: &actualLRP2, Evacuating: &evacuatingLRP2}, }, nil) })
Expect(resolvedLRP).To(Equal(evacuatingLRP)) Expect(evacuating).To(BeTrue()) }) }) Context("When both the Instance and the Evacuating LRP are set", func() { BeforeEach(func() { group = models.ActualLRPGroup{ Evacuating: evacuatingLRP, Instance: instanceLRP, } }) Context("When the Instance is UNCLAIMED", func() { BeforeEach(func() { instanceLRP.State = models.ActualLRPStateUnclaimed }) It("returns the Evacuating LRP", func() { Expect(resolveErr).NotTo(HaveOccurred()) Expect(resolvedLRP).To(Equal(evacuatingLRP)) Expect(evacuating).To(BeTrue()) }) }) Context("When the Instance is CLAIMED", func() { BeforeEach(func() { instanceLRP.State = models.ActualLRPStateClaimed }) It("returns the Evacuating LRP", func() {
} actualResponse := serialization.ActualLRPToResponse(actualLRP, true) Expect(actualResponse).To(Equal(expectedResponse)) }) It("maps model states to receptor states", func() { expectedStateMap := map[models.ActualLRPState]receptor.ActualLRPState{ models.ActualLRPStateUnclaimed: receptor.ActualLRPStateUnclaimed, models.ActualLRPStateClaimed: receptor.ActualLRPStateClaimed, models.ActualLRPStateRunning: receptor.ActualLRPStateRunning, models.ActualLRPStateCrashed: receptor.ActualLRPStateCrashed, } for modelState, jsonState := range expectedStateMap { actualLRP.State = modelState Expect(serialization.ActualLRPToResponse(actualLRP, false).State).To(Equal(jsonState)) } actualLRP.State = "" Expect(serialization.ActualLRPToResponse(actualLRP, false).State).To(Equal(receptor.ActualLRPStateInvalid)) }) Context("when there is placement error", func() { BeforeEach(func() { actualLRP.State = models.ActualLRPStateUnclaimed actualLRP.PlacementError = diego_errors.INSUFFICIENT_RESOURCES_MESSAGE }) It("includes the placement error", func() { actualResponse := serialization.ActualLRPToResponse(actualLRP, false)