cache_test.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. package test
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/core/infrastructure"
  4. "git.sxidc.com/go-framework/baize/framework/core/infrastructure/cache"
  5. "git.sxidc.com/go-framework/baize/framework/core/infrastructure/cache/local"
  6. "git.sxidc.com/go-framework/baize/framework/core/infrastructure/cache/redis"
  7. "git.sxidc.com/go-tools/utils/strutils"
  8. "testing"
  9. "time"
  10. )
  11. func TestLocalCache(t *testing.T) {
  12. localhostCache := local.New("test")
  13. testLocalCache(t, localhostCache)
  14. }
  15. func TestRedisCache(t *testing.T) {
  16. redisCache, err := redis.New("localhost:30379", "", "mtyzxhc", 1, "test")
  17. if err != nil {
  18. t.Fatalf("%+v\n", err)
  19. }
  20. defer func() {
  21. err := redis.Destroy(redisCache)
  22. if err != nil {
  23. t.Fatalf("%+v\n", err)
  24. }
  25. }()
  26. testRedisCache(t, redisCache)
  27. }
  28. func TestCacheInfrastructure(t *testing.T) {
  29. i := infrastructure.NewInfrastructure(infrastructure.Config{
  30. CacheConfig: infrastructure.CacheConfig{
  31. Namespace: "test",
  32. Redis: &infrastructure.RedisConfig{
  33. Address: "localhost:30379",
  34. UserName: "",
  35. Password: "mtyzxhc",
  36. DB: 1,
  37. },
  38. },
  39. })
  40. defer infrastructure.DestroyInfrastructure(i)
  41. testCache(t, i.LocalCache())
  42. testCache(t, i.RedisCache())
  43. }
  44. func testLocalCache(t *testing.T, localCache *local.Cache) {
  45. err := localCache.Set("test1", "test1-value", 0)
  46. if err != nil {
  47. t.Fatalf("%+v\n", err)
  48. }
  49. test1Value, err := localCache.Get("test1")
  50. if err != nil {
  51. t.Fatalf("%+v\n", err)
  52. }
  53. if test1Value != "test1-value" {
  54. t.Fatalf("Value Error: cache %v\n", test1Value)
  55. }
  56. err = localCache.Set("test2", "test2-value", 0)
  57. if err != nil {
  58. t.Fatalf("%+v\n", err)
  59. }
  60. multiValues, err := localCache.GetMulti([]string{"test1", "test2"})
  61. if err != nil {
  62. t.Fatalf("%+v\n", err)
  63. }
  64. if len(multiValues) != 2 {
  65. t.Fatalf("Value Error: cache %v\n", multiValues)
  66. }
  67. if multiValues["test1"] != "test1-value" || multiValues["test2"] != "test2-value" {
  68. t.Fatalf("Value Error: cache %v\n", multiValues)
  69. }
  70. allValues, err := localCache.GetAll()
  71. if err != nil {
  72. t.Fatalf("%+v\n", err)
  73. }
  74. if len(allValues) != 2 {
  75. t.Fatalf("Value Error: cache %v\n", allValues)
  76. }
  77. if allValues["test1"] != "test1-value" || allValues["test2"] != "test2-value" {
  78. t.Fatalf("Value Error: cache %v\n", allValues)
  79. }
  80. err = localCache.Delete("test2")
  81. if err != nil {
  82. t.Fatalf("%+v\n", err)
  83. }
  84. test2Value, err := localCache.Get("test2")
  85. if err != nil {
  86. t.Fatalf("%+v\n", err)
  87. }
  88. if strutils.IsStringNotEmpty(test2Value) {
  89. t.Fatalf("Delete Value Error: cache %v\n", test2Value)
  90. }
  91. err = localCache.Clear()
  92. if err != nil {
  93. t.Fatalf("%+v\n", err)
  94. }
  95. allValues, err = localCache.GetAll()
  96. if err != nil {
  97. t.Fatalf("%+v\n", err)
  98. }
  99. if len(allValues) != 0 {
  100. t.Fatalf("Clear Value Error: cache %v\n", allValues)
  101. }
  102. err = localCache.Set("test", "test-value", 1)
  103. if err != nil {
  104. t.Fatalf("%+v\n", err)
  105. }
  106. time.Sleep(1500 * time.Millisecond)
  107. testValue, err := localCache.Get("test")
  108. if err != nil {
  109. t.Fatalf("%+v\n", err)
  110. }
  111. if strutils.IsStringNotEmpty(testValue) {
  112. t.Fatalf("Value Expire Error: cache %v\n", testValue)
  113. }
  114. err = localCache.Clear()
  115. if err != nil {
  116. t.Fatalf("%+v\n", err)
  117. }
  118. }
  119. func testRedisCache(t *testing.T, redisCache *redis.Cache) {
  120. err := redisCache.Set("test1", "test1-value", 0)
  121. if err != nil {
  122. t.Fatalf("%+v\n", err)
  123. }
  124. test1Value, err := redisCache.Get("test1")
  125. if err != nil {
  126. t.Fatalf("%+v\n", err)
  127. }
  128. if test1Value != "test1-value" {
  129. t.Fatalf("Value Error: cache %v\n", test1Value)
  130. }
  131. err = redisCache.Set("test2", "test2-value", 0)
  132. if err != nil {
  133. t.Fatalf("%+v\n", err)
  134. }
  135. multiValues, err := redisCache.GetMulti([]string{"test1", "test2"})
  136. if err != nil {
  137. t.Fatalf("%+v\n", err)
  138. }
  139. if len(multiValues) != 2 {
  140. t.Fatalf("Value Error: cache %v\n", multiValues)
  141. }
  142. if multiValues["test1"] != "test1-value" || multiValues["test2"] != "test2-value" {
  143. t.Fatalf("Value Error: cache %v\n", multiValues)
  144. }
  145. allValues, err := redisCache.GetAll()
  146. if err != nil {
  147. t.Fatalf("%+v\n", err)
  148. }
  149. if len(allValues) != 2 {
  150. t.Fatalf("Value Error: cache %v\n", allValues)
  151. }
  152. if allValues["test1"] != "test1-value" || allValues["test2"] != "test2-value" {
  153. t.Fatalf("Value Error: cache %v\n", allValues)
  154. }
  155. err = redisCache.Delete("test2")
  156. if err != nil {
  157. t.Fatalf("%+v\n", err)
  158. }
  159. test2Value, err := redisCache.Get("test2")
  160. if err != nil {
  161. t.Fatalf("%+v\n", err)
  162. }
  163. if strutils.IsStringNotEmpty(test2Value) {
  164. t.Fatalf("Delete Value Error: cache %v\n", test2Value)
  165. }
  166. err = redisCache.Clear()
  167. if err != nil {
  168. t.Fatalf("%+v\n", err)
  169. }
  170. allValues, err = redisCache.GetAll()
  171. if err != nil {
  172. t.Fatalf("%+v\n", err)
  173. }
  174. if len(allValues) != 0 {
  175. t.Fatalf("Clear Value Error: cache %v\n", allValues)
  176. }
  177. err = redisCache.Set("test", "test-value", 1)
  178. if err != nil {
  179. t.Fatalf("%+v\n", err)
  180. }
  181. time.Sleep(1500 * time.Millisecond)
  182. testValue, err := redisCache.Get("test")
  183. if err != nil {
  184. t.Fatalf("%+v\n", err)
  185. }
  186. if strutils.IsStringNotEmpty(testValue) {
  187. t.Fatalf("Value Expire Error: cache %v\n", testValue)
  188. }
  189. err = redisCache.Clear()
  190. if err != nil {
  191. t.Fatalf("%+v\n", err)
  192. }
  193. }
  194. func testCache(t *testing.T, cacheInterface cache.Cache) {
  195. err := cache.Set(cacheInterface, "test1", "test1-value", 0)
  196. if err != nil {
  197. t.Fatalf("%+v\n", err)
  198. }
  199. test1Value, err := cache.Get[string](cacheInterface, "test1")
  200. if err != nil {
  201. t.Fatalf("%+v\n", err)
  202. }
  203. if test1Value != "test1-value" {
  204. t.Fatalf("Value Error: cache %v\n", test1Value)
  205. }
  206. err = cache.Set(cacheInterface, "test2", "test2-value", 0)
  207. if err != nil {
  208. t.Fatalf("%+v\n", err)
  209. }
  210. multiValues, err := cache.GetMulti(cacheInterface, []string{"test1", "test2"})
  211. if err != nil {
  212. t.Fatalf("%+v\n", err)
  213. }
  214. if len(multiValues) != 2 {
  215. t.Fatalf("Value Error: cache %v\n", multiValues)
  216. }
  217. if multiValues["test1"] != "test1-value" || multiValues["test2"] != "test2-value" {
  218. t.Fatalf("Value Error: cache %v\n", multiValues)
  219. }
  220. allValues, err := cache.GetAll(cacheInterface)
  221. if err != nil {
  222. t.Fatalf("%+v\n", err)
  223. }
  224. if len(allValues) != 2 {
  225. t.Fatalf("Value Error: cache %v\n", allValues)
  226. }
  227. if allValues["test1"] != "test1-value" || allValues["test2"] != "test2-value" {
  228. t.Fatalf("Value Error: cache %v\n", allValues)
  229. }
  230. err = cache.Delete(cacheInterface, "test2")
  231. if err != nil {
  232. t.Fatalf("%+v\n", err)
  233. }
  234. test2Value, err := cache.Get[string](cacheInterface, "test2")
  235. if err != nil {
  236. t.Fatalf("%+v\n", err)
  237. }
  238. if strutils.IsStringNotEmpty(test2Value) {
  239. t.Fatalf("Delete Value Error: cache %v\n", test2Value)
  240. }
  241. err = cache.Clear(cacheInterface)
  242. if err != nil {
  243. t.Fatalf("%+v\n", err)
  244. }
  245. allValues, err = cache.GetAll(cacheInterface)
  246. if err != nil {
  247. t.Fatalf("%+v\n", err)
  248. }
  249. if len(allValues) != 0 {
  250. t.Fatalf("Clear Value Error: cache %v\n", allValues)
  251. }
  252. err = cache.Set(cacheInterface, "test", "test-value", 1)
  253. if err != nil {
  254. t.Fatalf("%+v\n", err)
  255. }
  256. time.Sleep(1500 * time.Millisecond)
  257. testValue, err := cache.Get[string](cacheInterface, "test")
  258. if err != nil {
  259. t.Fatalf("%+v\n", err)
  260. }
  261. if strutils.IsStringNotEmpty(testValue) {
  262. t.Fatalf("Value Expire Error: cache %v\n", testValue)
  263. }
  264. err = cache.Clear(cacheInterface)
  265. if err != nil {
  266. t.Fatalf("%+v\n", err)
  267. }
  268. }