func initializeLockMaintainer(logger lager.Logger, serviceClient auctioneer.ServiceClient, port int) ifrit.Runner { uuid, err := uuid.NewV4() if err != nil { logger.Fatal("Couldn't generate uuid", err) } localIP, err := localip.LocalIP() if err != nil { logger.Fatal("Couldn't determine local IP", err) } address := fmt.Sprintf("%s://%s:%d", serverProtocol, localIP, port) auctioneerPresence := auctioneer.NewPresence(uuid.String(), address) lockMaintainer, err := serviceClient.NewAuctioneerLockRunner(logger, auctioneerPresence, *lockRetryInterval, *lockTTL) if err != nil { logger.Fatal("Couldn't create lock maintainer", err) } return lockMaintainer }
BeforeEach(func() { clock = fakeclock.NewFakeClock(time.Now()) logger = lagertest.NewTestLogger("test") consulClient := consulRunner.NewClient() serviceClient = auctioneer.NewServiceClient(consulClient, clock) }) Describe("AuctioneerAddress", func() { Context("when able to get an auctioneer presence", func() { var heartbeater ifrit.Process var presence auctioneer.Presence BeforeEach(func() { presence = auctioneer.NewPresence("auctioneer-id", "auctioneer.example.com") auctioneerLock, err := serviceClient.NewAuctioneerLockRunner(logger, presence, 100*time.Millisecond, 10*time.Second) Expect(err).NotTo(HaveOccurred()) heartbeater = ginkgomon.Invoke(auctioneerLock) }) AfterEach(func() { ginkgomon.Interrupt(heartbeater) }) It("returns the address", func() { address, err := serviceClient.CurrentAuctioneerAddress() Expect(err).NotTo(HaveOccurred()) Expect(address).To(Equal(presence.AuctioneerAddress)) })