topic_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package topic
  2. import (
  3. "testing"
  4. "github.com/google/uuid"
  5. "p78git.ddns.net/svi/gobus/api/netapi"
  6. "p78git.ddns.net/svi/gobus/pkg/net/client_proxy_buffer"
  7. )
  8. /*
  9. Тест для топика шины данных
  10. */
  11. type tester struct {
  12. t *testing.T
  13. topic *Topic
  14. proxy *client_proxy_buffer.ClientProxyBuffer
  15. }
  16. func TestTopic(t *testing.T) {
  17. sf := &tester{
  18. t: t,
  19. }
  20. sf.create()
  21. sf.sub()
  22. sf.set()
  23. }
  24. // Установка сообщения
  25. func (sf *tester) set() {
  26. sf.t.Log("set")
  27. sf.setBad1()
  28. sf.setGood1()
  29. sf.setGood2()
  30. }
  31. // Клиент больше не работает
  32. func (sf *tester) setGood2() {
  33. sf.t.Log("setGood2")
  34. sf.proxy.ResetWork()
  35. msg := &netapi.TopicMsg{
  36. Source: 0,
  37. Topic: "test_topic",
  38. BinMsg: []byte{},
  39. StrUuid: uuid.New().String(),
  40. }
  41. err := sf.topic.Set(msg)
  42. if err != nil {
  43. sf.t.Fatalf("setGood2(): err=%v", err)
  44. }
  45. sf.topic.Unsubscribe(sf.proxy.ClientName())
  46. }
  47. func (sf *tester) setGood1() {
  48. sf.t.Log("setGood1")
  49. msg := &netapi.TopicMsg{
  50. Source: 0,
  51. Topic: "test_topic",
  52. BinMsg: []byte{},
  53. StrUuid: uuid.New().String(),
  54. }
  55. err := sf.topic.Set(msg)
  56. if err != nil {
  57. sf.t.Fatalf("setGood1(): err=%v", err)
  58. }
  59. }
  60. // Нет сообщения
  61. func (sf *tester) setBad1() {
  62. sf.t.Log("setBad1")
  63. err := sf.topic.Set(nil)
  64. if err == nil {
  65. sf.t.Fatalf("setBad1(): err==nil")
  66. }
  67. }
  68. // Подписка клиента на топик
  69. func (sf *tester) sub() {
  70. sf.t.Log("sub")
  71. sf.subBad1()
  72. sf.subGood1()
  73. }
  74. func (sf *tester) subGood1() {
  75. sf.t.Log("subGood1")
  76. req := &netapi.BuffRequest{
  77. Sample: "",
  78. ClientName: "",
  79. MsgSumSizeLimit: 0,
  80. MsgSaveSecondLimit: 0,
  81. }
  82. var err error
  83. sf.proxy, err = client_proxy_buffer.NewClientProxyBuffer(req)
  84. if err != nil {
  85. sf.t.Fatalf("subGood1(): err=%v", err)
  86. }
  87. err = sf.topic.Subscribe(sf.proxy)
  88. if err != nil {
  89. sf.t.Fatalf("subGood1(): err=%v", err)
  90. }
  91. }
  92. // Нет клиента
  93. func (sf *tester) subBad1() {
  94. sf.t.Log("subBad1")
  95. err := sf.topic.Subscribe(nil)
  96. if err == nil {
  97. sf.t.Fatalf("subBad1(): err==nil")
  98. }
  99. }
  100. // Создание топика
  101. func (sf *tester) create() {
  102. sf.t.Logf("create")
  103. sf.createBad1()
  104. sf.createGood1()
  105. }
  106. func (sf *tester) createGood1() {
  107. sf.t.Logf("createGood1")
  108. msg := &netapi.TopicMsg{
  109. Source: 0,
  110. Topic: "test_topic",
  111. BinMsg: []byte{},
  112. StrUuid: "",
  113. }
  114. var err error
  115. sf.topic, err = NewTopic(msg)
  116. if err != nil {
  117. sf.t.Fatalf("createGood1(): err=%v", err)
  118. }
  119. if sf.topic == nil {
  120. sf.t.Fatalf("createGood1(): topic==nil")
  121. }
  122. if stat := sf.topic.Stat(); stat == nil {
  123. sf.t.Fatalf("createGood1(): stat==nil")
  124. }
  125. if msg1 := sf.topic.Get(); msg1 != msg {
  126. sf.t.Fatalf("createGood1(): msg!=msg1")
  127. }
  128. if name := sf.topic.Name(); name != "test_topic" {
  129. sf.t.Fatalf("createGood1(): name(%q)!='test_Topic'", name)
  130. }
  131. }
  132. // Нет имени топика
  133. func (sf *tester) createBad1() {
  134. sf.t.Logf("createBad1")
  135. topic, err := NewTopic(nil)
  136. if err == nil {
  137. sf.t.Fatalf("createBad1(): err==nil")
  138. }
  139. if topic != nil {
  140. sf.t.Fatalf("createBad1(): topic!=nil")
  141. }
  142. }