func main() { cf_debug_server.AddFlags(flag.CommandLine) cf_lager.AddFlags(flag.CommandLine) flag.Parse() logger, reconfigurableSink := cf_lager.New("tps-watcher") initializeDropsonde(logger) lockMaintainer := initializeLockMaintainer(logger) ccClient := cc_client.NewCcClient(*ccBaseURL, *ccUsername, *ccPassword, *skipCertVerify) watcher := ifrit.RunFunc(func(signals <-chan os.Signal, ready chan<- struct{}) error { w, err := watcher.NewWatcher(logger, *eventHandlingWorkers, initializeBBSClient(logger), ccClient) if err != nil { return err } return w.Run(signals, ready) }) members := grouper.Members{ {"lock-maintainer", lockMaintainer}, {"watcher", watcher}, } 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) monitor := ifrit.Invoke(sigmon.New(group)) logger.Info("started") err := <-monitor.Wait() if err != nil { logger.Error("exited-with-failure", err) os.Exit(1) } logger.Info("exited") }
logger *lagertest.TestLogger nextErr atomic.Value nextEvent atomic.Value ) BeforeEach(func() { eventSource = new(eventfakes.FakeEventSource) bbsClient = new(fake_bbs.FakeClient) bbsClient.SubscribeToEventsReturns(eventSource, nil) logger = lagertest.NewTestLogger("test") ccClient = new(fakes.FakeCcClient) var err error watcherRunner, err = watcher.NewWatcher(logger, 500, bbsClient, ccClient) Expect(err).NotTo(HaveOccurred()) nextErr = atomic.Value{} nextErr := nextErr nextEvent.Store(nilEventHolder) eventSource.CloseStub = func() error { nextErr.Store(errors.New("closed")) return nil } eventSource.NextStub = func() (models.Event, error) { time.Sleep(10 * time.Millisecond) if eventHolder := nextEvent.Load(); eventHolder != nilEventHolder { nextEvent.Store(nilEventHolder)