store_test.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. state, err := s.Save()
  22. if err != nil {
  23. t.Fatalf("Cannot Save")
  24. }
  25. newStore := createStore()
  26. newStore.Recovery(state)
  27. res := newStore.Get("foo")
  28. if res.OldValue != "bar" {
  29. t.Fatalf("Cannot recovery")
  30. }
  31. s.Delete("foo")
  32. }
  33. func TestExpire(t *testing.T) {
  34. fmt.Println(time.Now())
  35. fmt.Println("TEST EXPIRE")
  36. // test expire
  37. s.Set("foo", "bar", time.Now().Add(time.Second * 1))
  38. time.Sleep(2*time.Second)
  39. res := s.Get("foo")
  40. if res.Exist {
  41. t.Fatalf("Got expired value")
  42. }
  43. //test change expire time
  44. s.Set("foo", "bar", time.Now().Add(time.Second * 10))
  45. res = s.Get("foo")
  46. if !res.Exist {
  47. t.Fatalf("Cannot get Value")
  48. }
  49. s.Set("foo", "barbar", time.Now().Add(time.Second * 1))
  50. time.Sleep(2 * time.Second)
  51. res = s.Get("foo")
  52. if res.Exist {
  53. t.Fatalf("Got expired value")
  54. }
  55. // test change expire to stable
  56. s.Set("foo", "bar", time.Now().Add(time.Second * 1))
  57. s.Set("foo", "bar", time.Unix(0,0))
  58. time.Sleep(2*time.Second)
  59. res = s.Get("foo")
  60. if !res.Exist {
  61. t.Fatalf("Cannot get Value")
  62. }
  63. // test stable to expire
  64. s.Set("foo", "bar", time.Now().Add(time.Second * 1))
  65. time.Sleep(2*time.Second)
  66. res = s.Get("foo")
  67. if res.Exist {
  68. t.Fatalf("Got expired value")
  69. }
  70. // test set older node
  71. s.Set("foo", "bar", time.Now().Add(-time.Second * 1))
  72. res = s.Get("foo")
  73. if res.Exist {
  74. t.Fatalf("Got expired value")
  75. }
  76. }