func Test_Reception_Of_One_ToWork_Message(t *testing.T) {
	// given the listener
	c := messaging.NewListenerConfig()
	c.LookupAddr = []string{"127.0.0.1:24161"}
	l := messaging.NewListener(c)
	defer l.Stop()
	// broker initialization
	b := broker.NewBroker()
	b.BrokerPort = "24150"
	b.BrokerHttpPort = "24151"
	b.LookUpTcpPort = "24160"
	b.LookUpHttpPort = "24161"
	b.Start()
	defer b.Stop()
	// test message creation
	mess := message.ToWork{int64(1), message.TEST, "myPkg", "go1.6", "https://github.com/vil-coyote-acme/toto-example.git"}
	body, _ := json.Marshal(mess)
	// message sending
	config := nsq.NewConfig()
	p, _ := nsq.NewProducer("127.0.0.1:24150", config)
	p.Publish(c.Topic, body)
	// when
	incomingChan := l.Start()
	// then
	assert.Equal(t, message.ToWork{int64(1), message.TEST, "myPkg", "go1.6", "https://github.com/vil-coyote-acme/toto-example.git"}, <-incomingChan)
}
示例#2
0
// start listening for toWork
// will start an embeded broker, a report producer and a toWork listener
func startListening() {
	// first start the broker
	logger.Info("Starting listening for jobs")
	embeddedBroker = broker.NewBroker()
	embeddedBroker.BrokerAddr = brokerAddr
	embeddedBroker.BrokerPort = brokerPort
	embeddedBroker.StartBroker()

	// start the report producer
	logger.Info("Starting the report producer")
	reportChan = make(chan message.Report, 20)
	producerConf := messaging.NewProducerConfig()
	producerConf.NsqAddr = brokerAddr + ":" + brokerPort
	producer := messaging.NewProducer(producerConf)
	producer.Start(reportChan)

	// start the work listener
	logger.Info("Starting the work listener")
	listenerConf := messaging.NewListenerConfig()
	listenerConf.LookupAddr = []string{nsqLookUpHost + ":" + nsqLookUpPort}
	listener = messaging.NewListener(listenerConf)
	// must create the topic BEFORE listing on it
	sayHello(listenerConf.Topic)
	toWorkChan = listener.Start()

	// and then start executing incoming job
	logger.Info("Starting execution incoming Jobs")
	build.ExecuteJob(toWorkChan, reportChan)

	logger.Info("Agent setup done")
}