cache_test.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  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
  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. Username: "user1",
  23. Password: "pass1",
  24. },
  25. {
  26. Username: "user2",
  27. Password: "pass2",
  28. },
  29. }
  30. _, err := testEngine.Insert(inserts[0], inserts[1])
  31. assert.NoError(t, err)
  32. var boxes []MailBox
  33. assert.NoError(t, testEngine.Find(&boxes))
  34. assert.EqualValues(t, 2, len(boxes))
  35. for i, box := range boxes {
  36. assert.Equal(t, inserts[i].Id, box.Id)
  37. assert.Equal(t, inserts[i].Username, box.Username)
  38. assert.Equal(t, inserts[i].Password, box.Password)
  39. }
  40. boxes = make([]MailBox, 0, 2)
  41. assert.NoError(t, testEngine.Find(&boxes))
  42. assert.EqualValues(t, 2, len(boxes))
  43. for i, box := range boxes {
  44. assert.Equal(t, inserts[i].Id, box.Id)
  45. assert.Equal(t, inserts[i].Username, box.Username)
  46. assert.Equal(t, inserts[i].Password, box.Password)
  47. }
  48. testEngine.SetDefaultCacher(nil)
  49. }
  50. func TestCacheFind2(t *testing.T) {
  51. assert.NoError(t, prepareEngine())
  52. type MailBox2 struct {
  53. Id uint64
  54. Username string
  55. Password string
  56. }
  57. cacher := NewLRUCacher2(NewMemoryStore(), time.Hour, 10000)
  58. testEngine.SetDefaultCacher(cacher)
  59. assert.NoError(t, testEngine.Sync2(new(MailBox2)))
  60. var inserts = []*MailBox2{
  61. {
  62. Username: "user1",
  63. Password: "pass1",
  64. },
  65. {
  66. Username: "user2",
  67. Password: "pass2",
  68. },
  69. }
  70. _, err := testEngine.Insert(inserts[0], inserts[1])
  71. assert.NoError(t, err)
  72. var boxes []MailBox2
  73. assert.NoError(t, testEngine.Find(&boxes))
  74. assert.EqualValues(t, 2, len(boxes))
  75. for i, box := range boxes {
  76. assert.Equal(t, inserts[i].Id, box.Id)
  77. assert.Equal(t, inserts[i].Username, box.Username)
  78. assert.Equal(t, inserts[i].Password, box.Password)
  79. }
  80. boxes = make([]MailBox2, 0, 2)
  81. assert.NoError(t, testEngine.Find(&boxes))
  82. assert.EqualValues(t, 2, len(boxes))
  83. for i, box := range boxes {
  84. assert.Equal(t, inserts[i].Id, box.Id)
  85. assert.Equal(t, inserts[i].Username, box.Username)
  86. assert.Equal(t, inserts[i].Password, box.Password)
  87. }
  88. testEngine.SetDefaultCacher(nil)
  89. }
  90. func TestCacheGet(t *testing.T) {
  91. assert.NoError(t, prepareEngine())
  92. type MailBox3 struct {
  93. Id uint64
  94. Username string
  95. Password string
  96. }
  97. cacher := NewLRUCacher2(NewMemoryStore(), time.Hour, 10000)
  98. testEngine.SetDefaultCacher(cacher)
  99. assert.NoError(t, testEngine.Sync2(new(MailBox3)))
  100. var inserts = []*MailBox3{
  101. {
  102. Username: "user1",
  103. Password: "pass1",
  104. },
  105. }
  106. _, err := testEngine.Insert(inserts[0])
  107. assert.NoError(t, err)
  108. var box1 MailBox3
  109. has, err := testEngine.Where("id = ?", inserts[0].Id).Get(&box1)
  110. assert.NoError(t, err)
  111. assert.True(t, has)
  112. assert.EqualValues(t, "user1", box1.Username)
  113. assert.EqualValues(t, "pass1", box1.Password)
  114. var box2 MailBox3
  115. has, err = testEngine.Where("id = ?", inserts[0].Id).Get(&box2)
  116. assert.NoError(t, err)
  117. assert.True(t, has)
  118. assert.EqualValues(t, "user1", box2.Username)
  119. assert.EqualValues(t, "pass1", box2.Password)
  120. testEngine.SetDefaultCacher(nil)
  121. }