cellEvents := make(chan models.CellEvent, 100) errs := make(chan error, 100) waitEvents = cellEvents waitErrs = errs fakeBBSServiceClient.CellEventsReturns(cellEvents) }) JustBeforeEach(func() { process = ifrit.Invoke( converger_process.New( fakeBBSServiceClient, fakeBBSClient, logger, fakeClock, convergeRepeatInterval, kickTaskDuration, expirePendingTaskDuration, expireCompletedTaskDuration, ), ) }) AfterEach(func() { ginkgomon.Interrupt(process) Eventually(process.Wait()).Should(Receive()) }) Describe("converging over time", func() { It("converges tasks, LRPs, and auctions when the lock is periodically reestablished", func() { fakeClock.Increment(convergeRepeatInterval + aBit)
func main() { cf_debug_server.AddFlags(flag.CommandLine) cf_lager.AddFlags(flag.CommandLine) flag.Parse() cf_http.Initialize(*communicationTimeout) logger, reconfigurableSink := cf_lager.New("converger") if err := validateBBSAddress(); err != nil { logger.Fatal("invalid-bbs-address", err) } initializeDropsonde(logger) convergeClock := clock.NewClock() consulSession := initializeConsulSession(logger) bbsServiceClient := bbs.NewServiceClient(consulSession, convergeClock) convergerServiceClient := converger.NewServiceClient(consulSession, convergeClock) lockMaintainer := convergerServiceClient.NewConvergerLockRunner( logger, generateGuid(logger), *lockRetryInterval, ) converger := converger_process.New( bbsServiceClient, initializeBBSClient(logger), logger, convergeClock, *convergeRepeatInterval, *kickTaskDuration, *expirePendingTaskDuration, *expireCompletedTaskDuration, ) members := grouper.Members{ {"lock-maintainer", lockMaintainer}, {"converger", converger}, } if dbgAddr := cf_debug_server.DebugAddress(flag.CommandLine); dbgAddr != "" { members = append(grouper.Members{ {"debug-server", cf_debug_server.Runner(dbgAddr, reconfigurableSink)}, }, members...) } group := grouper.NewOrdered(os.Interrupt, members) process := ifrit.Invoke(sigmon.New(group)) logger.Info("started") err := <-process.Wait() if err != nil { logger.Error("exited-with-failure", err) os.Exit(1) } logger.Info("exited") }