stats_test.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package store
  2. import (
  3. "math/rand"
  4. "testing"
  5. "time"
  6. )
  7. func TestBasicStats(t *testing.T) {
  8. s := newStore()
  9. keys := GenKeys(rand.Intn(100), 5)
  10. var i uint64
  11. var GetSuccess, GetFail, SetSuccess, SetFail, DeleteSuccess, DeleteFail uint64
  12. var UpdateSuccess, UpdateFail, TestAndSetSuccess, TestAndSetFail, watcher_number uint64
  13. for _, k := range keys {
  14. i++
  15. _, err := s.Create(k, "bar", false, false, time.Now().Add(time.Second*time.Duration(rand.Intn(6))), i, 1)
  16. if err != nil {
  17. SetFail++
  18. } else {
  19. SetSuccess++
  20. }
  21. }
  22. time.Sleep(time.Second * 3)
  23. for _, k := range keys {
  24. _, err := s.Get(k, false, false, i, 1)
  25. if err != nil {
  26. GetFail++
  27. } else {
  28. GetSuccess++
  29. }
  30. }
  31. for _, k := range keys {
  32. i++
  33. _, err := s.update(k, "foo", time.Now().Add(time.Second*time.Duration(rand.Intn(6))), i, 1)
  34. if err != nil {
  35. UpdateFail++
  36. } else {
  37. UpdateSuccess++
  38. }
  39. }
  40. time.Sleep(time.Second * 3)
  41. for _, k := range keys {
  42. _, err := s.Get(k, false, false, i, 1)
  43. if err != nil {
  44. GetFail++
  45. } else {
  46. GetSuccess++
  47. }
  48. }
  49. for _, k := range keys {
  50. i++
  51. _, err := s.CompareAndSwap(k, "foo", 0, "bar", Permanent, i, 1)
  52. if err != nil {
  53. TestAndSetFail++
  54. } else {
  55. TestAndSetSuccess++
  56. }
  57. }
  58. for _, k := range keys {
  59. s.Watch(k, false, 0, i, 1)
  60. watcher_number++
  61. }
  62. for _, k := range keys {
  63. _, err := s.Get(k, false, false, i, 1)
  64. if err != nil {
  65. GetFail++
  66. } else {
  67. GetSuccess++
  68. }
  69. }
  70. for _, k := range keys {
  71. i++
  72. _, err := s.Delete(k, false, i, 1)
  73. if err != nil {
  74. DeleteFail++
  75. } else {
  76. watcher_number--
  77. DeleteSuccess++
  78. }
  79. }
  80. for _, k := range keys {
  81. _, err := s.Get(k, false, false, i, 1)
  82. if err != nil {
  83. GetFail++
  84. } else {
  85. GetSuccess++
  86. }
  87. }
  88. if GetSuccess != s.Stats.GetSuccess {
  89. t.Fatalf("GetSuccess [%d] != Stats.GetSuccess [%d]", GetSuccess, s.Stats.GetSuccess)
  90. }
  91. if GetFail != s.Stats.GetFail {
  92. t.Fatalf("GetFail [%d] != Stats.GetFail [%d]", GetFail, s.Stats.GetFail)
  93. }
  94. if SetSuccess != s.Stats.SetSuccess {
  95. t.Fatalf("SetSuccess [%d] != Stats.SetSuccess [%d]", SetSuccess, s.Stats.SetSuccess)
  96. }
  97. if SetFail != s.Stats.SetFail {
  98. t.Fatalf("SetFail [%d] != Stats.SetFail [%d]", SetFail, s.Stats.SetFail)
  99. }
  100. if DeleteSuccess != s.Stats.DeleteSuccess {
  101. t.Fatalf("DeleteSuccess [%d] != Stats.DeleteSuccess [%d]", DeleteSuccess, s.Stats.DeleteSuccess)
  102. }
  103. if DeleteFail != s.Stats.DeleteFail {
  104. t.Fatalf("DeleteFail [%d] != Stats.DeleteFail [%d]", DeleteFail, s.Stats.DeleteFail)
  105. }
  106. if UpdateSuccess != s.Stats.UpdateSuccess {
  107. t.Fatalf("UpdateSuccess [%d] != Stats.UpdateSuccess [%d]", UpdateSuccess, s.Stats.UpdateSuccess)
  108. }
  109. if UpdateFail != s.Stats.UpdateFail {
  110. t.Fatalf("UpdateFail [%d] != Stats.UpdateFail [%d]", UpdateFail, s.Stats.UpdateFail)
  111. }
  112. if TestAndSetSuccess != s.Stats.TestAndSetSuccess {
  113. t.Fatalf("TestAndSetSuccess [%d] != Stats.TestAndSetSuccess [%d]", TestAndSetSuccess, s.Stats.TestAndSetSuccess)
  114. }
  115. if TestAndSetFail != s.Stats.TestAndSetFail {
  116. t.Fatalf("TestAndSetFail [%d] != Stats.TestAndSetFail [%d]", TestAndSetFail, s.Stats.TestAndSetFail)
  117. }
  118. s = newStore()
  119. SetSuccess = 0
  120. SetFail = 0
  121. for _, k := range keys {
  122. i++
  123. _, err := s.Create(k, "bar", false, false, time.Now().Add(time.Second*3), i, 1)
  124. if err != nil {
  125. SetFail++
  126. } else {
  127. SetSuccess++
  128. }
  129. }
  130. time.Sleep(6 * time.Second)
  131. ExpireCount := SetSuccess
  132. if ExpireCount != s.Stats.ExpireCount {
  133. t.Fatalf("ExpireCount [%d] != Stats.ExpireCount [%d]", ExpireCount, s.Stats.ExpireCount)
  134. }
  135. }