cache_test.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. // Copyright 2017 The Xorm Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. package xorm
  5. import (
  6. "testing"
  7. "time"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestCacheFind(t *testing.T) {
  11. assert.NoError(t, prepareEngine())
  12. type MailBox struct {
  13. Id int64 `xorm:"pk"`
  14. Username string
  15. Password string
  16. }
  17. cacher := NewLRUCacher2(NewMemoryStore(), time.Hour, 10000)
  18. testEngine.SetDefaultCacher(cacher)
  19. assert.NoError(t, testEngine.Sync2(new(MailBox)))
  20. var inserts = []*MailBox{
  21. {
  22. Id: 0,
  23. Username: "user1",
  24. Password: "pass1",
  25. },
  26. {
  27. Id: 1,
  28. Username: "user2",
  29. Password: "pass2",
  30. },
  31. }
  32. _, err := testEngine.Insert(inserts[0], inserts[1])
  33. assert.NoError(t, err)
  34. var boxes []MailBox
  35. assert.NoError(t, testEngine.Find(&boxes))
  36. assert.EqualValues(t, 2, len(boxes))
  37. for i, box := range boxes {
  38. assert.Equal(t, inserts[i].Id, box.Id)
  39. assert.Equal(t, inserts[i].Username, box.Username)
  40. assert.Equal(t, inserts[i].Password, box.Password)
  41. }
  42. boxes = make([]MailBox, 0, 2)
  43. assert.NoError(t, testEngine.Find(&boxes))
  44. assert.EqualValues(t, 2, len(boxes))
  45. for i, box := range boxes {
  46. assert.Equal(t, inserts[i].Id, box.Id)
  47. assert.Equal(t, inserts[i].Username, box.Username)
  48. assert.Equal(t, inserts[i].Password, box.Password)
  49. }
  50. testEngine.SetDefaultCacher(nil)
  51. }
  52. func TestCacheFind2(t *testing.T) {
  53. assert.NoError(t, prepareEngine())
  54. type MailBox2 struct {
  55. Id uint64 `xorm:"pk"`
  56. Username string
  57. Password string
  58. }
  59. cacher := NewLRUCacher2(NewMemoryStore(), time.Hour, 10000)
  60. testEngine.SetDefaultCacher(cacher)
  61. assert.NoError(t, testEngine.Sync2(new(MailBox2)))
  62. var inserts = []*MailBox2{
  63. {
  64. Id: 0,
  65. Username: "user1",
  66. Password: "pass1",
  67. },
  68. {
  69. Id: 1,
  70. Username: "user2",
  71. Password: "pass2",
  72. },
  73. }
  74. _, err := testEngine.Insert(inserts[0], inserts[1])
  75. assert.NoError(t, err)
  76. var boxes []MailBox2
  77. assert.NoError(t, testEngine.Find(&boxes))
  78. assert.EqualValues(t, 2, len(boxes))
  79. for i, box := range boxes {
  80. assert.Equal(t, inserts[i].Id, box.Id)
  81. assert.Equal(t, inserts[i].Username, box.Username)
  82. assert.Equal(t, inserts[i].Password, box.Password)
  83. }
  84. boxes = make([]MailBox2, 0, 2)
  85. assert.NoError(t, testEngine.Find(&boxes))
  86. assert.EqualValues(t, 2, len(boxes))
  87. for i, box := range boxes {
  88. assert.Equal(t, inserts[i].Id, box.Id)
  89. assert.Equal(t, inserts[i].Username, box.Username)
  90. assert.Equal(t, inserts[i].Password, box.Password)
  91. }
  92. testEngine.SetDefaultCacher(nil)
  93. }
  94. func TestCacheGet(t *testing.T) {
  95. assert.NoError(t, prepareEngine())
  96. type MailBox3 struct {
  97. Id uint64
  98. Username string
  99. Password string
  100. }
  101. cacher := NewLRUCacher2(NewMemoryStore(), time.Hour, 10000)
  102. testEngine.SetDefaultCacher(cacher)
  103. assert.NoError(t, testEngine.Sync2(new(MailBox3)))
  104. var inserts = []*MailBox3{
  105. {
  106. Username: "user1",
  107. Password: "pass1",
  108. },
  109. }
  110. _, err := testEngine.Insert(inserts[0])
  111. assert.NoError(t, err)
  112. var box1 MailBox3
  113. has, err := testEngine.Where("id = ?", inserts[0].Id).Get(&box1)
  114. assert.NoError(t, err)
  115. assert.True(t, has)
  116. assert.EqualValues(t, "user1", box1.Username)
  117. assert.EqualValues(t, "pass1", box1.Password)
  118. var box2 MailBox3
  119. has, err = testEngine.Where("id = ?", inserts[0].Id).Get(&box2)
  120. assert.NoError(t, err)
  121. assert.True(t, has)
  122. assert.EqualValues(t, "user1", box2.Username)
  123. assert.EqualValues(t, "pass1", box2.Password)
  124. testEngine.SetDefaultCacher(nil)
  125. }