evacuatingLRP2 = actualLRP2 evacuatingLRP2.State = models.ActualLRPStateRunning evacuatingLRP2.Since = 3417 }) JustBeforeEach(func() { request := newTestRequest(requestBody) handler.ActualLRPGroupByProcessGuidAndIndex(logger, responseRecorder, request) }) Context("when reading actual lrps from DB succeeds", func() { var actualLRPGroup *models.ActualLRPGroup BeforeEach(func() { actualLRPGroup = &models.ActualLRPGroup{Instance: &actualLRP1} fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexReturns(actualLRPGroup, nil) }) It("fetches actual lrp group by process guid and index", func() { Expect(fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexCallCount()).To(Equal(1)) _, actualProcessGuid, idx := fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexArgsForCall(0) Expect(actualProcessGuid).To(Equal(processGuid)) Expect(idx).To(BeEquivalentTo(index)) }) It("returns an actual lrp group", func() { Expect(responseRecorder.Code).To(Equal(http.StatusOK)) response := &models.ActualLRPGroupResponse{} err := response.Unmarshal(responseRecorder.Body.Bytes()) Expect(err).NotTo(HaveOccurred())
Instance: &actualLRP, } }) JustBeforeEach(func() { request = newTestRequest(requestBody) handler.RetireActualLRP(logger, responseRecorder, request) response = &models.ActualLRPLifecycleResponse{} err := response.Unmarshal(responseRecorder.Body.Bytes()) Expect(err).NotTo(HaveOccurred()) }) Context("when the DB returns an unrecoverable error", func() { BeforeEach(func() { fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexReturns(nil, models.NewUnrecoverableError(nil)) }) It("logs and writes to the exit channel", func() { Eventually(logger).Should(gbytes.Say("unrecoverable-error")) Eventually(exitCh).Should(Receive()) }) }) Context("when finding the actualLRP fails", func() { BeforeEach(func() { fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexReturns(nil, errors.New("could not find lrp")) }) It("returns an error and does not retry", func() { Expect(response.Error.Message).To(Equal("could not find lrp"))
requestBody interface{} ) BeforeEach(func() { key = models.NewActualLRPKey( processGuid, index, "domain-0", ) instanceKey = models.NewActualLRPInstanceKey("instance-guid", "cell-id") requestBody = &models.RemoveEvacuatingActualLRPRequest{ ActualLrpKey: &key, ActualLrpInstanceKey: &instanceKey, } fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexReturns(&models.ActualLRPGroup{Evacuating: actual}, nil) }) JustBeforeEach(func() { request := newTestRequest(requestBody) handler.RemoveEvacuatingActualLRP(logger, responseRecorder, request) }) Context("when removeEvacuatinging the actual lrp in the DB succeeds", func() { BeforeEach(func() { fakeEvacuationDB.RemoveEvacuatingActualLRPReturns(nil) }) It("removeEvacuatings the actual lrp by process guid and index", func() { Expect(responseRecorder.Code).To(Equal(http.StatusOK))