115 lines
1.7 KiB
Go
115 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
"fmt"
|
|
)
|
|
|
|
func TestStoreGet(t *testing.T) {
|
|
|
|
s.Set("foo", "bar", time.Unix(0, 0))
|
|
|
|
res := s.Get("foo")
|
|
|
|
if res.NewValue != "bar" {
|
|
t.Fatalf("Cannot get stored value")
|
|
}
|
|
|
|
s.Delete("foo")
|
|
res = s.Get("foo")
|
|
|
|
if res.Exist {
|
|
t.Fatalf("Got deleted value")
|
|
}
|
|
}
|
|
|
|
func TestSaveAndRecovery(t *testing.T) {
|
|
|
|
s.Set("foo", "bar", time.Unix(0, 0))
|
|
|
|
state, err := s.Save()
|
|
|
|
if err != nil {
|
|
t.Fatalf("Cannot Save")
|
|
}
|
|
|
|
newStore := createStore()
|
|
newStore.Recovery(state)
|
|
|
|
res := newStore.Get("foo")
|
|
|
|
if res.OldValue != "bar" {
|
|
t.Fatalf("Cannot recovery")
|
|
}
|
|
s.Delete("foo")
|
|
|
|
}
|
|
|
|
func TestExpire(t *testing.T) {
|
|
fmt.Println(time.Now())
|
|
fmt.Println("TEST EXPIRE")
|
|
|
|
// test expire
|
|
s.Set("foo", "bar", time.Now().Add(time.Second * 1))
|
|
time.Sleep(2*time.Second)
|
|
|
|
res := s.Get("foo")
|
|
|
|
if res.Exist {
|
|
t.Fatalf("Got expired value")
|
|
}
|
|
|
|
//test change expire time
|
|
s.Set("foo", "bar", time.Now().Add(time.Second * 10))
|
|
|
|
res = s.Get("foo")
|
|
|
|
if !res.Exist {
|
|
t.Fatalf("Cannot get Value")
|
|
}
|
|
|
|
s.Set("foo", "barbar", time.Now().Add(time.Second * 1))
|
|
|
|
time.Sleep(2 * time.Second)
|
|
|
|
res = s.Get("foo")
|
|
|
|
if res.Exist {
|
|
t.Fatalf("Got expired value")
|
|
}
|
|
|
|
|
|
// test change expire to stable
|
|
s.Set("foo", "bar", time.Now().Add(time.Second * 1))
|
|
|
|
s.Set("foo", "bar", time.Unix(0,0))
|
|
|
|
time.Sleep(2*time.Second)
|
|
|
|
res = s.Get("foo")
|
|
|
|
if !res.Exist {
|
|
t.Fatalf("Cannot get Value")
|
|
}
|
|
|
|
// test stable to expire
|
|
s.Set("foo", "bar", time.Now().Add(time.Second * 1))
|
|
time.Sleep(2*time.Second)
|
|
res = s.Get("foo")
|
|
|
|
if res.Exist {
|
|
t.Fatalf("Got expired value")
|
|
}
|
|
|
|
// test set older node
|
|
s.Set("foo", "bar", time.Now().Add(-time.Second * 1))
|
|
res = s.Get("foo")
|
|
|
|
if res.Exist {
|
|
t.Fatalf("Got expired value")
|
|
}
|
|
|
|
|
|
}
|