util_test.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package mon
  2. import (
  3. "context"
  4. "errors"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/wuntsong-org/go-zero-plus/core/logx/logtest"
  8. "github.com/wuntsong-org/go-zero-plus/core/timex"
  9. )
  10. func TestFormatAddrs(t *testing.T) {
  11. tests := []struct {
  12. addrs []string
  13. expect string
  14. }{
  15. {
  16. addrs: []string{"a", "b"},
  17. expect: "a,b",
  18. },
  19. {
  20. addrs: []string{"a", "b", "c"},
  21. expect: "a,b,c",
  22. },
  23. {
  24. addrs: []string{},
  25. expect: "",
  26. },
  27. {
  28. addrs: nil,
  29. expect: "",
  30. },
  31. }
  32. for _, test := range tests {
  33. assert.Equal(t, test.expect, FormatAddr(test.addrs))
  34. }
  35. }
  36. func Test_logDuration(t *testing.T) {
  37. buf := logtest.NewCollector(t)
  38. buf.Reset()
  39. logDuration(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil)
  40. assert.Contains(t, buf.String(), "foo")
  41. assert.Contains(t, buf.String(), "bar")
  42. assert.Contains(t, buf.String(), "slow")
  43. buf.Reset()
  44. logDuration(context.Background(), "foo", "bar", timex.Now(), nil)
  45. assert.Contains(t, buf.String(), "foo")
  46. assert.Contains(t, buf.String(), "bar")
  47. buf.Reset()
  48. logDuration(context.Background(), "foo", "bar", timex.Now(), errors.New("bar"))
  49. assert.Contains(t, buf.String(), "foo")
  50. assert.Contains(t, buf.String(), "bar")
  51. assert.Contains(t, buf.String(), "fail")
  52. defer func() {
  53. logMon.Set(true)
  54. logSlowMon.Set(true)
  55. }()
  56. buf.Reset()
  57. DisableInfoLog()
  58. logDuration(context.Background(), "foo", "bar", timex.Now(), nil)
  59. assert.Empty(t, buf.String())
  60. buf.Reset()
  61. logDuration(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil)
  62. assert.Contains(t, buf.String(), "foo")
  63. assert.Contains(t, buf.String(), "bar")
  64. assert.Contains(t, buf.String(), "slow")
  65. buf.Reset()
  66. DisableLog()
  67. logDuration(context.Background(), "foo", "bar", timex.Now(), nil)
  68. assert.Empty(t, buf.String())
  69. buf.Reset()
  70. logDuration(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil)
  71. assert.Empty(t, buf.String())
  72. buf.Reset()
  73. logDuration(context.Background(), "foo", "bar", timex.Now(), errors.New("bar"))
  74. assert.Contains(t, buf.String(), "foo")
  75. assert.Contains(t, buf.String(), "bar")
  76. assert.Contains(t, buf.String(), "fail")
  77. }
  78. func Test_logDurationWithDoc(t *testing.T) {
  79. buf := logtest.NewCollector(t)
  80. buf.Reset()
  81. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil, make(chan int))
  82. assert.Contains(t, buf.String(), "foo")
  83. assert.Contains(t, buf.String(), "bar")
  84. assert.Contains(t, buf.String(), "slow")
  85. buf.Reset()
  86. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil, "{'json': ''}")
  87. assert.Contains(t, buf.String(), "foo")
  88. assert.Contains(t, buf.String(), "bar")
  89. assert.Contains(t, buf.String(), "slow")
  90. assert.Contains(t, buf.String(), "json")
  91. buf.Reset()
  92. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), nil, make(chan int))
  93. assert.Contains(t, buf.String(), "foo")
  94. assert.Contains(t, buf.String(), "bar")
  95. buf.Reset()
  96. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), nil, "{'json': ''}")
  97. assert.Contains(t, buf.String(), "foo")
  98. assert.Contains(t, buf.String(), "bar")
  99. assert.Contains(t, buf.String(), "json")
  100. buf.Reset()
  101. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), errors.New("bar"), make(chan int))
  102. assert.Contains(t, buf.String(), "foo")
  103. assert.Contains(t, buf.String(), "bar")
  104. assert.Contains(t, buf.String(), "fail")
  105. buf.Reset()
  106. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), errors.New("bar"), "{'json': ''}")
  107. assert.Contains(t, buf.String(), "foo")
  108. assert.Contains(t, buf.String(), "bar")
  109. assert.Contains(t, buf.String(), "fail")
  110. assert.Contains(t, buf.String(), "json")
  111. defer func() {
  112. logMon.Set(true)
  113. logSlowMon.Set(true)
  114. }()
  115. buf.Reset()
  116. DisableInfoLog()
  117. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), nil, make(chan int))
  118. assert.Empty(t, buf.String())
  119. buf.Reset()
  120. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), nil, "{'json': ''}")
  121. assert.Empty(t, buf.String())
  122. buf.Reset()
  123. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil, make(chan int))
  124. assert.Contains(t, buf.String(), "foo")
  125. assert.Contains(t, buf.String(), "bar")
  126. assert.Contains(t, buf.String(), "slow")
  127. buf.Reset()
  128. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil, "{'json': ''}")
  129. assert.Contains(t, buf.String(), "foo")
  130. assert.Contains(t, buf.String(), "bar")
  131. assert.Contains(t, buf.String(), "slow")
  132. assert.Contains(t, buf.String(), "json")
  133. buf.Reset()
  134. DisableLog()
  135. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), nil, make(chan int))
  136. assert.Empty(t, buf.String())
  137. buf.Reset()
  138. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), nil, "{'json': ''}")
  139. assert.Empty(t, buf.String())
  140. buf.Reset()
  141. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil, make(chan int))
  142. assert.Empty(t, buf.String())
  143. buf.Reset()
  144. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now()-slowThreshold.Load()*2, nil, "{'json': ''}")
  145. assert.Empty(t, buf.String())
  146. buf.Reset()
  147. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), errors.New("bar"), make(chan int))
  148. assert.Contains(t, buf.String(), "foo")
  149. assert.Contains(t, buf.String(), "bar")
  150. assert.Contains(t, buf.String(), "fail")
  151. buf.Reset()
  152. logDurationWithDocs(context.Background(), "foo", "bar", timex.Now(), errors.New("bar"), "{'json': ''}")
  153. assert.Contains(t, buf.String(), "foo")
  154. assert.Contains(t, buf.String(), "bar")
  155. assert.Contains(t, buf.String(), "fail")
  156. assert.Contains(t, buf.String(), "json")
  157. }