From eb3f420cc896750a77a532b760968a5b597876a5 Mon Sep 17 00:00:00 2001 From: holys Date: Fri, 15 Aug 2014 15:51:41 +0800 Subject: [PATCH] update test for ttl and bitmap --- server/cmd_bit_test.go | 16 -- server/cmd_ttl_test.go | 350 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 350 insertions(+), 16 deletions(-) diff --git a/server/cmd_bit_test.go b/server/cmd_bit_test.go index 7e45d4e..f19850b 100644 --- a/server/cmd_bit_test.go +++ b/server/cmd_bit_test.go @@ -344,22 +344,6 @@ func TestBitErrorParams(t *testing.T) { t.Fatal("invalid err of %v", err) } - if _, err := c.Do("bexpire", "test_bexpire"); err == nil { - t.Fatal("invalid err of %v", err) - } - - if _, err := c.Do("bexpireat", "test_bexpireat"); err == nil { - t.Fatal("invalid err of %v", err) - } - - if _, err := c.Do("bttl"); err == nil { - t.Fatal("invalid err of %v", err) - } - - if _, err := c.Do("bpersist"); err == nil { - t.Fatal("invalid err of %v", err) - } - //bexpire if _, err := c.Do("bexpire", "test_bexpire"); err == nil { t.Fatal("invalid err of %v", err) diff --git a/server/cmd_ttl_test.go b/server/cmd_ttl_test.go index 664ca87..702348d 100644 --- a/server/cmd_ttl_test.go +++ b/server/cmd_ttl_test.go @@ -79,3 +79,353 @@ func TestKVExpire(t *testing.T) { } } + +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) + } else if n != 1 { + t.Fatal(n) + } + +}