dict_topic_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package dict_topic
  2. import (
  3. "testing"
  4. "github.com/google/uuid"
  5. "p78git.ddns.net/svi/gobus/api/netapi"
  6. )
  7. /*
  8. Тест для потокобезопасного словаря топиков.
  9. */
  10. type tester struct {
  11. t *testing.T
  12. dictTopic *DictTopic
  13. }
  14. func TestAny(t *testing.T) {
  15. sf := &tester{
  16. t: t,
  17. }
  18. sf.create()
  19. sf.pub()
  20. sf.sub()
  21. }
  22. // Подписка клиента на топики
  23. func (sf *tester) sub() {
  24. sf.t.Log("sub")
  25. sf.subBad1()
  26. }
  27. // Нет клиента на подписку
  28. func (sf *tester) subBad1() {
  29. sf.t.Log("subBad1")
  30. err := sf.dictTopic.Subscribe(nil)
  31. if err == nil {
  32. sf.t.Fatalf("subBad1(): err==nil")
  33. }
  34. }
  35. // Публикация в топик
  36. func (sf *tester) pub() {
  37. sf.t.Log("pub")
  38. sf.pubBad1()
  39. sf.pubBud2()
  40. sf.pubGood1()
  41. }
  42. func (sf *tester) pubGood1() {
  43. sf.t.Log("pubGood1")
  44. msg := &netapi.TopicMsg{
  45. Source: 0,
  46. Topic: "test_topic",
  47. BinMsg: []byte{},
  48. StrUuid: uuid.New().String(),
  49. }
  50. err := sf.dictTopic.Public(msg)
  51. if err != nil {
  52. sf.t.Fatalf("pubGood1(): err=%v", err)
  53. }
  54. if topic := sf.dictTopic.Get("test_topic"); topic == nil {
  55. sf.t.Fatalf("createGood1(): topic==nil")
  56. }
  57. if len_ := sf.dictTopic.Len(); len_ != 1 {
  58. sf.t.Fatalf("createGood1(): len_(%v)!=1", len_)
  59. }
  60. if size := sf.dictTopic.Size(); size != 34 {
  61. sf.t.Fatalf("createGood1(): size(%v)!=34", size)
  62. }
  63. }
  64. // Нет топика
  65. func (sf *tester) pubBud2() {
  66. sf.t.Log("pubBud2")
  67. msg := &netapi.TopicMsg{
  68. Source: 0,
  69. Topic: "",
  70. BinMsg: []byte{},
  71. StrUuid: "",
  72. }
  73. err := sf.dictTopic.Public(msg)
  74. if err == nil {
  75. sf.t.Fatalf("pubBud2(): err==nil")
  76. }
  77. }
  78. // Нет сообщения для публикации
  79. func (sf *tester) pubBad1() {
  80. sf.t.Log("pubBad1]")
  81. err := sf.dictTopic.Public(nil)
  82. if err == nil {
  83. sf.t.Fatalf("pubBad1(): err==nil")
  84. }
  85. }
  86. func (sf *tester) create() {
  87. sf.t.Log("create")
  88. sf.dictTopic = NewDictTopic()
  89. if sf.dictTopic == nil {
  90. sf.t.Fatalf("create(): dictTopic==nil")
  91. }
  92. }