1
0
mirror of https://github.com/eventials/goevents.git synced 2025-04-26 13:48:59 +08:00
eventials.goevents/amqp/producer_test.go

104 lines
2.0 KiB
Go
Raw Normal View History

2017-06-15 10:05:00 -03:00
package amqp
import (
"testing"
"time"
2017-10-05 15:19:54 -03:00
"github.com/eventials/goevents/messaging"
2017-06-15 10:05:00 -03:00
"github.com/stretchr/testify/assert"
)
func TestPublish(t *testing.T) {
timesCalled := 0
conn, err := NewConnection("amqp://guest:guest@broker:5672/")
2018-02-10 14:38:29 -02:00
if assert.Nil(t, err) {
defer conn.Close()
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
channel, err := conn.openChannel()
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
if assert.Nil(t, err) {
defer channel.Close()
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
c, err := NewConsumer(conn, false, "webhooks", "TestPublish")
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
if assert.Nil(t, err) {
defer c.Close()
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
// Clean all messages if any...
channel.QueuePurge(c.queueName, false)
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
c.Subscribe("action.name", func(e messaging.Event) error {
defer func() { timesCalled++ }()
return nil
}, nil)
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
go c.Consume()
2017-06-15 10:05:00 -03:00
2018-02-12 10:08:18 -02:00
// take a time to setup topology
time.Sleep(SleepSetupTopology)
2018-02-10 14:38:29 -02:00
p, err := NewProducer(conn, "webhooks")
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
if assert.Nil(t, err) {
p.Publish("action.name", []byte(""))
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
select {
case <-time.After(1 * time.Second):
assert.Equal(t, 1, timesCalled, "Message wasn't published.")
}
}
}
}
2017-06-15 10:05:00 -03:00
}
}
func TestPublishMultipleTimes(t *testing.T) {
timesCalled := 0
conn, err := NewConnection("amqp://guest:guest@broker:5672/")
2018-02-10 14:38:29 -02:00
if assert.Nil(t, err) {
defer conn.Close()
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
channel, err := conn.openChannel()
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
if assert.Nil(t, err) {
defer channel.Close()
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
c, err := NewConsumer(conn, false, "webhooks", "TestPublishMultipleTimes")
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
if assert.Nil(t, err) {
defer c.Close()
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
// Clean all messages if any...
channel.QueuePurge(c.queueName, false)
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
c.Subscribe("action.name", func(e messaging.Event) error {
defer func() { timesCalled++ }()
return nil
}, nil)
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
go c.Consume()
2017-06-15 10:05:00 -03:00
2018-02-12 10:08:18 -02:00
// take a time to setup topology
time.Sleep(SleepSetupTopology)
2018-02-10 14:38:29 -02:00
p, err := NewProducer(conn, "webhooks")
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
if assert.Nil(t, err) {
for i := 0; i < 5; i++ {
p.Publish("action.name", []byte(""))
}
2017-06-15 10:05:00 -03:00
2018-02-10 14:38:29 -02:00
select {
case <-time.After(1 * time.Second):
assert.Equal(t, 5, timesCalled, "One or more messages weren't published.")
}
}
}
}
2017-06-15 10:05:00 -03:00
}
}