func Register(c *VcapComponent, mbusClient *yagnats.Client) { mbusClient.Subscribe("vcap.component.discover", func(msg *yagnats.Message) { Component.Uptime = Component.Start.Elapsed() b, e := json.Marshal(Component) if e != nil { log.Warnf(e.Error()) return } mbusClient.Publish(msg.ReplyTo, b) }) b, e := json.Marshal(Component) if e != nil { log.Fatal(e.Error()) panic("Component's information should be correct") } mbusClient.Publish("vcap.component.announce", b) log.Infof("Component %s registered successfully", Component.Type) }
AfterEach(func() { if natsRunner != nil { natsRunner.Stop() } if router != nil { router.Stop() } }) Context("NATS", func() { It("RouterGreets", func() { response := make(chan []byte) mbusClient.Subscribe("router.greet.test.response", func(msg *yagnats.Message) { response <- msg.Payload }) mbusClient.PublishWithReplyTo("router.greet", "router.greet.test.response", []byte{}) var msg []byte Eventually(response, 1).Should(Receive(&msg)) Ω(string(msg)).To(MatchRegexp(".*\"minimumRegisterIntervalInSeconds\":5.*")) }) It("discovers", func() { // Test if router responses to discover message sig := make(chan vcap.VcapComponent) // Since the form of uptime is xxd:xxh:xxm:xxs, we should make // sure that router has run at least for one second