Apply .gitignore rules
This commit is contained in:
@@ -0,0 +1,592 @@
|
||||
package redisUtil
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
redisPoolObj_expire *RedisPool
|
||||
)
|
||||
|
||||
func init() {
|
||||
redisPoolObj_expire = NewRedisPool("testPool", "10.1.0.21:6379", "redis_pwd", 5, 500, 200, 10*time.Second, 5*time.Second)
|
||||
}
|
||||
|
||||
func TestExpire(t *testing.T) {
|
||||
deleteKeys := make([]string, 0, 8)
|
||||
defer func() {
|
||||
// Delete the test keys
|
||||
distinctKeyList := getDistinctKeyList(deleteKeys)
|
||||
count, err := redisPoolObj_string.Del(distinctKeyList...)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if count != len(distinctKeyList) {
|
||||
t.Errorf("Expected to get %d, but now got %d", len(distinctKeyList), count)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
/*
|
||||
redis> SET cache_page "www.google.com"
|
||||
OK
|
||||
|
||||
redis> TTL cache_page
|
||||
(integer) -1
|
||||
|
||||
redis> EXPIRE cache_page 30 # 设置过期时间为 30 秒
|
||||
(integer) 1
|
||||
|
||||
redis> TTL cache_page # 查看剩余生存时间
|
||||
(integer) 23
|
||||
|
||||
redis> EXPIRE cache_page 30000 # 更新过期时间
|
||||
(integer) 1
|
||||
|
||||
redis> TTL cache_page
|
||||
(integer) 29996
|
||||
*/
|
||||
key := "cache_page"
|
||||
value := "www.google.com"
|
||||
expected := true
|
||||
got, err := redisPoolObj_expire.Set(key, value, "", 0, "")
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
deleteKeys = append(deleteKeys, key)
|
||||
|
||||
expected = true
|
||||
_, _, got, err = redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
seconds := int64(30)
|
||||
got, err = redisPoolObj_expire.Expire(key, seconds)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
expected2 := seconds - 5
|
||||
got2, exist, _, err := redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if !exist {
|
||||
t.Errorf("The key:%s should exist, but now it doesn't.", key)
|
||||
return
|
||||
}
|
||||
if got2 <= expected2 {
|
||||
t.Errorf("Expected to get a number bigger than %d, but now get %d.", expected2, got2)
|
||||
return
|
||||
}
|
||||
|
||||
seconds = int64(3000)
|
||||
got, err = redisPoolObj_expire.Expire(key, seconds)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
expected2 = seconds - 5
|
||||
got2, exist, _, err = redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if !exist {
|
||||
t.Errorf("The key:%s should exist, but now it doesn't.", key)
|
||||
return
|
||||
}
|
||||
if got2 <= expected2 {
|
||||
t.Errorf("Expected to get a number bigger than %d, but now get %d.", expected2, got2)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestExpireAt(t *testing.T) {
|
||||
deleteKeys := make([]string, 0, 8)
|
||||
defer func() {
|
||||
// Delete the test keys
|
||||
distinctKeyList := getDistinctKeyList(deleteKeys)
|
||||
count, err := redisPoolObj_string.Del(distinctKeyList...)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if count != len(distinctKeyList) {
|
||||
t.Errorf("Expected to get %d, but now got %d", len(distinctKeyList), count)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
/*
|
||||
redis> SET cache www.google.com
|
||||
OK
|
||||
|
||||
redis> EXPIREAT cache '1609403601' # 这个 key 将在 Now()+1day 过期
|
||||
(integer) 1
|
||||
|
||||
redis> TTL cache
|
||||
(integer) 45081860
|
||||
*/
|
||||
key := "cache_page"
|
||||
value := "www.google.com"
|
||||
expected := true
|
||||
got, err := redisPoolObj_expire.Set(key, value, "", 0, "")
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
deleteKeys = append(deleteKeys, key)
|
||||
|
||||
timestamp := time.Now().AddDate(0, 0, 1).Unix()
|
||||
expected = true
|
||||
got, err = redisPoolObj_expire.ExpireAt(key, timestamp)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
expected2 := int64(86400 - 5)
|
||||
got2, exist, _, err := redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if !exist {
|
||||
t.Errorf("The key:%s should exist, but now it doesn't.", key)
|
||||
return
|
||||
}
|
||||
if got2 <= expected2 {
|
||||
t.Errorf("Expected to get a number bigger than %d, but now get %d.", expected2, got2)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestTTL(t *testing.T) {
|
||||
deleteKeys := make([]string, 0, 8)
|
||||
defer func() {
|
||||
// Delete the test keys
|
||||
distinctKeyList := getDistinctKeyList(deleteKeys)
|
||||
count, err := redisPoolObj_string.Del(distinctKeyList...)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if count != len(distinctKeyList) {
|
||||
t.Errorf("Expected to get %d, but now got %d", len(distinctKeyList), count)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
/*
|
||||
# 不存在的 key
|
||||
|
||||
redis> TTL key
|
||||
(integer) -2
|
||||
*/
|
||||
key := "key"
|
||||
expected := false
|
||||
_, got, _, err := redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
# key 存在,但没有设置剩余生存时间
|
||||
|
||||
redis> SET key value
|
||||
OK
|
||||
|
||||
redis> TTL key
|
||||
(integer) -1
|
||||
*/
|
||||
value := "value"
|
||||
redisPoolObj_expire.Set(key, value, "", 0, "")
|
||||
deleteKeys = append(deleteKeys, key)
|
||||
|
||||
expected2 := int64(-1)
|
||||
got2, exist, _, err := redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if !exist {
|
||||
t.Errorf("The key:%s should exist, but now it doesn't.", key)
|
||||
return
|
||||
}
|
||||
if got2 != expected2 {
|
||||
t.Errorf("Expected to get %d, but got %d", expected2, got2)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
# 有剩余生存时间的 key
|
||||
|
||||
redis> EXPIRE key 10086
|
||||
(integer) 1
|
||||
|
||||
redis> TTL key
|
||||
(integer) 10084
|
||||
*/
|
||||
seconds := int64(10086)
|
||||
expected = true
|
||||
got, err = redisPoolObj_expire.Expire(key, seconds)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
expected2 = seconds - 5
|
||||
got2, exist, _, err = redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if !exist {
|
||||
t.Errorf("The key:%s should exist, but now it doesn't.", key)
|
||||
return
|
||||
}
|
||||
if got2 <= expected2 {
|
||||
t.Errorf("Expected to get a number bigger than %d, but now get %d.", expected2, got2)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestPersist(t *testing.T) {
|
||||
deleteKeys := make([]string, 0, 8)
|
||||
defer func() {
|
||||
// Delete the test keys
|
||||
distinctKeyList := getDistinctKeyList(deleteKeys)
|
||||
count, err := redisPoolObj_string.Del(distinctKeyList...)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if count != len(distinctKeyList) {
|
||||
t.Errorf("Expected to get %d, but now got %d", len(distinctKeyList), count)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
/*
|
||||
redis> SET mykey "Hello"
|
||||
OK
|
||||
*/
|
||||
key := "mykey"
|
||||
value := "Hello"
|
||||
redisPoolObj_expire.Set(key, value, "", 0, "")
|
||||
|
||||
/*
|
||||
redis> EXPIRE mykey 10 # 为 key 设置生存时间
|
||||
(integer) 1
|
||||
*/
|
||||
seconds := int64(10)
|
||||
expected := true
|
||||
got, err := redisPoolObj_expire.Expire(key, seconds)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
deleteKeys = append(deleteKeys, key)
|
||||
|
||||
/*
|
||||
redis> TTL mykey
|
||||
(integer) 10
|
||||
*/
|
||||
expected2 := seconds - 5
|
||||
got2, _, _, err := redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got2 <= expected2 {
|
||||
t.Errorf("Expected to get %d, but got %d", expected2, got2)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
redis> PERSIST mykey # 移除 key 的生存时间
|
||||
(integer) 1
|
||||
*/
|
||||
redisPoolObj_expire.Persist(key)
|
||||
|
||||
/*
|
||||
redis> TTL mykey
|
||||
(integer) -1
|
||||
*/
|
||||
expected = true
|
||||
_, _, got, err = redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestPExpire(t *testing.T) {
|
||||
deleteKeys := make([]string, 0, 8)
|
||||
defer func() {
|
||||
// Delete the test keys
|
||||
distinctKeyList := getDistinctKeyList(deleteKeys)
|
||||
count, err := redisPoolObj_string.Del(distinctKeyList...)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if count != len(distinctKeyList) {
|
||||
t.Errorf("Expected to get %d, but now got %d", len(distinctKeyList), count)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
/*
|
||||
redis> SET mykey "Hello"
|
||||
OK
|
||||
*/
|
||||
key := "mykey"
|
||||
value := "Hello"
|
||||
expected := true
|
||||
got, err := redisPoolObj_expire.Set(key, value, "", 0, "")
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
deleteKeys = append(deleteKeys, key)
|
||||
|
||||
/*
|
||||
redis> PEXPIRE mykey 1500
|
||||
(integer) 1
|
||||
*/
|
||||
milliseconds := int64(1500)
|
||||
expected = true
|
||||
got, err = redisPoolObj_expire.PExpire(key, milliseconds)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
redis> TTL mykey # TTL 的返回值以秒为单位
|
||||
(integer) 2
|
||||
|
||||
redis> PTTL mykey # PTTL 可以给出准确的毫秒数
|
||||
(integer) 1499
|
||||
*/
|
||||
expected2 := int64(1)
|
||||
got2, _, _, err := redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got2 < expected2 {
|
||||
t.Errorf("TTL %d should be no less than %d", got2, expected2)
|
||||
return
|
||||
}
|
||||
|
||||
expected2 = int64(1000)
|
||||
got2, _, _, err = redisPoolObj_expire.PTTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got2 < expected2 {
|
||||
t.Errorf("TTL %d should be no less than %d", got2, expected2)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestPExpireAt(t *testing.T) {
|
||||
deleteKeys := make([]string, 0, 8)
|
||||
defer func() {
|
||||
// Delete the test keys
|
||||
distinctKeyList := getDistinctKeyList(deleteKeys)
|
||||
count, err := redisPoolObj_string.Del(distinctKeyList...)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if count != len(distinctKeyList) {
|
||||
t.Errorf("Expected to get %d, but now got %d", len(distinctKeyList), count)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
/*
|
||||
redis> SET mykey "Hello"
|
||||
OK
|
||||
*/
|
||||
key := "mykey"
|
||||
value := "Hello"
|
||||
expected := true
|
||||
got, err := redisPoolObj_expire.Set(key, value, "", 0, "")
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
deleteKeys = append(deleteKeys, key)
|
||||
|
||||
/*
|
||||
redis> PEXPIREAT mykey 1609403601005
|
||||
(integer) 1
|
||||
*/
|
||||
milliseconds_timestamp := time.Now().AddDate(0, 0, 1).Unix() * 1000
|
||||
redisPoolObj_expire.PExpireAt(key, milliseconds_timestamp)
|
||||
|
||||
/*
|
||||
redis> TTL mykey # TTL 返回秒
|
||||
(integer) 223157079
|
||||
|
||||
redis> PTTL mykey # PTTL 返回毫秒
|
||||
(integer) 223157079318
|
||||
*/
|
||||
expected2 := int64(86400 - 5)
|
||||
got2, exist, _, err := redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if !exist {
|
||||
t.Errorf("The key:%s should exist, but now it doesn't.", key)
|
||||
return
|
||||
}
|
||||
if got2 <= expected2 {
|
||||
t.Errorf("Expected to get a number bigger than %d, but now get %d.", expected2, got2)
|
||||
return
|
||||
}
|
||||
|
||||
expected2 = int64(86400000 - 5)
|
||||
got2, exist, _, err = redisPoolObj_expire.PTTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if !exist {
|
||||
t.Errorf("The key:%s should exist, but now it doesn't.", key)
|
||||
return
|
||||
}
|
||||
if got2 <= expected2 {
|
||||
t.Errorf("Expected to get a number bigger than %d, but now get %d.", expected2, got2)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func TestPTTL(t *testing.T) {
|
||||
deleteKeys := make([]string, 0, 8)
|
||||
defer func() {
|
||||
// Delete the test keys
|
||||
distinctKeyList := getDistinctKeyList(deleteKeys)
|
||||
count, err := redisPoolObj_string.Del(distinctKeyList...)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if count != len(distinctKeyList) {
|
||||
t.Errorf("Expected to get %d, but now got %d", len(distinctKeyList), count)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
/*
|
||||
# 不存在的 key
|
||||
|
||||
redis> PTTL key
|
||||
(integer) -2
|
||||
*/
|
||||
key := "key"
|
||||
expected := false
|
||||
_, got, _, err := redisPoolObj_expire.PTTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
# key 存在,但没有设置剩余生存时间
|
||||
|
||||
redis> SET key value
|
||||
OK
|
||||
|
||||
redis> PTTL key
|
||||
(integer) -1
|
||||
*/
|
||||
value := "value"
|
||||
redisPoolObj_expire.Set(key, value, "", 0, "")
|
||||
deleteKeys = append(deleteKeys, key)
|
||||
|
||||
expected = true
|
||||
_, _, got, err = redisPoolObj_expire.TTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
/*
|
||||
# 有剩余生存时间的 key
|
||||
|
||||
redis> PEXPIRE key 10086
|
||||
(integer) 1
|
||||
|
||||
redis> PTTL key
|
||||
(integer) 6179
|
||||
*/
|
||||
milliseconds := int64(10086)
|
||||
expected = true
|
||||
got, err = redisPoolObj_expire.PExpire(key, milliseconds)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if got != expected {
|
||||
t.Errorf("Expected to get %t, but got %t", expected, got)
|
||||
return
|
||||
}
|
||||
|
||||
expected2 := milliseconds - 500
|
||||
got2, exist, _, err := redisPoolObj_expire.PTTL(key)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
if !exist {
|
||||
t.Errorf("The key:%s should exist, but now it doesn't.", key)
|
||||
return
|
||||
}
|
||||
if got2 <= expected2 {
|
||||
t.Errorf("Expected to get a number bigger than %d, but now get %d.", expected2, got2)
|
||||
return
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user