diff options
author | Valery Piashchynski <[email protected]> | 2021-05-05 16:39:22 +0300 |
---|---|---|
committer | Valery Piashchynski <[email protected]> | 2021-05-05 16:39:22 +0300 |
commit | 4fa94bb7f73a705293c2afd40fc1151a3aaa04e2 (patch) | |
tree | 6ffd858cade87600bbd4432f70db22f50c598db0 /plugins/broadcast/old/redis_test.go | |
parent | 9ee78f937d5be67058882dd3590f89da35bca239 (diff) |
- Initial broadcast commit
Signed-off-by: Valery Piashchynski <[email protected]>
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, "")) +} |