etcd/store_test.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")
}
}