|
|
@@ -5,6 +5,7 @@ import (
|
|
|
|
|
|
"github.com/google/uuid"
|
|
|
"p78git.ddns.net/svi/gobus/api/netapi"
|
|
|
+ "p78git.ddns.net/svi/gobus/pkg/net/client_proxy_buffer"
|
|
|
)
|
|
|
|
|
|
/*
|
|
|
@@ -23,12 +24,107 @@ func TestAny(t *testing.T) {
|
|
|
sf.create()
|
|
|
sf.pub()
|
|
|
sf.sub()
|
|
|
+ sf.unsub()
|
|
|
+}
|
|
|
+
|
|
|
+// Отписка прокси-клиента от топика
|
|
|
+func (sf *tester) unsub() {
|
|
|
+ sf.t.Log("unsub")
|
|
|
+ sf.unsubBad1()
|
|
|
+ sf.unsubGood1()
|
|
|
+}
|
|
|
+
|
|
|
+// Нет такого клиента
|
|
|
+func (sf *tester) unsubGood1() {
|
|
|
+ sf.t.Log("unsubGood1")
|
|
|
+ req := &netapi.BuffRequest{
|
|
|
+ Sample: "t1",
|
|
|
+ ClientName: "est",
|
|
|
+ MsgSumSizeLimit: 100_000,
|
|
|
+ MsgSaveSecondLimit: 60,
|
|
|
+ }
|
|
|
+ proxy, err := client_proxy_buffer.NewClientProxyBuffer(req)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("unsubGood1(): err=%v", err)
|
|
|
+ }
|
|
|
+ err = sf.dictTopic.Unsubscribe(proxy)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("unsubGood1(): err=%v", err)
|
|
|
+ }
|
|
|
+ { // Подписка (не должно быть совпадений)
|
|
|
+ err := sf.dictTopic.Subscribe(proxy)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("unsubGood1(): err=%v", err)
|
|
|
+ }
|
|
|
+ if topic := sf.dictTopic.Get("test_topic2"); topic == nil {
|
|
|
+ sf.t.Fatalf("unsubGood1(): topic==nil")
|
|
|
+ }
|
|
|
+ if len_ := sf.dictTopic.Len(); len_ != 2 {
|
|
|
+ sf.t.Fatalf("unsubGood1(): len_(%v)!=1", len_)
|
|
|
+ }
|
|
|
+ if size := sf.dictTopic.Size(); size != 69 {
|
|
|
+ sf.t.Fatalf("unsubGood1(): size(%v)!=69", size)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Нет прокси для отписки
|
|
|
+func (sf *tester) unsubBad1() {
|
|
|
+ sf.t.Log("unsubBad1")
|
|
|
+ err := sf.dictTopic.Unsubscribe(nil)
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("unsubBad1(): err==nil")
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Подписка клиента на топики
|
|
|
func (sf *tester) sub() {
|
|
|
sf.t.Log("sub")
|
|
|
sf.subBad1()
|
|
|
+ sf.subGood1()
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *tester) subGood1() {
|
|
|
+ sf.t.Log("subGood1")
|
|
|
+ req := &netapi.BuffRequest{
|
|
|
+ Sample: "est",
|
|
|
+ ClientName: "test_client",
|
|
|
+ MsgSumSizeLimit: 100_000,
|
|
|
+ MsgSaveSecondLimit: 60,
|
|
|
+ }
|
|
|
+ proxy, err := client_proxy_buffer.NewClientProxyBuffer(req)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("subGood1(): err=%v", err)
|
|
|
+ }
|
|
|
+ err = sf.dictTopic.Subscribe(proxy)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("subGood1(): err=%v", err)
|
|
|
+ }
|
|
|
+ err = sf.dictTopic.Subscribe(proxy)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("subGood1(): err=%v", err)
|
|
|
+ }
|
|
|
+ { // Публикация
|
|
|
+ msg := &netapi.TopicMsg{
|
|
|
+ Source: 0,
|
|
|
+ Topic: "test_topic2",
|
|
|
+ BinMsg: []byte{},
|
|
|
+ StrUuid: uuid.New().String(),
|
|
|
+ }
|
|
|
+ err := sf.dictTopic.Public(msg)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("subGood1(): err=%v", err)
|
|
|
+ }
|
|
|
+ if topic := sf.dictTopic.Get("test_topic2"); topic == nil {
|
|
|
+ sf.t.Fatalf("subGood1(): topic==nil")
|
|
|
+ }
|
|
|
+ if len_ := sf.dictTopic.Len(); len_ != 2 {
|
|
|
+ sf.t.Fatalf("subGood1(): len_(%v)!=1", len_)
|
|
|
+ }
|
|
|
+ if size := sf.dictTopic.Size(); size != 69 {
|
|
|
+ sf.t.Fatalf("subGood1(): size(%v)!=69", size)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Нет клиента на подписку
|