|
|
@@ -1,9 +1,14 @@
|
|
|
package dict_topic
|
|
|
|
|
|
-import "testing"
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ "github.com/google/uuid"
|
|
|
+ "p78git.ddns.net/svi/gobus/api/netapi"
|
|
|
+)
|
|
|
|
|
|
/*
|
|
|
- Тест для ...
|
|
|
+ Тест для потокобезопасного словаря топиков.
|
|
|
*/
|
|
|
|
|
|
type tester struct {
|
|
|
@@ -16,6 +21,78 @@ func TestAny(t *testing.T) {
|
|
|
t: t,
|
|
|
}
|
|
|
sf.create()
|
|
|
+ sf.pub()
|
|
|
+ sf.sub()
|
|
|
+}
|
|
|
+
|
|
|
+// Подписка клиента на топики
|
|
|
+func (sf *tester) sub() {
|
|
|
+ sf.t.Log("sub")
|
|
|
+ sf.subBad1()
|
|
|
+}
|
|
|
+
|
|
|
+// Нет клиента на подписку
|
|
|
+func (sf *tester) subBad1() {
|
|
|
+ sf.t.Log("subBad1")
|
|
|
+ err := sf.dictTopic.Subscribe(nil)
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("subBad1(): err==nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Публикация в топик
|
|
|
+func (sf *tester) pub() {
|
|
|
+ sf.t.Log("pub")
|
|
|
+ sf.pubBad1()
|
|
|
+ sf.pubBud2()
|
|
|
+ sf.pubGood1()
|
|
|
+}
|
|
|
+
|
|
|
+func (sf *tester) pubGood1() {
|
|
|
+ sf.t.Log("pubGood1")
|
|
|
+ msg := &netapi.TopicMsg{
|
|
|
+ Source: 0,
|
|
|
+ Topic: "test_topic",
|
|
|
+ BinMsg: []byte{},
|
|
|
+ StrUuid: uuid.New().String(),
|
|
|
+ }
|
|
|
+ err := sf.dictTopic.Public(msg)
|
|
|
+ if err != nil {
|
|
|
+ sf.t.Fatalf("pubGood1(): err=%v", err)
|
|
|
+ }
|
|
|
+ if topic := sf.dictTopic.Get("test_topic"); topic == nil {
|
|
|
+ sf.t.Fatalf("createGood1(): topic==nil")
|
|
|
+ }
|
|
|
+ if len_ := sf.dictTopic.Len(); len_ != 1 {
|
|
|
+ sf.t.Fatalf("createGood1(): len_(%v)!=1", len_)
|
|
|
+ }
|
|
|
+ if size := sf.dictTopic.Size(); size != 34 {
|
|
|
+ sf.t.Fatalf("createGood1(): size(%v)!=34", size)
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Нет топика
|
|
|
+func (sf *tester) pubBud2() {
|
|
|
+ sf.t.Log("pubBud2")
|
|
|
+ msg := &netapi.TopicMsg{
|
|
|
+ Source: 0,
|
|
|
+ Topic: "",
|
|
|
+ BinMsg: []byte{},
|
|
|
+ StrUuid: "",
|
|
|
+ }
|
|
|
+ err := sf.dictTopic.Public(msg)
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("pubBud2(): err==nil")
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Нет сообщения для публикации
|
|
|
+func (sf *tester) pubBad1() {
|
|
|
+ sf.t.Log("pubBad1]")
|
|
|
+ err := sf.dictTopic.Public(nil)
|
|
|
+ if err == nil {
|
|
|
+ sf.t.Fatalf("pubBad1(): err==nil")
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
func (sf *tester) create() {
|