github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/rpc/event/network_bus_test.go (about)

     1  package event
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestNewServer(t *testing.T) {
     8  	serverBus := NewServer(":2010", "/_server_bus_", New())
     9  	_ = serverBus.Start()
    10  	if serverBus == nil || !serverBus.service.started {
    11  		t.Log("New server Bus not created!")
    12  		t.Fail()
    13  	} else {
    14  		serverBus.Stop()
    15  	}
    16  }
    17  
    18  func TestNewClient(t *testing.T) {
    19  	clientBus := NewClient(":2015", "/_client_bus_", New())
    20  	_ = clientBus.Start()
    21  	if clientBus == nil || !clientBus.service.started {
    22  		t.Log("New client Bus not created!")
    23  		t.Fail()
    24  	} else {
    25  		clientBus.Stop()
    26  	}
    27  }
    28  
    29  func TestRegister(t *testing.T) {
    30  	serverPath := "/_server_bus_"
    31  	serverBus := NewServer(":2010", serverPath, New())
    32  
    33  	args := &SubscribeArg{serverBus.address, serverPath, PublishService, Subscribe, "topic"}
    34  	reply := new(bool)
    35  
    36  	_ = serverBus.service.Register(args, reply)
    37  
    38  	if serverBus.eventBus.HasCallback("topic_topic") {
    39  		t.Fail()
    40  	}
    41  	if !serverBus.eventBus.HasCallback("topic") {
    42  		t.Fail()
    43  	}
    44  }
    45  
    46  func TestPushEvent(t *testing.T) {
    47  	clientBus := NewClient("localhost:2015", "/_client_bus_", New())
    48  
    49  	eventArgs := make([]interface{}, 1)
    50  	eventArgs[0] = 10
    51  
    52  	clientArg := &ClientArg{eventArgs, "topic"}
    53  	reply := new(bool)
    54  
    55  	fn := func(a int) {
    56  		if a != 10 {
    57  			t.Fail()
    58  		}
    59  	}
    60  
    61  	_ = clientBus.eventBus.Subscribe("topic", fn)
    62  	_ = clientBus.service.PushEvent(clientArg, reply)
    63  	if !(*reply) {
    64  		t.Fail()
    65  	}
    66  }
    67  
    68  func TestServerPublish(t *testing.T) {
    69  	serverBus := NewServer(":2020", "/_server_bus_b", New())
    70  	_ = serverBus.Start()
    71  
    72  	fn := func(a int) {
    73  		if a != 10 {
    74  			t.Fail()
    75  		}
    76  	}
    77  
    78  	clientBus := NewClient(":2025", "/_client_bus_b", New())
    79  	_ = clientBus.Start()
    80  
    81  	clientBus.Subscribe("topic", fn, ":2010", "/_server_bus_b")
    82  
    83  	serverBus.EventBus().Publish("topic", 10)
    84  
    85  	clientBus.Stop()
    86  	serverBus.Stop()
    87  }
    88  
    89  func TestNetworkBus(t *testing.T) {
    90  	networkBusA := NewNetworkBus(":2035", "/_net_bus_A")
    91  	_ = networkBusA.Start()
    92  
    93  	networkBusB := NewNetworkBus(":2030", "/_net_bus_B")
    94  	_ = networkBusB.Start()
    95  
    96  	fnA := func(a int) {
    97  		if a != 10 {
    98  			t.Fail()
    99  		}
   100  	}
   101  	networkBusA.Subscribe("topic-A", fnA, ":2030", "/_net_bus_B")
   102  	networkBusB.EventBus().Publish("topic-A", 10)
   103  
   104  	fnB := func(a int) {
   105  		if a != 20 {
   106  			t.Fail()
   107  		}
   108  	}
   109  	networkBusB.Subscribe("topic-B", fnB, ":2035", "/_net_bus_A")
   110  	networkBusA.EventBus().Publish("topic-B", 20)
   111  
   112  	networkBusA.Stop()
   113  	networkBusB.Stop()
   114  }