1
0
Fork 0
mirror of https://github.com/documize/community.git synced 2025-07-19 05:09:42 +02:00
documize/core/event/network_bus_test.go
2017-05-01 12:13:05 +01:00

112 lines
2.2 KiB
Go
Executable file

package event
import (
"testing"
)
func TestNewServer(t *testing.T) {
serverBus := NewServer(":2010", "/_server_bus_", New())
serverBus.Start()
if serverBus == nil || !serverBus.service.started {
t.Log("New server EventBus not created!")
t.Fail()
}
serverBus.Stop()
}
func TestNewClient(t *testing.T) {
clientBus := NewClient(":2015", "/_client_bus_", New())
clientBus.Start()
if clientBus == nil || !clientBus.service.started {
t.Log("New client EventBus not created!")
t.Fail()
}
clientBus.Stop()
}
func TestRegister(t *testing.T) {
serverPath := "/_server_bus_"
serverBus := NewServer(":2010", serverPath, New())
args := &SubscribeArg{serverBus.address, serverPath, PublishService, Subscribe, "topic"}
reply := new(bool)
serverBus.service.Register(args, reply)
if serverBus.eventBus.HasCallback("topic_topic") {
t.Fail()
}
if !serverBus.eventBus.HasCallback("topic") {
t.Fail()
}
}
func TestPushEvent(t *testing.T) {
clientBus := NewClient("localhost:2015", "/_client_bus_", New())
eventArgs := make([]interface{}, 1)
eventArgs[0] = 10
clientArg := &ClientArg{eventArgs, "topic"}
reply := new(bool)
fn := func(a int) {
if a != 10 {
t.Fail()
}
}
clientBus.eventBus.Subscribe("topic", fn)
clientBus.service.PushEvent(clientArg, reply)
if !(*reply) {
t.Fail()
}
}
func TestServerPublish(t *testing.T) {
serverBus := NewServer(":2020", "/_server_bus_b", New())
serverBus.Start()
fn := func(a int) {
if a != 10 {
t.Fail()
}
}
clientBus := NewClient(":2025", "/_client_bus_b", New())
clientBus.Start()
clientBus.Subscribe("topic", fn, ":2010", "/_server_bus_b")
serverBus.EventBus().Publish("topic", 10)
clientBus.Stop()
serverBus.Stop()
}
func TestNetworkBus(t *testing.T) {
networkBusA := NewNetworkBus(":2035", "/_net_bus_A")
networkBusA.Start()
networkBusB := NewNetworkBus(":2030", "/_net_bus_B")
networkBusB.Start()
fnA := func(a int) {
if a != 10 {
t.Fail()
}
}
networkBusA.Subscribe("topic-A", fnA, ":2030", "/_net_bus_B")
networkBusB.EventBus().Publish("topic-A", 10)
fnB := func(a int) {
if a != 20 {
t.Fail()
}
}
networkBusB.Subscribe("topic-B", fnB, ":2035", "/_net_bus_A")
networkBusA.EventBus().Publish("topic-B", 20)
networkBusA.Stop()
networkBusB.Stop()
}