forked from mirror/ledisdb
commit
d075418456
|
@ -1,6 +1,7 @@
|
||||||
package server
|
package server
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/siddontang/ledisdb/client/go/ledis"
|
"github.com/siddontang/ledisdb/client/go/ledis"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
@ -10,22 +11,66 @@ func now() int64 {
|
||||||
return time.Now().Unix()
|
return time.Now().Unix()
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestKVExpire(t *testing.T) {
|
func TestExpire(t *testing.T) {
|
||||||
|
// test for kv, list, hash, set, zset, bitmap in all
|
||||||
|
ttlType := []string{"k", "l", "h", "s", "z", "b"}
|
||||||
|
|
||||||
|
var (
|
||||||
|
expire string
|
||||||
|
expireat string
|
||||||
|
ttl string
|
||||||
|
persist string
|
||||||
|
key string
|
||||||
|
)
|
||||||
|
|
||||||
c := getTestConn()
|
c := getTestConn()
|
||||||
defer c.Close()
|
defer c.Close()
|
||||||
|
|
||||||
k := "a_ttl"
|
idx := 1
|
||||||
c.Do("set", k, "123")
|
for _, tt := range ttlType {
|
||||||
|
if tt == "k" {
|
||||||
|
expire = "expire"
|
||||||
|
expireat = "expireat"
|
||||||
|
ttl = "ttl"
|
||||||
|
persist = "persist"
|
||||||
|
|
||||||
|
} else {
|
||||||
|
expire = fmt.Sprintf("%sexpire", tt)
|
||||||
|
expireat = fmt.Sprintf("%sexpireat", tt)
|
||||||
|
ttl = fmt.Sprintf("%sttl", tt)
|
||||||
|
persist = fmt.Sprintf("%spersist", tt)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch tt {
|
||||||
|
case "k":
|
||||||
|
key = "kv_ttl"
|
||||||
|
c.Do("set", key, "123")
|
||||||
|
case "l":
|
||||||
|
key = "list_ttl"
|
||||||
|
c.Do("rpush", key, "123")
|
||||||
|
case "h":
|
||||||
|
key = "hash_ttl"
|
||||||
|
c.Do("hset", key, "a", "123")
|
||||||
|
case "s":
|
||||||
|
key = "set_ttl"
|
||||||
|
c.Do("sadd", key, "123")
|
||||||
|
case "z":
|
||||||
|
key = "zset_ttl"
|
||||||
|
c.Do("zadd", key, 123, "a")
|
||||||
|
case "b":
|
||||||
|
key = "bitmap_ttl"
|
||||||
|
c.Do("bsetbit", key, 0, 1)
|
||||||
|
}
|
||||||
|
|
||||||
// expire + ttl
|
// expire + ttl
|
||||||
exp := int64(10)
|
exp := int64(10)
|
||||||
if n, err := ledis.Int(c.Do("expire", k, exp)); err != nil {
|
if n, err := ledis.Int(c.Do(expire, key, exp)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("ttl", k)); err != nil {
|
if ttl, err := ledis.Int64(c.Do(ttl, key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if ttl != exp {
|
} else if ttl != exp {
|
||||||
t.Fatal(ttl)
|
t.Fatal(ttl)
|
||||||
|
@ -33,13 +78,13 @@ func TestKVExpire(t *testing.T) {
|
||||||
|
|
||||||
// expireat + ttl
|
// expireat + ttl
|
||||||
tm := now() + 3
|
tm := now() + 3
|
||||||
if n, err := ledis.Int(c.Do("expireat", k, tm)); err != nil {
|
if n, err := ledis.Int(c.Do(expireat, key, tm)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("ttl", k)); err != nil {
|
if ttl, err := ledis.Int64(c.Do(ttl, key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if ttl != 3 {
|
} else if ttl != 3 {
|
||||||
t.Fatal(ttl)
|
t.Fatal(ttl)
|
||||||
|
@ -48,384 +93,37 @@ func TestKVExpire(t *testing.T) {
|
||||||
kErr := "not_exist_ttl"
|
kErr := "not_exist_ttl"
|
||||||
|
|
||||||
// err - expire, expireat
|
// err - expire, expireat
|
||||||
if n, err := ledis.Int(c.Do("expire", kErr, tm)); err != nil || n != 0 {
|
if n, err := ledis.Int(c.Do(expire, kErr, tm)); err != nil || n != 0 {
|
||||||
t.Fatal(false)
|
t.Fatal(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("expireat", kErr, tm)); err != nil || n != 0 {
|
if n, err := ledis.Int(c.Do(expireat, kErr, tm)); err != nil || n != 0 {
|
||||||
t.Fatal(false)
|
t.Fatal(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("ttl", kErr)); err != nil || n != -1 {
|
if n, err := ledis.Int(c.Do(ttl, kErr)); err != nil || n != -1 {
|
||||||
t.Fatal(false)
|
t.Fatal(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("persist", k)); err != nil {
|
if n, err := ledis.Int(c.Do(persist, key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("expire", k, 10)); err != nil {
|
if n, err := ledis.Int(c.Do(expire, key, 10)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("persist", k)); err != nil {
|
if n, err := ledis.Int(c.Do(persist, key)); err != nil {
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestSetExpire(t *testing.T) {
|
|
||||||
c := getTestConn()
|
|
||||||
defer c.Close()
|
|
||||||
|
|
||||||
k := "set_ttl"
|
|
||||||
c.Do("sadd", k, "123")
|
|
||||||
|
|
||||||
// expire + ttl
|
|
||||||
exp := int64(10)
|
|
||||||
if n, err := ledis.Int(c.Do("sexpire", k, exp)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("sttl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != exp {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
// expireat + ttl
|
|
||||||
tm := now() + 3
|
|
||||||
if n, err := ledis.Int(c.Do("sexpireat", k, tm)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("sttl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != 3 {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
kErr := "not_exist_ttl"
|
|
||||||
|
|
||||||
// err - expire, expireat
|
|
||||||
if n, err := ledis.Int(c.Do("sexpire", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("sexpireat", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("sttl", kErr)); err != nil || n != -1 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("spersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("sexpire", k, 10)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("spersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestListExpire(t *testing.T) {
|
|
||||||
c := getTestConn()
|
|
||||||
defer c.Close()
|
|
||||||
|
|
||||||
k := "list_ttl"
|
|
||||||
c.Do("rpush", k, "123")
|
|
||||||
|
|
||||||
// expire + ttl
|
|
||||||
exp := int64(10)
|
|
||||||
if n, err := ledis.Int(c.Do("lexpire", k, exp)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("lttl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != exp {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
// expireat + ttl
|
|
||||||
tm := now() + 3
|
|
||||||
if n, err := ledis.Int(c.Do("lexpireat", k, tm)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("lttl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != 3 {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
kErr := "not_exist_ttl"
|
|
||||||
|
|
||||||
// err - expire, expireat
|
|
||||||
if n, err := ledis.Int(c.Do("lexpire", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("lexpireat", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("lttl", kErr)); err != nil || n != -1 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("lpersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("lexpire", k, 10)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("lpersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestHashExpire(t *testing.T) {
|
|
||||||
c := getTestConn()
|
|
||||||
defer c.Close()
|
|
||||||
|
|
||||||
k := "hash_ttl"
|
|
||||||
c.Do("hset", k, "f", 123)
|
|
||||||
|
|
||||||
// expire + ttl
|
|
||||||
exp := int64(10)
|
|
||||||
if n, err := ledis.Int(c.Do("hexpire", k, exp)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("httl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != exp {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
// expireat + ttl
|
|
||||||
tm := now() + 3
|
|
||||||
if n, err := ledis.Int(c.Do("hexpireat", k, tm)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("httl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != 3 {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
kErr := "not_exist_ttl"
|
|
||||||
|
|
||||||
// err - expire, expireat
|
|
||||||
if n, err := ledis.Int(c.Do("hexpire", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("hexpireat", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("httl", kErr)); err != nil || n != -1 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("hpersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("hexpire", k, 10)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("hpersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestZsetExpire(t *testing.T) {
|
|
||||||
c := getTestConn()
|
|
||||||
defer c.Close()
|
|
||||||
|
|
||||||
k := "zset_ttl"
|
|
||||||
c.Do("zadd", k, 123, "m")
|
|
||||||
|
|
||||||
// expire + ttl
|
|
||||||
exp := int64(10)
|
|
||||||
if n, err := ledis.Int(c.Do("zexpire", k, exp)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("zttl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != exp {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
// expireat + ttl
|
|
||||||
tm := now() + 3
|
|
||||||
if n, err := ledis.Int(c.Do("zexpireat", k, tm)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("zttl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != 3 {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
kErr := "not_exist_ttl"
|
|
||||||
|
|
||||||
// err - expire, expireat
|
|
||||||
if n, err := ledis.Int(c.Do("zexpire", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("zexpireat", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("zttl", kErr)); err != nil || n != -1 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("zpersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("zexpire", k, 10)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("zpersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestBitmapExpire(t *testing.T) {
|
|
||||||
c := getTestConn()
|
|
||||||
defer c.Close()
|
|
||||||
|
|
||||||
k := "bit_ttl"
|
|
||||||
c.Do("bsetbit", k, 0, 1)
|
|
||||||
|
|
||||||
// expire + ttl
|
|
||||||
exp := int64(10)
|
|
||||||
if n, err := ledis.Int(c.Do("bexpire", k, exp)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("bttl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != exp {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
// expireat + ttl
|
|
||||||
tm := now() + 3
|
|
||||||
if n, err := ledis.Int(c.Do("bexpireat", k, tm)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if ttl, err := ledis.Int64(c.Do("bttl", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if ttl != 3 {
|
|
||||||
t.Fatal(ttl)
|
|
||||||
}
|
|
||||||
|
|
||||||
kErr := "not_exist_ttl"
|
|
||||||
|
|
||||||
// err - expire, expireat
|
|
||||||
if n, err := ledis.Int(c.Do("bexpire", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("bexpireat", kErr, tm)); err != nil || n != 0 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("bttl", kErr)); err != nil || n != -1 {
|
|
||||||
t.Fatal(false)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("bpersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("bexpire", k, 10)); err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
} else if n != 1 {
|
|
||||||
t.Fatal(n)
|
|
||||||
}
|
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("bpersist", k)); err != nil {
|
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
idx++
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue