2014-07-25 07:55:56 +04:00
|
|
|
package http
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"testing"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestHSetCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hsetCommand(db, "test_hset")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hset") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
n, err := hsetCommand(db, "test_hset", "f", "v")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
|
|
|
}
|
|
|
|
if n.(int64) != 1 {
|
|
|
|
t.Fatal("invalid result ", n)
|
|
|
|
}
|
|
|
|
v, err := db.HGet([]byte("test_hset"), []byte("f"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if string(v) != "v" {
|
|
|
|
t.Fatalf("invalid result %s", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHGetCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hgetCommand(db, "test_hget")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hget") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
if _, err := db.HSet([]byte("test_hget"), []byte("f"), []byte("v")); err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hgetCommand(db, "test_hget", "f")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(string) != "v" {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHExistsCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hexistsCommand(db, "test_hexists")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hexists") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = db.HSet([]byte("test_hexists"), []byte("f"), []byte("v"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hexistsCommand(db, "test_hexists", "f")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
if v.(int64) != 1 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2014-07-25 12:17:45 +04:00
|
|
|
func TestHDelCommand(t *testing.T) {
|
2014-07-25 07:55:56 +04:00
|
|
|
db := getTestDB()
|
|
|
|
_, err := hdelCommand(db, "test_hdel")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hdel") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = db.HSet([]byte("test_hdel"), []byte("f"), []byte("v"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hdelCommand(db, "test_hdel", "f")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(int64) != 1 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
r, err := db.HGet([]byte("test_hdel"), []byte("f"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if r != nil {
|
|
|
|
t.Fatalf("invalid result %v", r)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHLenCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hlenCommand(db, "test_hlen", "a")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hlen") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = db.HSet([]byte("test_hlen"), []byte("f1"), []byte("v1"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
_, err = db.HSet([]byte("test_hlen"), []byte("f2"), []byte("v2"))
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hlenCommand(db, "test_hlen")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(int64) != 2 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHIncrbyCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hincrbyCommand(db, "test_hincrby")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hincrby") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
_, err = db.HSet([]byte("test_hincrby"), []byte("f"), []byte("10"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = hincrbyCommand(db, "test_hincrby", "f", "x")
|
|
|
|
if err != ErrValue {
|
|
|
|
t.Fatal("invalid err ", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hincrbyCommand(db, "test_hincrby", "f", "10")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(int64) != 20 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHMsetCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hmsetCommand(db, "test_hmset")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hmset") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = hmsetCommand(db, "test_hmset", "f1", "v1", "f2", "v2")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := db.HGet([]byte("test_hmset"), []byte("f1"))
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if string(v) != "v1" {
|
|
|
|
t.Fatalf("invalid result %s", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err = db.HGet([]byte("test_hmset"), []byte("f2"))
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if string(v) != "v2" {
|
|
|
|
t.Fatalf("invalid result %s", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHMgetCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hmgetCommand(db, "test_hmget")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hmget") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = db.HSet([]byte("test_hmget"), []byte("f1"), []byte("v1"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = db.HSet([]byte("test_hmget"), []byte("f2"), []byte("v2"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hmgetCommand(db, "test_hmget", "f1", "f2")
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
arr := v.([]interface{})
|
|
|
|
if len(arr) != 2 {
|
|
|
|
t.Fatalf("invalid arr %v", arr)
|
|
|
|
}
|
|
|
|
if arr[0].(string) != "v1" {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
if arr[1].(string) != "v2" {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHGetallCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hgetallCommand(db, "test_hgetall", "a")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hgetall") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = db.HSet([]byte("test_hgetall"), []byte("f"), []byte("v"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
v, err := hgetallCommand(db, "test_hgetall")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
m := v.(map[string]string)
|
|
|
|
if m["f"] != "v" {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHKeysCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hkeysCommand(db, "test_hkeys", "a")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hkeys") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
_, err = db.HSet([]byte("test_hkeys"), []byte("f"), []byte("v"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
v, err := hkeysCommand(db, "test_hkeys")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
arr := v.([]string)
|
|
|
|
if arr[0] != "f" {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHClearCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hclearCommand(db, "test_hclear", "a")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hclear") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
_, err = db.HSet([]byte("test_hclear"), []byte("f"), []byte("v"))
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hclearCommand(db, "test_hclear")
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
|
|
|
|
if v.(int64) != 1 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHMclearCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hmclearCommand(db)
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hmclear") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hmclearCommand(db, "test_hmclear1", "test_hmclear2")
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(int64) != 2 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHExpireCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hexpireCommand(db, "test_hexpire")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hexpire") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
v, err := hexpireCommand(db, "test_hexpire", "10")
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(int64) != 0 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHExpireAtCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hexpireAtCommand(db, "test_hexpireat")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hexpireat") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
expireAt := fmt.Sprintf("%d", time.Now().Unix()+10)
|
|
|
|
v, err := hexpireCommand(db, "test_hexpireat", expireAt)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(int64) != 0 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHTTLCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := httlCommand(db, "test_httl", "a")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "httl") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := httlCommand(db, "test_httl")
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(int64) != -1 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestHPersistCommand(t *testing.T) {
|
|
|
|
db := getTestDB()
|
|
|
|
_, err := hpersistCommand(db, "test_hpersist", "a")
|
|
|
|
if err == nil || err.Error() != fmt.Sprintf(ERR_ARGUMENT_FORMAT, "hpersist") {
|
|
|
|
t.Fatalf("invalid err %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
v, err := hpersistCommand(db, "test_hpersist")
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err.Error())
|
|
|
|
}
|
|
|
|
if v.(int64) != 0 {
|
|
|
|
t.Fatal("invalid result ", v)
|
|
|
|
}
|
|
|
|
}
|