func (db *serviceClient) Cells(logger lager.Logger) (models.CellSet, error) { kvPairs, _, err := db.consulClient.KV().List(CellSchemaRoot(), nil) if err != nil { bbsErr := models.ConvertError(convertConsulError(err)) if bbsErr.Type != models.Error_ResourceNotFound { return nil, bbsErr } } if kvPairs == nil { err = consuladapter.NewPrefixNotFoundError(CellSchemaRoot()) bbsErr := models.ConvertError(convertConsulError(err)) if bbsErr.Type != models.Error_ResourceNotFound { return nil, bbsErr } } cellPresences := models.NewCellSet() for _, kvPair := range kvPairs { if kvPair.Session == "" { continue } cell := kvPair.Value presence := new(models.CellPresence) err := models.FromJSON(cell, presence) if err != nil { logger.Error("failed-to-unmarshal-cells-json", err) continue } cellPresences.Add(presence) } return cellPresences, nil }
DiskMb: 1000, Containers: 50, }, }, { CellId: "cell-2", RepAddress: "2.2.2.2", Zone: "z2", Capacity: &models.CellCapacity{ MemoryMb: 2000, DiskMb: 2000, Containers: 20, }, }, } cellSet = models.NewCellSet() cellSet.Add(cells[0]) cellSet.Add(cells[1]) }) JustBeforeEach(func() { handler.Cells(responseRecorder, newTestRequest("")) }) Context("when reading cells succeeds", func() { BeforeEach(func() { fakeServiceClient.CellsReturns(cellSet, nil) }) It("returns a list of cells", func() { Expect(responseRecorder.Code).To(Equal(http.StatusOK))
bbsClient = &fake_bbs.FakeClient{} serviceClient = &fake_bbs.FakeServiceClient{} repClientFactory = &repfakes.FakeClientFactory{} repClient = &repfakes.FakeClient{} repClientFactory.CreateClientReturns(repClient) logger = lagertest.NewTestLogger("delegate") delegate = auctionrunnerdelegate.New(repClientFactory, bbsClient, serviceClient, logger) }) Describe("fetching cell reps", func() { Context("when the BSS succeeds", func() { BeforeEach(func() { cellPresence1 := models.NewCellPresence("cell-A", "cell-a.url", "zone-1", models.NewCellCapacity(123, 456, 789), []string{}, []string{}) cellPresence2 := models.NewCellPresence("cell-B", "cell-b.url", "zone-1", models.NewCellCapacity(123, 456, 789), []string{}, []string{}) cellSet := models.NewCellSet() cellSet.Add(&cellPresence1) cellSet.Add(&cellPresence2) serviceClient.CellsReturns(cellSet, nil) }) It("creates rep clients with the correct addresses", func() { _, err := delegate.FetchCellReps() Expect(err).NotTo(HaveOccurred()) Expect(repClientFactory.CreateClientCallCount()).To(Equal(2)) urls := []string{ repClientFactory.CreateClientArgsForCall(0), repClientFactory.CreateClientArgsForCall(1), } Expect(urls).To(ConsistOf("cell-a.url", "cell-b.url"))