diff options
Diffstat (limited to 'plugins/broadcast/old/redis_test.go')
-rw-r--r-- | plugins/broadcast/old/redis_test.go | 98 |
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, "")) +} |