func (db *ETCDDB) rawActualLRPGroupByProcessGuidAndIndex(logger lager.Logger, processGuid string, index int32) (*models.ActualLRPGroup, error) { node, err := db.fetchRecursiveRaw(logger, ActualLRPIndexDir(processGuid, index)) if err != nil { return nil, err } group := models.ActualLRPGroup{} for _, instanceNode := range node.Nodes { var lrp models.ActualLRP deserializeErr := db.deserializeModel(logger, instanceNode, &lrp) if deserializeErr != nil { logger.Error("failed-parsing-actual-lrp", deserializeErr, lager.Data{"key": instanceNode.Key}) return nil, deserializeErr } if isInstanceActualLRPNode(instanceNode) { group.Instance = &lrp } if isEvacuatingActualLRPNode(instanceNode) { group.Evacuating = &lrp } } if group.Evacuating == nil && group.Instance == nil { return nil, models.ErrResourceNotFound } return &group, nil }
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")) Expect(fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexCallCount()).To(Equal(1)) }) It("does not emit a change event to the hub", func() { Consistently(actualHub.EmitCallCount).Should(Equal(0)) }) }) Context("when there is no instance in the actual lrp group", func() { BeforeEach(func() { actualLRPGroup.Instance = nil fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexReturns(actualLRPGroup, nil) }) It("returns an error and does not retry", func() { Expect(response.Error).To(Equal(models.ErrResourceNotFound)) Expect(fakeActualLRPDB.ActualLRPGroupByProcessGuidAndIndexCallCount()).To(Equal(1)) }) It("does not emit a change event to the hub", func() { Consistently(actualHub.EmitCallCount).Should(Equal(0)) }) }) Context("with an Unclaimed LRP", func() { BeforeEach(func() {