2014-05-16 11:03:23 +04:00
|
|
|
package server
|
2014-05-05 07:37:44 +04:00
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
2015-05-04 17:42:28 +03:00
|
|
|
|
|
|
|
"github.com/siddontang/goredis"
|
2014-05-05 07:37:44 +04:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestKV(t *testing.T) {
|
|
|
|
c := getTestConn()
|
|
|
|
defer c.Close()
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if ok, err := goredis.String(c.Do("set", "a", "1234")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if ok != OK {
|
|
|
|
t.Fatal(ok)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("setnx", "a", "123")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 0 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("setnx", "b", "123")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 1 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if ok, err := goredis.String(c.Do("setex", "xx", 10, "hello world")); err != nil {
|
2014-10-26 10:15:43 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if ok != OK {
|
|
|
|
t.Fatal(ok)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if v, err := goredis.String(c.Do("get", "a")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if v != "1234" {
|
|
|
|
t.Fatal(v)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if v, err := goredis.String(c.Do("getset", "a", "123")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if v != "1234" {
|
|
|
|
t.Fatal(v)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if v, err := goredis.String(c.Do("get", "a")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if v != "123" {
|
|
|
|
t.Fatal(v)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("exists", "a")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 1 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("exists", "empty_key_test")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 0 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if _, err := goredis.Int(c.Do("del", "a", "b")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("exists", "a")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 0 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("exists", "b")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 0 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
2015-02-05 04:50:40 +03:00
|
|
|
|
|
|
|
rangeKey := "range_key"
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("append", rangeKey, "Hello ")); err != nil {
|
2015-02-05 04:50:40 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 6 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("setrange", rangeKey, 6, "Redis")); err != nil {
|
2015-02-05 04:50:40 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 11 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("strlen", rangeKey)); err != nil {
|
2015-02-05 04:50:40 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 11 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if v, err := goredis.String(c.Do("getrange", rangeKey, 0, -1)); err != nil {
|
2015-02-05 04:50:40 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if v != "Hello Redis" {
|
|
|
|
t.Fatal(v)
|
|
|
|
}
|
|
|
|
|
2015-02-05 10:37:17 +03:00
|
|
|
bitKey := "bit_key"
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("setbit", bitKey, 7, 1)); err != nil {
|
2015-02-05 10:37:17 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 0 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("getbit", bitKey, 7)); err != nil {
|
2015-02-05 10:37:17 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 1 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("bitcount", bitKey)); err != nil {
|
2015-02-05 10:37:17 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 1 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("bitpos", bitKey, 1)); err != nil {
|
2015-02-05 10:37:17 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 7 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
|
|
|
c.Do("set", "key1", "foobar")
|
|
|
|
c.Do("set", "key2", "abcdef")
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int(c.Do("bitop", "and", "bit_dest_key", "key1", "key2")); err != nil {
|
2015-02-05 10:37:17 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 6 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if v, err := goredis.String(c.Do("get", "bit_dest_key")); err != nil {
|
2015-02-05 10:37:17 +03:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if v != "`bc`ab" {
|
|
|
|
t.Fatal(v)
|
|
|
|
}
|
|
|
|
|
2014-05-05 07:37:44 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
func TestKVM(t *testing.T) {
|
|
|
|
c := getTestConn()
|
|
|
|
defer c.Close()
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if ok, err := goredis.String(c.Do("mset", "a", "1", "b", "2")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if ok != OK {
|
|
|
|
t.Fatal(ok)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if v, err := goredis.MultiBulk(c.Do("mget", "a", "b", "c")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if len(v) != 3 {
|
|
|
|
t.Fatal(len(v))
|
|
|
|
} else {
|
|
|
|
if vv, ok := v[0].([]byte); !ok || string(vv) != "1" {
|
|
|
|
t.Fatal("not 1")
|
|
|
|
}
|
|
|
|
|
|
|
|
if vv, ok := v[1].([]byte); !ok || string(vv) != "2" {
|
|
|
|
t.Fatal("not 2")
|
|
|
|
}
|
|
|
|
|
|
|
|
if v[2] != nil {
|
|
|
|
t.Fatal("must nil")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestKVIncrDecr(t *testing.T) {
|
|
|
|
c := getTestConn()
|
|
|
|
defer c.Close()
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int64(c.Do("incr", "n")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 1 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int64(c.Do("incr", "n")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 2 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int64(c.Do("decr", "n")); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 1 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int64(c.Do("incrby", "n", 10)); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 11 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
|
2015-03-11 06:54:02 +03:00
|
|
|
if n, err := goredis.Int64(c.Do("decrby", "n", 10)); err != nil {
|
2014-05-05 07:37:44 +04:00
|
|
|
t.Fatal(err)
|
|
|
|
} else if n != 1 {
|
|
|
|
t.Fatal(n)
|
|
|
|
}
|
|
|
|
}
|
2014-07-25 13:26:29 +04:00
|
|
|
|
2014-07-27 21:58:55 +04:00
|
|
|
func TestKVErrorParams(t *testing.T) {
|
2014-07-25 13:26:29 +04:00
|
|
|
c := getTestConn()
|
|
|
|
defer c.Close()
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("get", "a", "b", "c"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("set", "a", "b", "c"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("getset", "a", "b", "c"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("setnx", "a", "b", "c"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("exists", "a", "b"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("incr", "a", "b"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("incrby", "a"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("decrby", "a"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("del"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("mset"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("mset", "a", "b", "c"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("mget"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("expire"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("expire", "a", "b"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("expireat"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("expireat", "a", "b"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("ttl"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-29 16:08:20 +04:00
|
|
|
if _, err := c.Do("persist"); err == nil {
|
2014-07-25 13:26:29 +04:00
|
|
|
t.Fatal("invalid err of %v", err)
|
|
|
|
}
|
|
|
|
|
2014-10-26 10:15:43 +03:00
|
|
|
if _, err := c.Do("setex", "a", "blah", "hello world"); err == nil {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
2014-07-25 13:26:29 +04:00
|
|
|
}
|