func (f *FakeCell) SpinUp(serviceClient bbs.ServiceClient) { //make a test-friendly AuctionRepDelegate using the auction package's SimulationRepDelegate f.SimulationRep = simulationrep.New(f.stack, "Z0", rep.Resources{ DiskMB: 100, MemoryMB: 100, Containers: 100, }) //spin up an http auction server logger := lager.NewLogger(f.cellID) logger.RegisterSink(lager.NewWriterSink(GinkgoWriter, lager.INFO)) fakeLRPStopper := new(fake_lrp_stopper.FakeLRPStopper) fakeExecutorClient := new(executorfakes.FakeClient) fakeEvacuatable := new(fake_evacuation_context.FakeEvacuatable) handlers := rephandlers.New(f.SimulationRep, fakeLRPStopper, fakeExecutorClient, fakeEvacuatable, logger) router, err := rata.NewRouter(rep.Routes, handlers) Expect(err).NotTo(HaveOccurred()) f.server = httptest.NewServer(router) presence := models.NewCellPresence( f.cellID, f.server.URL, "az1", models.NewCellCapacity(512, 1024, 124), []string{}, []string{}) f.heartbeater = ifrit.Invoke(serviceClient.NewCellPresenceRunner(logger, &presence, time.Second)) }
func initializeServer( bbsClient bbs.Client, executorClient executor.Client, evacuatable evacuation_context.Evacuatable, evacuationReporter evacuation_context.EvacuationReporter, logger lager.Logger, stackMap rep.StackPathMap, supportedProviders []string, ) (ifrit.Runner, string) { lrpStopper := initializeLRPStopper(*cellID, executorClient, logger) auctionCellRep := auction_cell_rep.New(*cellID, stackMap, supportedProviders, *zone, generateGuid, executorClient, evacuationReporter, logger) handlers := handlers.New(auctionCellRep, lrpStopper, executorClient, evacuatable, logger) router, err := rata.NewRouter(rep.Routes, handlers) if err != nil { logger.Fatal("failed-to-construct-router", err) } ip, err := localip.LocalIP() if err != nil { logger.Fatal("failed-to-fetch-ip", err) } port := strings.Split(*listenAddr, ":")[1] address := fmt.Sprintf("http://%s:%s", ip, port) return http_server.New(*listenAddr, router), address }
func main() { cf_lager.AddFlags(flag.CommandLine) flag.Parse() if *repGuid == "" { panic("need rep-guid") } if *httpAddr == "" { panic("need http addr") } simulationRep := simulationrep.New(*stack, *zone, rep.Resources{ MemoryMB: int32(*memoryMB), DiskMB: int32(*diskMB), Containers: *containers, }) logger, _ := cf_lager.New("repnode-http") fakeLRPStopper := new(fake_lrp_stopper.FakeLRPStopper) fakeExecutorClient := new(executorfakes.FakeClient) fakeEvacuatable := new(fake_evacuation_context.FakeEvacuatable) handlers := rephandlers.New(simulationRep, fakeLRPStopper, fakeExecutorClient, fakeEvacuatable, logger.Session(*repGuid)) router, err := rata.NewRouter(rep.Routes, handlers) if err != nil { log.Fatalln("failed to make router:", err) } httpServer := http_server.New(*httpAddr, router) monitor := ifrit.Invoke(sigmon.New(httpServer)) fmt.Println("rep node listening") err = <-monitor.Wait() if err != nil { println("EXITED WITH ERROR: ", err.Error()) } }
} var _ = BeforeSuite(func() { cfHttpTimeout = 1 * time.Second cf_http.Initialize(cfHttpTimeout) }) var _ = BeforeEach(func() { logger := lagertest.NewTestLogger("test") auctionRep = &repfakes.FakeClient{} fakeLRPStopper = &fake_lrp_stopper.FakeLRPStopper{} fakeExecutorClient = &executorfakes.FakeClient{} fakeEvacuatable = &fake_evacuation_context.FakeEvacuatable{} handler, err := rata.NewRouter(rep.Routes, handlers.New(auctionRep, fakeLRPStopper, fakeExecutorClient, fakeEvacuatable, logger)) Expect(err).NotTo(HaveOccurred()) server = httptest.NewServer(handler) client = rep.NewClient(&http.Client{}, server.URL) serverThatErrors = ghttp.NewServer() erroringHandler := http.HandlerFunc(func(http.ResponseWriter, *http.Request) { serverThatErrors.CloseClientConnections() }) //5 erroringHandlers should be more than enough: none of the individual tests should make more than 5 requests to this server serverThatErrors.AppendHandlers(erroringHandler, erroringHandler, erroringHandler, erroringHandler, erroringHandler) clientForServerThatErrors = rep.NewClient(&http.Client{}, serverThatErrors.URL()) })
RunSpecs(t, "AuctionHttpHandlers Suite") } var server *httptest.Server var requestGenerator *rata.RequestGenerator var client *http.Client var fakeLocalRep *repfakes.FakeSimClient var repGuid string var _ = BeforeEach(func() { logger := lagertest.NewTestLogger("handlers") fakeLocalRep = new(repfakes.FakeSimClient) fakeExecutorClient := new(executorfakes.FakeClient) fakeEvacuatable := new(fake_evacuation_context.FakeEvacuatable) handler, err := rata.NewRouter(rep.Routes, handlers.New(fakeLocalRep, fakeExecutorClient, fakeEvacuatable, logger)) Expect(err).NotTo(HaveOccurred()) server = httptest.NewServer(handler) requestGenerator = rata.NewRequestGenerator(server.URL, rep.Routes) client = &http.Client{} }) var _ = AfterEach(func() { server.Close() }) func JSONFor(obj interface{}) string { marshalled, err := json.Marshal(obj) ExpectWithOffset(1, err).NotTo(HaveOccurred())