stats_test.go 3.6 KB

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