func (c *VcapComponent) Register(mbusClient yagnats.ApceraWrapperNATSClient) error { mbusClient.Subscribe("vcap.component.discover", func(msg *nats.Msg) { c.Uptime = c.StartTime.Elapsed() b, e := json.Marshal(c) if e != nil { log.Warnf(e.Error()) return } mbusClient.Publish(msg.Reply, b) }) b, e := json.Marshal(c) if e != nil { log.Error(e.Error()) return e } mbusClient.Publish("vcap.component.announce", b) log.Infof("Component %s registered successfully", c.Type) return nil }
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 *nats.Msg) { response <- msg.Data }) 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