|
|
@@ -0,0 +1,38 @@
|
|
|
+package pubsub_test
|
|
|
+
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "github.com/v2ray/v2ray-core/app"
|
|
|
+ . "github.com/v2ray/v2ray-core/app/pubsub"
|
|
|
+ apptesting "github.com/v2ray/v2ray-core/app/testing"
|
|
|
+ v2testing "github.com/v2ray/v2ray-core/testing"
|
|
|
+ "github.com/v2ray/v2ray-core/testing/assert"
|
|
|
+)
|
|
|
+
|
|
|
+func TestPubsub(t *testing.T) {
|
|
|
+ v2testing.Current(t)
|
|
|
+
|
|
|
+ messages := make(map[string]app.PubsubMessage)
|
|
|
+
|
|
|
+ pubsub := New()
|
|
|
+ pubsub.Subscribe(&apptesting.Context{}, "t1", func(message app.PubsubMessage) {
|
|
|
+ messages["t1"] = message
|
|
|
+ })
|
|
|
+
|
|
|
+ pubsub.Subscribe(&apptesting.Context{}, "t2", func(message app.PubsubMessage) {
|
|
|
+ messages["t2"] = message
|
|
|
+ })
|
|
|
+
|
|
|
+ message := app.PubsubMessage([]byte("This is a pubsub message."))
|
|
|
+ pubsub.Publish(&apptesting.Context{}, "t2", message)
|
|
|
+ <-time.Tick(time.Second)
|
|
|
+
|
|
|
+ _, found := messages["t1"]
|
|
|
+ assert.Bool(found).IsFalse()
|
|
|
+
|
|
|
+ actualMessage, found := messages["t2"]
|
|
|
+ assert.Bool(found).IsTrue()
|
|
|
+ assert.StringLiteral(string(actualMessage)).Equals(string(message))
|
|
|
+}
|