func main() { flags := flag.NewFlagSet(os.Args[0], flag.ExitOnError) pidfile := flags.String("pidfile", "", "Path to pid file") scriptPath := flags.String("scriptPath", "./check_node_validity.sh", "Path to script file") cf_lager.AddFlags(flags) serviceConfig := service_config.New() serviceConfig.AddFlags(flags) flags.Set("configPath", "registrar_settings.yml") flags.Parse(os.Args[1:]) logger, _ := cf_lager.New("Route Registrar") logger.Info("Route Registrar started") var registrarConfig config.Config err := serviceConfig.Read(®istrarConfig) if err != nil { logger.Fatal("error parsing file: %s\n", err) } registrar := NewRegistrar(registrarConfig, logger) //add health check handler checker := InitHealthChecker(registrarConfig, logger, *scriptPath) if checker != nil { registrar.AddHealthCheckHandler(checker) } if *pidfile != "" { pid := strconv.Itoa(os.Getpid()) err := ioutil.WriteFile(*pidfile, []byte(pid), 0644) if err != nil { logger.Fatal( "error writing pid to pidfile", err, lager.Data{ "pid": pid, "pidfile": *pidfile}, ) } } registrar.RegisterRoutes() os.Exit(1) }
It("Sends a router.register message and does not send a router.unregister message", func() { // Detect when a router.register message gets sent var registered chan (string) registered = subscribeToRegisterEvents(func(msg *yagnats.Message) { registered <- string(msg.Payload) }) // Detect when an unregister message gets sent var unregistered chan (bool) unregistered = subscribeToUnregisterEvents(func(msg *yagnats.Message) { unregistered <- true }) go func() { registrar := NewRegistrar(config, logger) registrar.RegisterRoutes() }() // Assert that we got the right router.register message var receivedMessage string Eventually(registered, 2).Should(Receive(&receivedMessage)) Expect(receivedMessage).To(Equal(`{"uris":["riakcs.vcap.me"],"host":"127.0.0.1","port":8080}`)) // Assert that we never got a router.unregister message Consistently(unregistered, 2).ShouldNot(Receive()) }) It("Emits a router.unregister message when SIGINT is sent to the registrar's signal channel", func() { verifySignalTriggersUnregister(syscall.SIGINT, logger) })