func (cmd *WorkerCommand) beaconRunner(logger lager.Logger, worker atc.Worker) ifrit.Runner { beacon := Beacon{ Logger: logger, Config: cmd.TSA, } var beaconRunner ifrit.RunFunc if cmd.PeerIP != "" { worker.GardenAddr = fmt.Sprintf("%s:%d", cmd.PeerIP, cmd.BindPort) worker.BaggageclaimURL = fmt.Sprintf("http://%s:%d", cmd.PeerIP, cmd.Baggageclaim.BindPort) beaconRunner = beacon.Register } else { worker.GardenAddr = fmt.Sprintf("%s:%d", cmd.BindIP, cmd.BindPort) worker.BaggageclaimURL = fmt.Sprintf("http://%s:%d", cmd.Baggageclaim.BindIP, cmd.Baggageclaim.BindPort) beaconRunner = beacon.Forward } beacon.Worker = worker return restart.Restarter{ Runner: beaconRunner, Load: func(prevRunner ifrit.Runner, prevErr error) ifrit.Runner { if _, ok := prevErr.(*ssh.ExitError); !ok { logger.Error("restarting", prevErr) time.Sleep(5 * time.Second) return beaconRunner } return nil }, } }
It("returns 400", func() { Expect(response.StatusCode).To(Equal(http.StatusBadRequest)) }) It("returns the validation error in the response body", func() { Expect(ioutil.ReadAll(response.Body)).To(Equal([]byte("malformed ttl"))) }) It("does not save it", func() { Expect(workerDB.SaveWorkerCallCount()).To(BeZero()) }) }) Context("when the worker has no address", func() { BeforeEach(func() { worker.GardenAddr = "" }) It("returns 400", func() { Expect(response.StatusCode).To(Equal(http.StatusBadRequest)) }) It("returns the validation error in the response body", func() { Expect(ioutil.ReadAll(response.Body)).To(Equal([]byte("missing address"))) }) It("does not save it", func() { Expect(workerDB.SaveWorkerCallCount()).To(BeZero()) }) }) })