summaryrefslogtreecommitdiff
path: root/plugins/broadcast/old/redis_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/broadcast/old/redis_test.go')
-rw-r--r--plugins/broadcast/old/redis_test.go98
1 files changed, 98 insertions, 0 deletions
diff --git a/plugins/broadcast/old/redis_test.go b/plugins/broadcast/old/redis_test.go
new file mode 100644
index 00000000..8148c155
--- /dev/null
+++ b/plugins/broadcast/old/redis_test.go
@@ -0,0 +1,98 @@
+package old
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/sirupsen/logrus"
+ "github.com/sirupsen/logrus/hooks/test"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestRedis_Error(t *testing.T) {
+ logger, _ := test.NewNullLogger()
+ logger.SetLevel(logrus.DebugLevel)
+
+ //c := service.NewContainer(logger)
+ //c.Register(rpc.ID, &rpc.Service{})
+ //c.Register(ID, &Service{})
+ //
+ //err := c.Init(&testCfg{
+ // broadcast: `{"redis":{"addr":"localhost:6372"}}`,
+ // rpc: fmt.Sprintf(`{"join":"tcp://:%v"}`, rpcPort),
+ //})
+
+ rpcPort++
+
+ assert.Error(t, err)
+}
+
+func TestRedis_Broadcast(t *testing.T) {
+ br, _, c := setup(`{"redis":{"addr":"localhost:6379"}}`)
+ defer c.Stop()
+
+ client := br.NewClient()
+ defer client.Close()
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic", "hello1"))) // must not be delivered
+
+ assert.NoError(t, client.Subscribe("topic"))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic", "hello1")))
+ assert.Equal(t, `hello1`, readStr(<-client.Channel()))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic", "hello2")))
+ assert.Equal(t, `hello2`, readStr(<-client.Channel()))
+
+ assert.NoError(t, client.Unsubscribe("topic"))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic", "hello3")))
+
+ assert.NoError(t, client.Subscribe("topic"))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic", "hello4")))
+ assert.Equal(t, `hello4`, readStr(<-client.Channel()))
+}
+
+func TestRedis_BroadcastPattern(t *testing.T) {
+ br, _, c := setup(`{"redis":{"addr":"localhost:6379"}}`)
+ defer c.Stop()
+
+ client := br.NewClient()
+ defer client.Close()
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic", "hello1"))) // must not be delivered
+
+ assert.NoError(t, client.SubscribePattern("topic/*"))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic/1", "hello1")))
+ assert.Equal(t, `hello1`, readStr(<-client.Channel()))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic/2", "hello2")))
+ assert.Equal(t, `hello2`, readStr(<-client.Channel()))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("different", "hello4")))
+ assert.NoError(t, br.Broker().Publish(newMessage("topic/2", "hello5")))
+
+ assert.Equal(t, `hello5`, readStr(<-client.Channel()))
+
+ assert.NoError(t, client.UnsubscribePattern("topic/*"))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic/3", "hello6")))
+
+ assert.NoError(t, client.SubscribePattern("topic/*"))
+
+ assert.NoError(t, br.Broker().Publish(newMessage("topic/4", "hello7")))
+ assert.Equal(t, `hello7`, readStr(<-client.Channel()))
+}
+
+func TestRedis_NotActive(t *testing.T) {
+ b := &Redis{}
+ b.stopped = 1
+
+ assert.Error(t, b.Publish(nil))
+ assert.Error(t, b.Subscribe(nil))
+ assert.Error(t, b.Unsubscribe(nil))
+ assert.Error(t, b.SubscribePattern(nil, ""))
+ assert.Error(t, b.UnsubscribePattern(nil, ""))
+}