stats_test.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. package fileSystem
  2. import (
  3. "math/rand"
  4. "testing"
  5. "time"
  6. //"fmt"
  7. )
  8. func TestBasicStats(t *testing.T) {
  9. fs := New()
  10. keys := GenKeys(rand.Intn(100), 5)
  11. i := uint64(0)
  12. GetsHit := uint64(0)
  13. GetsMiss := uint64(0)
  14. SetsHit := uint64(0)
  15. SetsMiss := uint64(0)
  16. DeletesHit := uint64(0)
  17. DeletesMiss := uint64(0)
  18. UpdatesHit := uint64(0)
  19. UpdatesMiss := uint64(0)
  20. TestAndSetsHit := uint64(0)
  21. TestAndSetsMiss := uint64(0)
  22. WatchHit := uint64(0)
  23. WatchMiss := uint64(0)
  24. InWatchingNum := uint64(0)
  25. SaveHit := uint64(0)
  26. SaveMiss := uint64(0)
  27. RecoveryHit := uint64(0)
  28. RecoveryMiss := uint64(0)
  29. for _, k := range keys {
  30. i++
  31. _, err := fs.Create(k, "bar", time.Now().Add(time.Second*time.Duration(rand.Intn(10))), i, 1)
  32. if err != nil {
  33. SetsMiss++
  34. } else {
  35. SetsHit++
  36. }
  37. }
  38. for _, k := range keys {
  39. _, err := fs.Get(k, false, false, i, 1)
  40. if err != nil {
  41. GetsMiss++
  42. } else {
  43. GetsHit++
  44. }
  45. }
  46. for _, k := range keys {
  47. i++
  48. _, err := fs.Update(k, "foo", time.Now().Add(time.Second*time.Duration(rand.Intn(5))), i, 1)
  49. if err != nil {
  50. UpdatesMiss++
  51. } else {
  52. UpdatesHit++
  53. }
  54. }
  55. for _, k := range keys {
  56. _, err := fs.Get(k, false, false, i, 1)
  57. if err != nil {
  58. GetsMiss++
  59. } else {
  60. GetsHit++
  61. }
  62. }
  63. for _, k := range keys {
  64. i++
  65. _, err := fs.TestAndSet(k, "foo", 0, "bar", Permanent, i, 1)
  66. if err != nil {
  67. TestAndSetsMiss++
  68. } else {
  69. TestAndSetsHit++
  70. }
  71. }
  72. //fmt.Printf("#TestAndSet [%d]\n", TestAndSetsHit)
  73. for _, k := range keys {
  74. _, err := fs.Watch(k, false, 0, i, 1)
  75. if err != nil {
  76. WatchMiss++
  77. } else {
  78. WatchHit++
  79. InWatchingNum++
  80. }
  81. }
  82. //fmt.Printf("#Watch [%d]\n", WatchHit)
  83. for _, k := range keys {
  84. _, err := fs.Get(k, false, false, i, 1)
  85. if err != nil {
  86. GetsMiss++
  87. } else {
  88. GetsHit++
  89. }
  90. }
  91. //fmt.Println("fs.index ", fs.Index)
  92. for j := 0; j < 5; j++ {
  93. b := make([]byte, 10)
  94. err := fs.Recovery(b)
  95. if err != nil {
  96. RecoveryMiss++
  97. }
  98. b, err = fs.Save()
  99. if err != nil {
  100. SaveMiss++
  101. } else {
  102. SaveHit++
  103. }
  104. err = fs.Recovery(b)
  105. if err != nil {
  106. RecoveryMiss++
  107. } else {
  108. RecoveryHit++
  109. }
  110. }
  111. //fmt.Println("fs.index after ", fs.Index)
  112. //fmt.Println("stats.inwatching ", fs.Stats.InWatchingNum)
  113. for _, k := range keys {
  114. i++
  115. _, err := fs.Delete(k, false, i, 1)
  116. if err != nil {
  117. DeletesMiss++
  118. } else {
  119. InWatchingNum--
  120. DeletesHit++
  121. }
  122. }
  123. //fmt.Printf("#Delete [%d] stats.deletehit [%d] \n", DeletesHit, fs.Stats.DeletesHit)
  124. for _, k := range keys {
  125. _, err := fs.Get(k, false, false, i, 1)
  126. if err != nil {
  127. GetsMiss++
  128. } else {
  129. GetsHit++
  130. }
  131. }
  132. if GetsHit != fs.Stats.GetsHit {
  133. t.Fatalf("GetsHit [%d] != Stats.GetsHit [%d]", GetsHit, fs.Stats.GetsHit)
  134. }
  135. if GetsMiss != fs.Stats.GetsMiss {
  136. t.Fatalf("GetsMiss [%d] != Stats.GetsMiss [%d]", GetsMiss, fs.Stats.GetsMiss)
  137. }
  138. if SetsHit != fs.Stats.SetsHit {
  139. t.Fatalf("SetsHit [%d] != Stats.SetsHit [%d]", SetsHit, fs.Stats.SetsHit)
  140. }
  141. if SetsMiss != fs.Stats.SetsMiss {
  142. t.Fatalf("SetsMiss [%d] != Stats.SetsMiss [%d]", SetsMiss, fs.Stats.SetsMiss)
  143. }
  144. if DeletesHit != fs.Stats.DeletesHit {
  145. t.Fatalf("DeletesHit [%d] != Stats.DeletesHit [%d]", DeletesHit, fs.Stats.DeletesHit)
  146. }
  147. if DeletesMiss != fs.Stats.DeletesMiss {
  148. t.Fatalf("DeletesMiss [%d] != Stats.DeletesMiss [%d]", DeletesMiss, fs.Stats.DeletesMiss)
  149. }
  150. if UpdatesHit != fs.Stats.UpdatesHit {
  151. t.Fatalf("UpdatesHit [%d] != Stats.UpdatesHit [%d]", UpdatesHit, fs.Stats.UpdatesHit)
  152. }
  153. if UpdatesMiss != fs.Stats.UpdatesMiss {
  154. t.Fatalf("UpdatesMiss [%d] != Stats.UpdatesMiss [%d]", UpdatesMiss, fs.Stats.UpdatesMiss)
  155. }
  156. if TestAndSetsHit != fs.Stats.TestAndSetsHit {
  157. t.Fatalf("TestAndSetsHit [%d] != Stats.TestAndSetsHit [%d]", TestAndSetsHit, fs.Stats.TestAndSetsHit)
  158. }
  159. if TestAndSetsMiss != fs.Stats.TestAndSetsMiss {
  160. t.Fatalf("TestAndSetsMiss [%d] != Stats.TestAndSetsMiss [%d]", TestAndSetsMiss, fs.Stats.TestAndSetsMiss)
  161. }
  162. if SaveHit != fs.Stats.SaveHit {
  163. t.Fatalf("SaveHit [%d] != Stats.SaveHit [%d]", SaveHit, fs.Stats.SaveHit)
  164. }
  165. if SaveMiss != fs.Stats.SaveMiss {
  166. t.Fatalf("SaveMiss [%d] != Stats.SaveMiss [%d]", SaveMiss, fs.Stats.SaveMiss)
  167. }
  168. if WatchHit != fs.Stats.WatchHit {
  169. t.Fatalf("WatchHit [%d] != Stats.WatchHit [%d]", WatchHit, fs.Stats.WatchHit)
  170. }
  171. if WatchMiss != fs.Stats.WatchMiss {
  172. t.Fatalf("WatchMiss [%d] != Stats.WatchMiss [%d]", WatchMiss, fs.Stats.WatchMiss)
  173. }
  174. if InWatchingNum != fs.Stats.InWatchingNum {
  175. t.Fatalf("InWatchingNum [%d] != Stats.InWatchingNum [%d]", InWatchingNum, fs.Stats.InWatchingNum)
  176. }
  177. if RecoveryHit != fs.Stats.RecoveryHit {
  178. t.Fatalf("RecoveryHit [%d] != Stats.RecoveryHit [%d]", RecoveryHit, fs.Stats.RecoveryHit)
  179. }
  180. if RecoveryMiss != fs.Stats.RecoveryMiss {
  181. t.Fatalf("RecoveryMiss [%d] != Stats.RecoveryMiss [%d]", RecoveryMiss, fs.Stats.RecoveryMiss)
  182. }
  183. //fmt.Println(GetsHit, GetsMiss, SetsHit, SetsMiss, DeletesHit, DeletesMiss, UpdatesHit, UpdatesMiss, TestAndSetsHit, TestAndSetsMiss, WatchHit, WatchMiss, InWatchingNum, SaveHit, SaveMiss, RecoveryHit, RecoveryMiss)
  184. }