package topic import ( "testing" "github.com/google/uuid" "p78git.ddns.net/svi/gobus/api/netapi" "p78git.ddns.net/svi/gobus/pkg/net/client_proxy_buffer" ) /* Тест для топика шины данных */ type tester struct { t *testing.T topic *Topic proxy *client_proxy_buffer.ClientProxyBuffer } func TestTopic(t *testing.T) { sf := &tester{ t: t, } sf.create() sf.sub() sf.set() } // Установка сообщения func (sf *tester) set() { sf.t.Log("set") sf.setBad1() sf.setGood1() sf.setGood2() } // Клиент больше не работает func (sf *tester) setGood2() { sf.t.Log("setGood2") sf.proxy.ResetWork() msg := &netapi.TopicMsg{ Source: 0, Topic: "test_topic", BinMsg: []byte{}, StrUuid: uuid.New().String(), } err := sf.topic.Set(msg) if err != nil { sf.t.Fatalf("setGood2(): err=%v", err) } sf.topic.Unsubscribe(sf.proxy.ClientName()) } func (sf *tester) setGood1() { sf.t.Log("setGood1") msg := &netapi.TopicMsg{ Source: 0, Topic: "test_topic", BinMsg: []byte{}, StrUuid: uuid.New().String(), } err := sf.topic.Set(msg) if err != nil { sf.t.Fatalf("setGood1(): err=%v", err) } } // Нет сообщения func (sf *tester) setBad1() { sf.t.Log("setBad1") err := sf.topic.Set(nil) if err == nil { sf.t.Fatalf("setBad1(): 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: "", ClientName: "test_client", MsgSumSizeLimit: 0, MsgSaveSecondLimit: 0, } var err error sf.proxy, err = client_proxy_buffer.NewClientProxyBuffer(req) if err != nil { sf.t.Fatalf("subGood1(): err=%v", err) } err = sf.topic.Subscribe(sf.proxy) if err != nil { sf.t.Fatalf("subGood1(): err=%v", err) } } // Нет клиента func (sf *tester) subBad1() { sf.t.Log("subBad1") err := sf.topic.Subscribe(nil) if err == nil { sf.t.Fatalf("subBad1(): err==nil") } } // Создание топика func (sf *tester) create() { sf.t.Logf("create") sf.createBad1() sf.createGood1() } func (sf *tester) createGood1() { sf.t.Logf("createGood1") msg := &netapi.TopicMsg{ Source: 0, Topic: "test_topic", BinMsg: []byte{}, StrUuid: "", } var err error sf.topic, err = NewTopic(msg) if err != nil { sf.t.Fatalf("createGood1(): err=%v", err) } if sf.topic == nil { sf.t.Fatalf("createGood1(): topic==nil") } if stat := sf.topic.Stat(); stat == nil { sf.t.Fatalf("createGood1(): stat==nil") } if msg1 := sf.topic.Get(); msg1 != msg { sf.t.Fatalf("createGood1(): msg!=msg1") } if name := sf.topic.Name(); name != "test_topic" { sf.t.Fatalf("createGood1(): name(%q)!='test_Topic'", name) } } // Нет имени топика func (sf *tester) createBad1() { sf.t.Logf("createBad1") topic, err := NewTopic(nil) if err == nil { sf.t.Fatalf("createBad1(): err==nil") } if topic != nil { sf.t.Fatalf("createBad1(): topic!=nil") } }