store_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package main
  2. import (
  3. "testing"
  4. "time"
  5. "fmt"
  6. )
  7. func TestStoreGet(t *testing.T) {
  8. s.Set("foo", "bar", time.Unix(0, 0))
  9. res := s.Get("foo")
  10. if res.NewValue != "bar" {
  11. t.Fatalf("Cannot get stored value")
  12. }
  13. s.Delete("foo")
  14. res = s.Get("foo")
  15. if res.Exist {
  16. t.Fatalf("Got deleted value")
  17. }
  18. }
  19. func TestSaveAndRecovery(t *testing.T) {
  20. s.Set("foo", "bar", time.Unix(0, 0))
  21. s.Set("foo2", "bar2", time.Now().Add(time.Second * 5))
  22. state, err := s.Save()
  23. if err != nil {
  24. t.Fatalf("Cannot Save")
  25. }
  26. newStore := createStore()
  27. // wait for foo2 expires
  28. time.Sleep(time.Second * 6)
  29. newStore.Recovery(state)
  30. res := newStore.Get("foo")
  31. if res.OldValue != "bar" {
  32. t.Fatalf("Cannot recovery")
  33. }
  34. res = newStore.Get("foo2")
  35. if res.Exist {
  36. t.Fatalf("Get expired value")
  37. }
  38. s.Delete("foo")
  39. }
  40. func TestExpire(t *testing.T) {
  41. fmt.Println(time.Now())
  42. fmt.Println("TEST EXPIRE")
  43. // test expire
  44. s.Set("foo", "bar", time.Now().Add(time.Second * 1))
  45. time.Sleep(2*time.Second)
  46. res := s.Get("foo")
  47. if res.Exist {
  48. t.Fatalf("Got expired value")
  49. }
  50. //test change expire time
  51. s.Set("foo", "bar", time.Now().Add(time.Second * 10))
  52. res = s.Get("foo")
  53. if !res.Exist {
  54. t.Fatalf("Cannot get Value")
  55. }
  56. s.Set("foo", "barbar", time.Now().Add(time.Second * 1))
  57. time.Sleep(2 * time.Second)
  58. res = s.Get("foo")
  59. if res.Exist {
  60. t.Fatalf("Got expired value")
  61. }
  62. // test change expire to stable
  63. s.Set("foo", "bar", time.Now().Add(time.Second * 1))
  64. s.Set("foo", "bar", time.Unix(0,0))
  65. time.Sleep(2*time.Second)
  66. res = s.Get("foo")
  67. if !res.Exist {
  68. t.Fatalf("Cannot get Value")
  69. }
  70. // test stable to expire
  71. s.Set("foo", "bar", time.Now().Add(time.Second * 1))
  72. time.Sleep(2*time.Second)
  73. res = s.Get("foo")
  74. if res.Exist {
  75. t.Fatalf("Got expired value")
  76. }
  77. // test set older node
  78. s.Set("foo", "bar", time.Now().Add(-time.Second * 1))
  79. res = s.Get("foo")
  80. if res.Exist {
  81. t.Fatalf("Got expired value")
  82. }
  83. }