コード例 #1
0
ファイル: component.go プロジェクト: johannespetzold/gorouter
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
}
コード例 #2
0
	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