summaryrefslogtreecommitdiff
path: root/plugins/broadcast/memory/memory_test.go
diff options
context:
space:
mode:
authorValery Piashchynski <[email protected]>2021-05-03 22:52:30 +0300
committerValery Piashchynski <[email protected]>2021-05-03 22:52:30 +0300
commit9ee78f937d5be67058882dd3590f89da35bca239 (patch)
tree17cda27feabf5f2b8afc6a2796117835045afd36 /plugins/broadcast/memory/memory_test.go
parent009b7009885d8a15e6fa6c7e78436087b2f20129 (diff)
- Initial broadcast commit
Signed-off-by: Valery Piashchynski <[email protected]>
Diffstat (limited to 'plugins/broadcast/memory/memory_test.go')
-rw-r--r--plugins/broadcast/memory/memory_test.go80
1 files changed, 80 insertions, 0 deletions
diff --git a/plugins/broadcast/memory/memory_test.go b/plugins/broadcast/memory/memory_test.go
new file mode 100644
index 00000000..0eb8d03e
--- /dev/null
+++ b/plugins/broadcast/memory/memory_test.go
@@ -0,0 +1,80 @@
+package memory
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestMemory_Broadcast(t *testing.T) {
+ br, _, c := setup(`{}`)
+ 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 TestMemory_BroadcastPattern(t *testing.T) {
+ br, _, c := setup(`{}`)
+ 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, client.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 TestMemory_NotActive(t *testing.T) {
+ b := memoryBroker()
+ 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, ""))
+}